دفع شخص ما فرعًا يسمى test
مع git Push Origin test
إلى مستودع مشترك. أستطيع أن أرى الفرع مع git branch -r
.
الآن أحاول التحقق من فرع test
البعيد.
لقد حاولت:
git checkout test
الذي لا يفعل شيئًا
git checkout Origin/test
يعطي * (no branch)
. وهو مربك. كيف يمكنني أن أكون في "لا فرع"؟
كيف يمكنني التحقق من فرع بوابة بعيد؟
الجواب Jakub في الواقع يحسن في هذا الشأن. مع إصدارات Git ≥ 1.6.6 ، مع جهاز تحكم واحد فقط ، يمكنك فقط القيام بما يلي:
git fetch
git checkout test
كما يشير مستخدم masukomi في أحد التعليقات ، لن يعمل git checkout test
في بوابة حديثة إذا كان لديك أجهزة تحكم عن بُعد متعددة. في هذه الحالة استخدام
git checkout -b test <name of remote>/test
أو الاختزال
git checkout -t <name of remote>/test
قبل أن تتمكن من البدء في العمل محليًا على فرع بعيد ، تحتاج إلى جلبه كما هو موضح في الإجابات أدناه.
لجلب فرع ، تحتاج ببساطة إلى:
git fetch Origin
هذا سيجلب جميع الفروع البعيدة لك. تستطيع أن ترى الفروع المتاحة للخروج مع:
git branch -v -a
مع وجود فروع بعيدة في متناول اليد ، تحتاج الآن إلى التحقق من الفرع الذي تهتم به ، مما يتيح لك نسخة عمل محلية:
git checkout -b test Origin/test
Sidenote:باستخدام Git الحديث (> = 1.6.6 ) ، يمكنك استخدام فقط
git checkout test
(لاحظ أنه "اختبار" وليس "أصل/اختبار") لإجراء السحرية DWIM - mery وإنشاء فرع محلي "اختبار" من أجلك ، والذي سيكون المنبع هو فرع التتبع عن بُعد "Origin/test ".
تعني * (no branch)
في git branch
الإخراج أنك في فرع غير مسمى ، في ما يسمى بحالة "HEAD منفصلة" (يشير HEAD مباشرةً إلى الالتزام ، وليس مرجعًا رمزيًا إلى بعض الفروع المحلية). إذا قمت ببعض التعهدات على هذا الفرع غير المعروف ، فيمكنك دائمًا إنشاء فرع محلي خارج الالتزام الحالي:
git checkout -b test HEAD
في هذه الحالة ، ربما تريد إنشاء فرع test
محلي يتتبع فرع test
البعيد:
$ git branch test Origin/test
في الإصدارات السابقة من git
، كنت بحاجة إلى خيار --track
واضح ، ولكن هذا هو الافتراضي الآن عندما تتفرع عن فرع بعيد.
في حين أن الإجابة الأولى والمختارة هي تقنيًا تصحيح ، هناك احتمال أنك لم تسترجع بعد كل الكائنات والمرجعيات من المستودع البعيد. إذا كان الأمر كذلك ، فستتلقى الخطأ التالي:
$ git checkout -b remote_branch Origin/remote_branch
fatal: git checkout: تحديث المسارات غير متوافق مع تبديل الفروع.
هل كنت تنوي الخروج "Origin/remote_branch" والتي لا يمكن حلها كالتزام؟
إذا تلقيت هذه الرسالة ، فيجب أولاً تنفيذ git fetch Origin
حيث Origin
هو اسم المستودع البعيد عن بعد قبل تشغيل git checkout remote_branch
. فيما يلي مثال كامل مع الردود:
$ git fetch Origin
remote: Counting objects: 140, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 69 (delta 36), reused 66 (delta 33)
Unpacking objects: 100% (69/69), done.
From https://github.com/githubuser/repo-name
e6ef1e0..5029161 develop -> Origin/develop
* [new branch] demo -> Origin/demo
d80f8d7..359eab0 master -> Origin/master
$ git checkout demo
Branch demo set up to track remote branch demo from Origin.
Switched to a new branch 'demo'
كما ترون ، فإن تشغيل git fetch Origin
استرد أي فروع بعيدة لم نعد بعد لتتبعها على جهازنا المحلي. من هناك ، نظرًا لأن لدينا الآن مرجع للفرع البعيد ، يمكننا ببساطة تشغيل git checkout remote_branch
وسنكتسب فوائد التتبع عن بُعد.
جربت الحل أعلاه ، لكنه لم ينجح. جرب هذا ، إنه يعمل:
git fetch Origin 'remote_branch':'local_branch_name'
سيؤدي هذا إلى جلب الفرع البعيد وإنشاء فرع محلي جديد (إن لم يكن موجودًا بالفعل) باسم local_branch_name
وتتبع الفرع البعيد فيه.
استعمال:
git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>
لا تعمل الإجابات الأخرى مع Git الحديثة في حالتي الحميدة. قد تحتاج إلى السحب أولاً إذا كان الفرع البعيد جديدًا ، لكنني لم أتحقق من هذه الحالة.
OK، الجواب سهل ... تشاهد الفرع بشكل أساسي ، لكن ليس لديك نسخة محلية حتى الآن! ...
تحتاج إلى fetch
الفرع ...
يمكنك ببساطة إحضار الفرع ثم الخروج منه ، استخدم أمر سطر واحد أدناه للقيام بذلك:
git fetch && git checkout test
لقد أنشأت أيضًا الصورة أدناه لتتمكن من مشاركة الاختلافات ، والنظر في كيفية عمل fetch
وأيضًا كيف تختلف pull
:
لاستنساخ مستودع Git ، قم بما يلي:
git clone <either ssh url /http url>
يفحص الأمر أعلاه جميع الفروع ، ولكن سيتم تهيئة الفرع master
فقط. إذا كنت ترغب في الخروج من الفروع الأخرى ، فقم بما يلي:
git checkout -t Origin/future_branch (for example)
يقوم هذا الأمر بفحص الفرع البعيد ، وسيكون اسم الفرع المحلي هو نفسه الفرع البعيد.
إذا كنت تريد تجاوز اسم الفرع المحلي الخاص بك عند الخروج:
git checkout -t -b enhancement Origin/future_branch
الآن اسم الفرع المحلي الخاص بك هو enhancement
، لكن اسم الفرع البعيد الخاص بك هو future_branch
.
يمكنك المحاولة
git fetch remote
git checkout --track -b local_branch_name Origin/branch_name
أو
git fetch
git checkout -b local_branch_name Origin/branch_name
أولاً ، عليك القيام بما يلي:
git fetch
# إذا كنت لا تعرف اسم الفرع
git fetch Origin branch_name
ثانيًا ، يمكنك التحقق من الفرع البعيد إلى منطقتك المحلية عن طريق:
git checkout -b branch_name Origin/branch_name
-b
سينشئ فرعًا جديدًا بالاسم المحدد من الفرع البعيد الذي اخترته.
الأوامر
git fetch --all
git checkout -b <ur_new_local_branch_name> Origin/<Remote_Branch_Name>
تساوي
git fetch --all
وثم
git checkout -b fixes_for_dev Origin/development
سيقوم كلاهما بإنشاء latest fixes_for_dev
من development
أستخدم الأمر التالي:
git checkout --track Origin/other_remote_branch
إذا كان الفرع موجودًا في شيء آخر غير جهاز التحكم عن بعد Origin
، فأود القيام بما يلي:
$ git fetch
$ git checkout -b second/next upstream/next
سيؤدي ذلك إلى الخروج من الفرع next
الموجود على upstream
عن بعد في فرع محلي يسمى second/next
. مما يعني أنه إذا كان لديك بالفعل فرع محلي اسمه التالي ، فلن يتعارض.
$ git branch -a
* second/next
remotes/Origin/next
remotes/upstream/next
يقول git branch -r
أن اسم الكائن غير صالح ، لأن اسم الفرع هذا ليس في قائمة الفرع المحلي لـ Git. قم بتحديث قائمة فروعك المحلية من Origin باستخدام:
git remote update
ثم حاول التحقق من الفرع البعيد مرة أخرى.
هذا عملت لي.
أعتقد أن git fetch
تسحب جميع الفروع البعيدة ، وهذا ليس ما يريده الملصق الأصلي.
لا شيء من هذه الإجابات عملت بالنسبة لي. هذا يعمل:
git checkout -b feature/branch remotes/Origin/feature/branch
git fetch && git checkout your-branch-name
ببساطة قم بتشغيل git checkout
مع اسم الفرع البعيد. Git will ينشئ تلقائيًا فرعًا محليًا يتتبع الفرع البعيد:
git fetch
git checkout test
ومع ذلك ، إذا تم العثور على اسم الفرع هذا في أكثر من جهاز تحكم عن بعد واحد ، فلن يعمل هذا نظرًا لأن Git لا يعرف أيًا من الاستخدامات. في هذه الحالة ، يمكنك استخدام إما:
git checkout --track Origin/test
أو
git checkout -b test Origin/test
في 2.19 ، تعلم Git checkout.defaultRemote
التكوين ، الذي يحدد جهاز التحكم عن بعد الافتراضي عند حل هذا الغموض.
لقد علقت في موقف أرى error: pathspec 'desired-branch' did not match any file(s) known to git.
لجميع الاقتراحات المذكورة أعلاه. أنا في بوابة الإصدار 1.8.3.1.
هذا عملت لي :
git fetch Origin desired-branch
git checkout -b desired-branch FETCH_HEAD
التفسير وراء ذلك هو أنني لاحظت أنه عند جلب الفرع البعيد ، تم جلبه إلى FETCH_HEAD:
$ git fetch Origin desired-branch
From github.com:MYTEAM/my-repo
* branch desired-branch -> FETCH_HEAD
يسرد الأمر git remote show <Origin name>
جميع الفروع (بما في ذلك الفروع غير المتعقبة). ثم يمكنك العثور على اسم الفرع البعيد الذي تحتاج إلى جلبه.
مثال:
$ git remote show Origin
استخدم هذه الخطوات لجلب الفروع البعيدة:
git fetch <Origin name> <remote branch name>:<local branch name>
git checkout <local branch name > (local branch name should the name that you given fetching)
مثال:
$ git fetch Origin test:test
$ git checkout test
يقدم الآخرون والبنات الحلول ، لكن ربما أستطيع أن أخبركم لماذا.
بوابة الخروج الاختبار الذي لا يفعل شيئا
Does nothing
لا يساوي doesn't work
، لذلك أعتقد أنه عند كتابة "git checkout check" في الجهاز الطرفي واضغط على مفتاح الإدخال ، لا تظهر أي رسالة ولا يحدث أي خطأ. هل انا على حق؟
إذا كان الجواب "نعم" ، يمكنني إخبارك بالسبب.
السبب هو وجود ملف (أو مجلد) يسمى "اختبار" في شجرة العمل الخاصة بك.
عندما يتم تحليل git checkout xxx
،
xxx
كاسم فرع في البداية ، ولكن لا يوجد أي اختبار باسم الفرع.xxx
هو مسار ، ولحسن الحظ (أو لسوء الحظ) ، هناك ملف اسمه اختبار. يعني git checkout xxx
تجاهل أي تعديل في ملف xxx
.xxx
، فسيحاول Git إنشاء xxx
وفقًا لبعض القواعد. أحد القواعد هو إنشاء فرع باسم xxx
في حالة وجود remotes/Origin/xxx
.للحصول على فروع تم إنشاؤها حديثًا
git fetch
للتبديل إلى فرع آخر
git checkout BranchName
يمكنك البدء في تتبع جميع الفروع البعيدة باستخدام البرنامج النصي Bash التالي:
#!/bin/bash
git fetch --all
for branch in `git branch -r --format="%(refname:short)" | sed 's/Origin\///'`
do git branch -f --track "$branch" "Origin/$branch"
done
هنا أيضًا إصدار سطر واحد:
git fetch --all; for branch in `git branch -r --format="%(refname:short)" | sed 's/Origin\///'`; do git branch --track "$branch" "Origin/$branch" ; done ;
جلب من جهاز التحكم عن بعد والخروج من الفرع.
git fetch <remote_name> && git checkout <branch_name>
على سبيل المثال:
git fetch Origin && git checkout feature/XYZ-1234-Add-alerts
إذا كان اسم الفرع البعيد يبدأ بأحرف خاصة ، فأنت بحاجة إلى استخدام علامات الاقتباس المفردة حوله في أمر السحب ، وإلا لن تعرف git الفرع الذي تتحدث عنه.
على سبيل المثال ، حاولت الخروج من فرع بعيد باسم #9773
لكن الأمر لم يعمل بشكل صحيح ، كما هو موضح في الصورة أدناه:
لسبب ما ، تساءلت عما إذا كان للرمز الحاد (#) علاقة بشيء ما ، ثم حاولت إحاطة اسم الفرع بعلامات اقتباس مفردة ، مثل '#9773'
rathen أكثر من #9773
فقط ، وكان يعمل بشكل جيد.
$ git checkout -b '#9773' Origin/'#9773'
يرجى اتباع الأمر لإنشاء مجلد فارغ. أدخل ذلك واستخدم هذا الأمر:
saifurs-Mini:YO-iOS saifurrahman$ git clone your_project_url
Cloning into 'iPhoneV1'...
remote: Counting objects: 34230, done.
remote: Compressing objects: 100% (24028/24028), done.
remote: Total 34230 (delta 22212), reused 15340 (delta 9324)
Receiving objects: 100% (34230/34230), 202.53 MiB | 294.00 KiB/s, done.
Resolving deltas: 100% (22212/22212), done.
Checking connectivity... done.
saifurs-Mini:YO-iOS saifurrahman$ cd iPhoneV1/
saifurs-Mini:iPhoneV1 saifurrahman$ git checkout 1_4_0_content_discovery
Branch 1_4_0_content_discovery set up to track remote branch 1_4_0_content_discovery from Origin.
Switched to a new branch '1_4_0_content_discovery'