سؤال

لدي master و development فرع سواء دفعت إلى جيثب.لقد cloneد ، pullإد ، fetchاد, ولكن أنا لا تزال غير قادرة على الحصول على أي شيء آخر غير master فرع الظهر.

أنا متأكد أنا في عداد المفقودين شيء واضح, لكن يجب قراءة دليل و أنا على الحصول على أي فرح في كل شيء.

هل كانت مفيدة؟

المحلول

أولا استنساخ بعيد بوابة مستودع ، cd في ذلك:

$ git clone git://example.com/myproject
$ cd myproject

ابحث في الفروع المحلية في المستودع الخاص بك:

$ git branch
* master

ولكن هناك فروع أخرى يختبئ في المستودع الخاص بك!يمكنك أن ترى هذه باستخدام -a العلم:

$ git branch -a
* master
  remotes/origin/HEAD
  remotes/origin/master
  remotes/origin/v1.0-stable
  remotes/origin/experimental

إذا كنت فقط تريد أن تأخذ نظرة خاطفة سريعة على المنبع فرع, يمكنك التحقق من ذلك مباشرة:

$ git checkout origin/experimental

ولكن إذا كنت ترغب في العمل في هذا الفرع, سوف تحتاج إلى تتبع فرع والتي تتم تلقائيا عن طريق:

$ git checkout experimental

وسوف ترى

Branch experimental set up to track remote branch experimental from origin.
Switched to a new branch 'experimental'

هذا السطر الأخير يلقي بعض الناس:"فرع" - أليس كذلك ؟ ما يعنيه حقا هو أن فرع مأخوذ من مؤشر إنشاؤها محليا بالنسبة لك.على السابقة الخط هو في الواقع أكثر إفادة كما يخبرك أن فرع يجري إعدادها لتتبع عن بعد فرع ، وهو ما يعني عادة الأصل/branch_name فرع

الآن إذا نظرتم إلى الفروع المحلية ، وهذا هو ما سترى:

$ git branch
* experimental
  master

يمكنك تتبع الواقع أكثر من مستودع بعيد باستخدام git remote.

$ git remote add win32 git://example.com/users/joe/myproject-win32-port
$ git branch -a
* master
  remotes/origin/HEAD
  remotes/origin/master
  remotes/origin/v1.0-stable
  remotes/origin/experimental
  remotes/win32/master
  remotes/win32/new-widgets

عند هذه النقطة, لقد تأزمت الأمور, حتى تشغيل gitk لمعرفة ما يجري:

$ gitk --all &

نصائح أخرى

إذا كان لديك العديد من الفروع البعيدة التي تريد جلب في وقت واحد, هل:

$ git pull --all

الآن يمكنك الخروج في أي فرع كما تريد دون ضرب مستودع بعيد.

هذا باش السيناريو ساعدتني:

#!/bin/bash
for branch in $(git branch --all | grep '^\s*remotes' | egrep --invert-match '(:?HEAD|master)$'); do
    git branch --track "${branch##*/}" "$branch"
done

فإنه سيتم إنشاء تتبع الفروع جميع الفروع البعيدة ، ما عدا سيد (التي ربما حصلت من استنساخ الأصلي الأوامر).أعتقد أنك قد لا تزال بحاجة إلى القيام

git fetch --all
git pull --all

للتأكد.

واحدة بطانة: git branch -a | grep -v HEAD | perl -ne 'chomp($_); s|^\*?\s*||; if (m|(.+)/(.+)| && not $d{$2}) {print qq(git branch --track $2 $1/$2\n)} else {$d{$_}=1}' | csh -xfs كالعادة:اختبار في الإعداد الخاص بك قبل النسخ rm-rf الكون كما نعرفه

اعتمادات بطانة واحدة تذهب إلى المستخدم cfi

باستخدام --mirror يبدو الخيار لنسخ remote تتبع الفروع بشكل صحيح.ومع ذلك ، فإنه يضع مستودع كما العارية مستودع, لذلك عليك أن تتحول مرة أخرى إلى وضعها الطبيعي مستودع بعد ذلك.

git clone --mirror path/to/original path/to/dest/.git
cd path/to/dest
git config --bool core.bare false
git checkout anybranch

المرجع: بوابة التعليمات:كيف يمكنني استنساخ مستودع مع جميع عن بعد تتبع الفروع ؟

