الأصل البعيد موجود بالفعل على "Git Push" إلى مستودع جديد
-
10-07-2019 - |
سؤال
لدي مشروعي على جيثب في مكان ما ، git@github.com:myname/oldrep.git
.
الآن أريد دفع جميع التعليمات البرمجية إلى مستودع جديد في مكان آخر ، git@github.com:newname/newrep.git
.
لقد استخدمت الأمر:
GIT REMOTE أضف Origin git@github.com: myName/oldrep.git
لكني أتلقى هذا:
قاتلة: الأصل البعيد موجود بالفعل.
المحلول
أنت تحصل على هذا الخطأ لأن "الأصل" غير متوفر. "Origin" هي اتفاقية ليست جزءًا من الأمر. "Origin" هو الاسم المحلي للمستودع البعيد.
على سبيل المثال ، يمكنك أيضًا الكتابة:
git remote add myorigin git@github.com:myname/oldrep.git
git remote add testtest git@github.com:myname/oldrep.git
انظر الدليل:
http://www.kernel.org/pub/software/scm/git/docs/git-remote.html
لإزالة مستودع عن بُعد الذي تدخله:
git remote rm origin
مرة أخرى "Origin" هو اسم المستودع البعيد إذا كنت تريد إزالة جهاز التحكم عن بُعد "Upstream":
git remote rm upstream
نصائح أخرى
يبدو أن الحلول السابقة تتجاهل الأصل ، وهي تقترح فقط استخدام اسم آخر. عندما تريد فقط الاستخدام git push origin
, ، تابع القراءة.
تظهر المشكلة بسبب اتباع ترتيب خاطئ لتكوين GIT. ربما تكون قد أضفت بالفعل "أصل git" إلى تكوين .git الخاص بك.
يمكنك تغيير الأصل البعيد في تكوين GIT الخاص بك مع السطر التالي:
git remote set-url origin git@github.com:username/projectname.git
يحدد هذا الأمر عنوان URL جديدًا لمستودع GIT الذي تريد الضغط عليه. المهم هو ملء خاصتك اسم االمستخدم و اسم المشروع
إذا قمت بتسمية الاسم المحلي عن طريق الخطأ باسم "الأصل" ، فيمكنك إزالته بما يلي:
git remote rm origin
method1->
منذ الأصل موجود بالفعل إزالته.
git remote rm origin
git remote add origin https://github.com/USERNAME/REPOSITORY.git
method2->
يمكن للمرء أيضًا تغيير عنوان URL للمستودع البعيد الحالي بواسطة -> git set -url
إذا كنت تقوم بالتحديث لاستخدام HTTPS
git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
إذا كنت تقوم بالتحديث لاستخدام SSH
git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
إذا حاولت تحديث جهاز تحكم عن بعد غير موجود ، فستتلقى خطأ. لذا كن حذرا من ذلك.
الطريقة 3->
استخدم أمر إعادة تسمية GIT عن بُعد لإعادة تسمية جهاز تحكم عن بعد الحالي. الاسم البعيد الحالي ، على سبيل المثال ، الأصل.
git remote rename origin startpoint
# Change remote name from 'origin' to 'startpoint'
للتحقق من اسم جهاز التحكم عن بُعد الجديد->
git remote -v
إذا كان جديدًا على GIT ، جرب هذا البرنامج التعليمي->
يمكنك ببساطة تحرير ملف التكوين الخاص بك في محرر نصوص.
في ال ~/.gitconfig
تحتاج إلى وضع شيء ما مثل ما يلي:
[user]
name = Uzumaki Naruto
email = myname@example.com
[github]
user = myname
token = ff44ff8da195fee471eed6543b53f1ff
في ال oldrep/.git/config
ملف (في ملف التكوين الخاص بمستودعك):
[remote "github"]
url = git@github.com:myname/oldrep.git
push = +refs/heads/*:refs/heads/*
push = +refs/tags/*:refs/tags/*
إذا كان هناك قسم عن بُعد في ملف تكوين المستودع الخاص بك ، ويتطابق عنوان URL ، فأنت بحاجة فقط لإضافة تكوين الدفع. إذا كنت تستخدم عنوان URL العام لجلبه ، فيمكنك وضع عنوان URL للدفع كـ "pushurl" (تحذير: يتطلب هذا الإصدار GIT الذي تم إصداره للتو 1.6.4).
ليس عليك إزالة جهاز التحكم عن بُعد "أصل" الخاص بك ، فقط استخدم اسمًا آخر غير "Origin" لإضافة عن بُعد ، على سبيل المثال
GIT ADD REMOTE ADD جيثب git@github.com: myname/oldrep.git
حصلت على نفس المشكلة ، وإليك كيف أصلحتها بعد إجراء بعض الأبحاث:
- تحميل github لنظام التشغيل Windows أو استخدم شيئًا مشابهًا ، والذي يتضمن قذيفة
- افتح ال
Git Shell
من قائمة المهام. هذا سوف يفتح قذيفة السلطة بما في ذلك أوامر GIT. - في القشرة ، قم بالتبديل إلى مستودعك القديم ، على سبيل المثال
cd C:\path\to\old\repository
عرض حالة المستودع القديم
يكتب
git remote -v
للحصول على المسار البعيد لجلب ودفع عن بعد. إذا كان مستودعك المحلي متصلًا بجهاز تحكم عن بُعد ، فسوف يظهر شيئًا كهذا:الأصل https: //user@bitbucket.org/team-or-user-name/myproject.git (جلب) الأصل https: //user@bitbucket.org/team-or-user-name/myproject.git (يدفع)
إذا لم يكن متصلاً ، فقد تظهر
origin
فقط.
قم الآن بإزالة المستودع البعيد من المستودع المحلي باستخدام
git remote rm origin
تحقق مرة أخرى مع الخطوة 4. يجب أن تظهر
origin
فقط ، بدلا من الجلب ومسار الدفع.الآن بعد فصل المستودع البعيد القديم الخاص بك ، يمكنك إضافة المستودع البعيد الجديد. استخدم ما يلي للاتصال بمستودعك الجديد.
ملاحظة: في حال كنت تستخدم Bitbucket ، ستنشئ مشروعًا على Bitbucket أولاً. بعد الإنشاء ، ستعرض Bitbucket جميع أوامر GIT المطلوبة لدفع المستودع الخاص بك إلى جهاز التحكم عن بُعد ، والذي يشبه مقتطف الكود التالي. ومع ذلك ، هذا يعمل لمستودعات أخرى ، أيضا.
cd /path/to/my/repo # If haven't done yet
git remote add mynewrepo https://user@bitbucket.org/team-or-user-name/myproject.git
git push -u mynewrepo master # To push changes for the first time
هذا هو.
git remote rm origin
git remote add origin git@github.com:username/myapp.git
واجهت نفس المشكلة عندما قمت بإعداد استخدامها لأول مرة Bitbucket.
كانت مشكلتي أنني بحاجة إلى تغيير كلمة الأصل لشيء محدد ذاتيًا. لقد استخدمت اسم التطبيق. لذا:
git remote add AppName https://someone@bitbucket.org/somewhere/something.git
يجب عليك تغيير اسم المستودع البعيد إلى شيء آخر.
git remote add origin git@github.com:myname/oldrep.git
إلى
git remote add neworigin git@github.com:myname/oldrep.git
وأعتقد أن هذا يجب أن تعمل.
نعم ، هذه مخصصة للمستودعات init وإضافة جهاز تحكم عن بعد جديد. فقط مع تغيير الاسم.
يمكنك أيضًا تغيير اسم المستودع الذي ترغب في الضغط عليه في ملف repohome/.git/config
(حيث يكون repohome هو الطريق إلى استنساخك المحلي للمستودع).
git remote rm origin
git remote -v
لن يعرض أي اسم مستودعgit remote add origin git@github.com:username/myapp.git
git push origin master
ستبدأ العملية وإنشاء الفرع الجديد. يمكنك رؤية عملك يتم دفعه إلى جيثب.
يمكن أن يحدث هذا أيضًا عندما تنسى التزامًا أولاً.
افتح إلى Android Studio> vcs> git> تحذف جميع العناوين التي ستظهر في هذا القسم. سوف تحل المشكلة.