يمكنك التبديل بسهولة إلى فرع دون استخدام الهوى "بوابة الخروج -ب somebranch المنشأ/somebranch" بناء الجملة.يمكنك فقط القيام به:

git checkout somebranch

بوابة تلقائيا فعل الشيء الصحيح:

$ git checkout somebranch
Branch somebranch set up to track remote branch somebranch from origin.
Switched to a new branch 'somebranch'

بوابة سوف تحقق ما إذا كان فرع بنفس الاسم موجود في واحد بالضبط البعيد, وإذا كان كذلك, فإنه المسارات بنفس الطريقة كما لو كنت قد تحدد بشكل واضح أنه بعيد فرع.من بوابة الخروج رجل الصفحة من بوابة 1.8.2.1:

إذا <branch> لم يتم العثور ولكن هناك موجود تتبع فرع في بالضبط بعد واحد (نسميها <remote>) مع مطابقة اسم علاج كما أي ما يعادل

$ git checkout -b <branch> --track <remote>/<branch>

فيما يتعلق ،

$ بوابة الخروج -ب التجريبية المنشأ/تجريبية

باستخدام

$ git checkout -t origin/experimental

أو أكثر مطول ولكن من الأسهل أن نتذكر

$ git checkout --track origin/experimental

قد يكون أفضل ، حيث تتبع مستودع بعيد.

الجلب الذي تقومون به يجب أن تحصل على جميع الفروع البعيدة ، ولكن ذلك لن إنشاء فروع محلية لها.إذا كنت تستخدم gitk, يجب أن ترى البعيد فروع وصفها بأنها "أجهزة التحكم عن بعد/الأصل/dev" أو شيئا من هذا القبيل.

لإنشاء الفرع المحلي على أساس بعيد فرع تفعل شيئا مثل:

git checkout -b dev refs/remotes/origin/dev

والتي يجب أن تعود شيئا مثل:

Branch dev set up to track remote branch refs/remotes/origin/dev.
Switched to a new branch "dev"

الآن, عندما كنت على ديف فرع "بوابة سحب" سيتم تحديث المحلية dev إلى نفس النقطة بعد dev فرع.علما أنه سيتم جلب كافة الفروع ، ولكن فقط سحب واحد كنت في أعلى الشجرة.

عندما تفعل "git clone git://الموقع" جميع فروع العلامات المنال.

من أجل العمل على رأس محدد عن بعد فرع افتراض أنه هو الأصل البعيد:

git checkout -b branch origin/branchname

استخدام الأسماء المستعارة.ولو لم تكن هناك أي مواطن بوابة واحد المتشددين ، يمكنك تحديد الخاصة بك كما

git config --global alias.clone-branches '! git branch -a | sed -n "/\/HEAD /d; /\/master$/d; /remotes/p;" | xargs -L1 git checkout -t'

ومن ثم استخدامه

git clone-branches

لماذا نرى فقط "ماستر"

git clone تنزيل جميع البعيد البعيد الفروع ولكن لا يزال يعتبرها "عن بعد" ، على الرغم من الملفات الموجودة في المستودع.هناك استثناء واحد من هذه ، هو أن عملية الاستنساخ يخلق المحلية فرع يسمى "سيد" من جهاز التحكم عن بعد فرع يسمى "سيد".بشكل افتراضي ، git branch فقط يظهر الفروع المحلية ، وهذا هو السبب كنت فقط انظر "الماجستير".

git branch -a يظهر كل الفروع ، بما في ذلك الفروع عن بعد.


كيفية الحصول على الفروع المحلية

إذا كنت فعلا ترغب في العمل على فرع, ربما كنت سوف ترغب في "المحلية" نسخة منه.ببساطة إنشاء فروع من فروع بعيدة (دون التحقق منها وبالتالي تغيير محتويات دليل العمل), ، يمكنك أن تفعل ذلك من هذا القبيل:

git branch branchone origin/branchone
git branch branchtwo origin/branchtwo
git branch branchthree origin/branchthree

في هذا المثال ، branchone هو اسم الفرع المحلي كنت خلق على أساس origin/branchone;إذا كنت ترغب بدلا من ذلك إنشاء فروع محلية مع أسماء مختلفة ، يمكنك القيام بذلك:

git branch localbranchname origin/branchone

بمجرد إنشاء الفرع المحلي, يمكنك أن ترى ذلك مع git branch (تذكر أنك لا تحتاج -a لمعرفة الفروع المحلية).

هذا ليس كثيرا معقدة بسيطة جدا ومباشرة إلى الأمام خطوات كما يلي ؛

git fetch origin هذا سوف يجلب جميع الفروع البعيدة المحلية الخاصة بك.

git branch -a هذا وسوف تظهر لك جميع الفروع البعيدة.

git checkout --track origin/<branch you want to checkout>

التحقق من ما إذا كنت في الفرع المطلوب عن طريق الأمر التالي;

git branch

إخراج مثل هذا ؛

*your current branch 
some branch2
some branch3 

لاحظ * الإشارة التي تدل الفرع الحالي.

متأخرا أفضل من أبدا, ولكن هنا هو أفضل طريقة للقيام بذلك:

mkdir repo
cd repo
git clone --bare path/to/repo.git .git
git config --unset core.bare
git reset --hard

عند هذه النقطة لديك نسخة كاملة من بعيد الريبو مع كل من هو في فروع (مع التحقق من git branch).يمكنك استخدام --mirror بدلا من --bare إذا كان جهاز التحكم عن بعد الريبو لديها أجهزة التحكم عن بعد الخاصة بها.

فقط تفعل هذا:

$ git clone git://example.com/myproject
$ cd myproject
$ git checkout branchxyz
Branch branchxyz set up to track remote branch branchxyz from origin.
Switched to a new branch 'branchxyz'
$ git pull
Already up-to-date.
$ git branch
* branchxyz
  master
$ git branch -a
* branchxyz
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/branchxyz
  remotes/origin/branch123

ترى, 'git clone git://المثال.com/myprojectt' جلب كل شيء ، حتى في الفروع ، عليك فقط أن الخروج عليهم ، ثم الفرع المحلي الخاص بك سيتم إنشاؤه.

تحتاج فقط إلى استخدام "بوابة استنساخ" للحصول على جميع الفروع.

git clone <your_http_url>

حتى ولو كنت ترى سوى الماجستير فرع يمكنك استخدام "بوابة فرع مجموعة" لرؤية جميع الفروع.

git branch -a

و يمكنك التبديل إلى أي فرع من فروع التي لديك بالفعل.

git checkout <your_branch_name>

لا تقلق بعد "بوابة استنساخ" أنت لا تحتاج إلى الاتصال مع جهاز التحكم عن بعد الريبو ، "بوابة فرع" و "بوابة الخروج" يمكن تشغيلها بنجاح عند إغلاق واي فاي الخاص بك.إذا ثبت أن عند "بوابة استنساخ" ، فإنه بالفعل قد نسخ جميع فروع من بعيد الريبو.بعد ذلك, أنت لا تحتاج إلى جهاز التحكم عن بعد الريبو المحلي بالفعل جميع فروع' رموز.

A git clone ومن المفترض أن نسخ كامل المستودع.محاولة استنساخ ومن ثم تشغيل git branch -a.يجب أن قائمة جميع الفروع.ثم إذا كنت تريد أن تتحول إلى فرع "فو" بدلا من "سيد" ، استخدام git checkout foo.

استخدام أداة بلدي git_remote_branch (تحتاج روبي المثبتة على الجهاز الخاص بك).انها بنيت خصيصا لجعل البعيد فرع التلاعب ميتة سهلة.

في كل مرة يفعل العملية نيابة عنك ، فإنه يطبع باللون الأحمر في وحدة التحكم.مع مرور الوقت ، وأخيرا عصا في الدماغ :-)

إذا كنت لا تريد grb لتشغيل الأوامر نيابة عنك فقط استخدام 'شرح' الميزة.الأوامر سيتم طباعة إلى وحدة التحكم الخاصة بك بدلا من تنفيذها لك.

أخيرا, جميع الأوامر الأسماء المستعارة ، لجعل تحفيظ أسهل.

لاحظ أن هذا هو برنامج ألفا ;-)

وهنا المساعدة عند تشغيل grb مساعدة:

git_remote_branch version 0.2.6

  Usage:

  grb create branch_name [origin_server] 

  grb publish branch_name [origin_server] 

  grb rename branch_name [origin_server] 

  grb delete branch_name [origin_server] 

  grb track branch_name [origin_server] 



  Notes:
  - If origin_server is not specified, the name 'origin' is assumed 
    (git's default)
  - The rename functionality renames the current branch

  The explain meta-command: you can also prepend any command with the 
keyword 'explain'. Instead of executing the command, git_remote_branch 
will simply output the list of commands you need to run to accomplish 
that goal.

  Example: 
    grb explain create
    grb explain create my_branch github

  All commands also have aliases:
  create: create, new
  delete: delete, destroy, kill, remove, rm
  publish: publish, remotize
  rename: rename, rn, mv, move
  track: track, follow, grab, fetch

كل الإجابات رأيت هنا صحيحة ولكن هناك الكثير من نظافة الطريق إلى استنساخ مستودع وسحب جميع فروع في آن واحد.

عند استنساخ مستودع جميع المعلومات من الفروع هو في الواقع تحميلها ولكن الفروع الخفية.مع الأمر

$ git branch -a

يمكنك عرض جميع فروع مستودع مع الأمر

$ git checkout -b branchname origin/branchname

يمكنك ثم "تحميل" يدويا في وقت واحد.


ومع ذلك ، عندما تريد استنساخ الريبو مع الكثير من الفروع في جميع الطرق هو موضح أعلاه هي طويلة و شاقة فيما يتعلق بكثير وأنظف وأسرع طريقة أنا ذاهب لتظهر ، على الرغم من انها معقدة بعض الشيء.تحتاج إلى ثلاث خطوات لتحقيق ذلك:

  1. الخطوة الأولى

إنشاء مجلد فارغ جديد على الجهاز الخاص بك و استنساخ مرآة نسخة .بوابة مجلد من مستودع:

$ cd ~/Desktop && mkdir my_repo_folder && cd my_repo_folder
$ git clone --mirror https://github.com/planetoftheweb/responsivebootstrap.git .git

مستودع داخل مجلد my_repo_folder لا تزال فارغة ، هناك فقط خفية .بوابة المجلد الآن يمكنك أن ترى مع "ls-alt" القيادة من المحطة.

  1. الخطوة الثانية

التبديل هذا المستودع من فارغة (العارية) مستودع العادية مستودع طريق تحويل قيمة منطقية "العارية" من بوابة تكوينات كاذبة:

$ git config --bool core.bare false
  1. الخطوة الثالثة

الاستيلاء على كل شيء داخل المجلد الحالي وخلق كل فروع على الجهاز المحلي ، ولذلك جعل هذا طبيعي الريبو.

$ git reset --hard

حتى الآن يمكنك فقط اكتب الأمر "بوابة فرع" و يمكنك أن ترى أن جميع فروع يتم تحميلها.

هذه هي الطريقة السريعة التي يمكنك استنساخ git مع جميع الفروع في وقت واحد ، ولكن انها ليست شيئا كنت تريد أن تفعل كل مشروع في هذا السبيل.

النظر في واحدة من الإجابات على السؤال لاحظت أنه من الممكن أن تختصر:

for branch in  `git branch -r | grep -v 'HEAD\|master'`; do  
 git branch --track ${branch##*/} $branch;
done

ولكن حذار إذا كان أحد الفروع عن بعد هو اسمه مثلاadmin_master لن تحصل على تحميلها!

بفضل bigfish عن الفكرة الأصلية

الاستنساخ من الريبو لن تعمل مع بوابة استنساخ & git الجلب:الكثير من الفروع/العلامات ستبقى unfetched.

للحصول على نسخة مع جميع فروع والعلامات.

git clone --mirror git://example.com/myproject myproject-local-bare-repo.git

للحصول على نسخة مع جميع الفروع الكلمات ولكن أيضا مع نسخة العمل:

git clone --mirror git://example.com/myproject myproject/.git
cd myproject
git config --unset core.bare
git config receive.denyCurrentBranch updateInstead
git checkout master

حسنا ، عند استنساخ الريبو الخاص بك, لديك جميع فروع هناك.

إذا كنت فقط تفعل git branch, ، فهي نوع من مخبأة...

حتى إذا كنت ترغب في رؤية كل فروع الاسم فقط ببساطة إضافة --all العلم مثل هذا:

git branch --all أو git branch -a

إذا كنت مجرد الخروج إلى فرع ، يمكنك الحصول على كل ما تحتاجه.

ولكن ماذا عن إذا كان الفرع التي تم إنشاؤها من قبل شخص آخر بعد مستنسخ ؟

في هذه الحالة فقط لا:

git fetch

والتحقق من جميع فروع مرة أخرى...

إذا كنت ترغب في جلب والخروج في نفس الوقت, يمكنك القيام به:

git fetch && git checkout your_branch_name

أيضا خلق الصورة أدناه بالنسبة لك لتبسيط ما قلت:

git branch --all to get all branches

#!/bin/bash
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master `; do
   git branch --track ${branch#remotes/origin/} $branch
done

هذه المدونة سيتم سحب جميع الفروع البعيدة رمز المحلية الريبو.

لـ نسخ ولصق في سطر الأوامر:

git checkout master ; remote=origin ; for brname in `git branch -r | grep $remote | grep -v master | grep -v HEAD | awk '{gsub(/^[^\/]+\//,"",$1); print $1}'`; do git branch -D $brname ; git checkout -b $brname $remote/$brname ; done ; git checkout master

لمزيد من readibility:

git checkout master ;
remote=origin ;
for brname in `
    git branch -r | grep $remote | grep -v master | grep -v HEAD 
    | awk '{gsub(/^[^\/]+\//,"",$1); print $1}'
`; do
    git branch -D $brname ;
    git checkout -b $brname $remote/$brname ;
done ;
git checkout master


هذا سوف:

  1. تحقق من سيد (حتى نتمكن من حذف فرع ونحن على)
  2. حدد البعيد إلى الخروج (تغييره إلى ما بعد لديك)
  3. حلقة من خلال كل فروع من بعيد باستثناء السيد رئيس
    1. حذف الفرع المحلي (حتى نتمكن من التحقق من قوة-تحديث فروع)
    2. تحقق من فرع من بعيد
  4. تحقق من ماستر (من أجل ذلك)

على أساس الجواب من VonC.

أنا في حاجة إلى القيام بالضبط نفس الشيء.هنا هو بلدي روبي البرنامج النصي.

#!/usr/bin/env ruby

local = []
remote = {}

# Prepare
%x[git reset --hard HEAD]
%x[git checkout master] # Makes sure that * is on master.
%x[git branch -a].each_line do |line|
  line.strip!
  if /origin\//.match(line)
     remote[line.gsub(/origin\//, '')] = line
   else
     local << line
   end
end
# Update 
remote.each_pair do |loc, rem|
  next if local.include?(loc)
  %x[git checkout --track -b #{loc} #{rem}]
end
%x[git fetch]

كتبت هذه الصغيرة Powershell الوظائف أن تكون قادرة على الخروج كل بوابة الفروع التي هي في الأصل البعيد.

Function git-GetAllRemoteBranches {
     iex "git branch -r"                       <# get all remote branches #> `
     | % { $_ -Match "origin\/(?'name'\S+)" }  <# select only names of the branches #> `
     | % { Out-Null; $matches['name'] }        <# write does names #>
}


Function git-CheckoutAllBranches {
    git-GetAllRemoteBranches `
        | % { iex "git checkout $_" }          <# execute ' git checkout <branch>' #>
}

المزيد من بوابة الوظائف ويمكن الاطلاع على بلدي بوابة إعدادات الريبو

بوابة عادة (عند غير محدد) جلب كافة فروع و/أو العلامات (الحكام ، انظر: git ls-refs) من واحد أو أكثر من مستودعات أخرى جنبا إلى جنب مع الكائنات اللازمة لاستكمال تاريخهم.وبعبارة أخرى أنه جلب الأشياء التي لا يمكن الوصول إليها من قبل الكائنات التي يتم تحميلها بالفعل.انظر: ماذا git fetch حقا ؟

في بعض الأحيان قد يكون الفروع/العلامات التي لا ترتبط مباشرة إلى المرحلة الحالية ، لذلك git pull --all/git fetch --all لن يساعد في هذه الحالة ، ولكن يمكنك أن قائمة لهم من قبل:

git ls-remote -h -t origin

وجلب لهم يدويا من خلال معرفة المرجع الأسماء.

لذلك جلب كل منهم, حاول:

git fetch origin --depth=10000 $(git ls-remote -h -t origin)

على --depth=10000 المعلمة قد تساعد إذا كنت قد shallowed مستودع.

ثم التحقق من كل ما تبذلونه من فروع مرة أخرى:

git branch -avv

إذا كان أعلاه لن يساعد تحتاج إلى إضافة عداد المفقودين فروع يدويا تتبع قائمة (كما ضاعت بطريقة أو بأخرى):

$ git remote -v show origin
...
  Remote branches:
    master      tracked

قبل git remote set-branches مثل:

git remote set-branches --add origin missing_branch

لذلك قد تظهر تحت remotes/origin بعد جلب:

$ git remote -v show origin
...
  Remote branches:
    missing_branch new (next fetch will store in remotes/origin)
$ git fetch
From github.com:Foo/Bar
 * [new branch]      missing_branch -> origin/missing_branch

استكشاف الأخطاء وإصلاحها

إذا كنت لا تزال لا يمكن الحصول على أي شيء آخر غير الفرع الرئيسي ، تحقق مما يلي:

  • الاختيار المزدوج أجهزة التحكم عن بعد (git remote -v) مثلا
    • التحقق من أن git config branch.master.remote هو origin.
    • تحقق مما إذا كان origin يشير إلى عنوان URL الصحيح عن طريق: git remote show origin (انظر هذا بعد).

أيا من هذه الإجابات قطع عليه ، باستثناء المستخدم لا أحد على الطريق الصحيح.

كنت أعاني من مشكلة مع تحريك الريبو من ملقم واحد/نظام إلى آخر.عندما المستنسخة الريبو فقط إنشاء الفرع المحلي للحصول على الماجستير حتى عندما دفعت إلى البعيد فقط ماجستير فرع دفعت.

لذا وجدت هاتين الطريقتين مفيدة جدا.نأمل أنها تساعد شخص آخر.

الأسلوب 1:

git clone --mirror OLD_REPO_URL
cd new-cloned-project
mkdir .git
mv * .git
git config --local --bool core.bare false
git reset --hard HEAD
git remote add newrepo NEW_REPO_URL
git push --all newrepo
git push --tags newrepo

الطريقة 2:

git config --global alias.clone-branches '! git branch -a | sed -n "/\/HEAD /d; /\/master$/d; /remotes/p;" | xargs -L1 git checkout -t'
git clone OLD_REPO_URL
cd new-cloned-project
git clone-branches
git remote add newrepo NEW_REPO_URL
git push --all newrepo
git push --tags newrepo

استخدام الأوامر التي يمكنك تذكر

أنا باستخدام Bitbucket, مستودع خدمة استضافة من Atlassian.لذلك أنا أحاول أن اتبع مستندات.وأن يعمل تماما بالنسبة لي.التالية سهلة وقصيرة الأوامر يمكنك الخروج عن طريق الفرع.

في أول استنساخ المستودع الخاص بك ، ثم التغيير إلى المجلد الوجهة.وأخيرا وليس آخرا الجلب و الدفع:

git clone <repo> <destination_folder>
cd <destination_folder>
git fetch && git checkout <branch>

هذا هو.هنا ليت مزيد من العالم الحقيقي سبيل المثال:

git clone https://username@bitbucket.org/team/repository.git project_folder
cd project_folder
git fetch && git checkout develop

سوف تجد معلومات تفصيلية عن الأوامر في المستندات:استنساخ الأمر, الأمر الجلب, الخروج الأوامر

اعتبارا من مطلع عام 2017 ، الجواب في هذا التعليق يعمل:

git fetch <origin-name> <branch-name> يجلب فرع لك.في حين أن هذا لا سحب جميع فروع في آن واحد ، يمكنك متفرد تنفيذ هذا لكل فرع.

هنا هو آخر واحد قصير-بطانة الأمر الذي يخلق الفروع المحلية لجميع الفروع عن بعد:

(git branch -r | sed -n '/->/!s#^  origin/##p' && echo master) | xargs -L1 git checkout

كما أنها تعمل بشكل صحيح إذا تتبع فروع محلية تم إنشاؤها بالفعل.يمكنك تسميتها بعد أول git clone أو في أي وقت لاحق.

إذا كنت لا تحتاج إلى أن يكون master فرع سحبه بعد الاستنساخ ، استخدام

git branch -r | sed -n '/->/!s#^  origin/##p'| xargs -L1 git checkout

git clone --mirror على الأصل الريبو يعمل بشكل جيد على هذا.

git clone --mirror /path/to/original.git
git remote set-url origin /path/to/new-repo.git
git push -u origin
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top