2013-09-25 4 views
5

В настоящее время я работаю над проектом команды со многими удаленными ветвями. И я клонировал проект из филиала нашего мастера. Теперь, когда я вносил изменения в этот проект локально, я хотел бы нажать его, но чтобы не нажимать его на главную удаленную ветку проектов, я хотел бы создать новую ветвь локально и направить эту ветвь на удаленный ,Как нажать на новую ветку в Git тщательно

Общая идея заключается не в том, чтобы разбить мою локальную версию проекта на главный удаленный проект. Мне просто нужно, чтобы моя ветка была отдельной.

Итак, я предполагаю, что я первый буду делать

git checkout -b my_new_branch

затем

git push -u origin my_new_branch

Будет ли эта гарантия, что моя ветвь не будет путаться с ничьи?

ответ

1

В вашем примере вы нажмете локальную ветвь на дистанционное репо. Таким образом, ветвь будет отделена от ветви master.

Так что если другие люди добровольноpush в вашей ветке, он не будет смешан с кем-либо.

+0

Итак, создание локального пульта дистанционного управления и его толкание, как я уже сказал, не создают проблем для других? btw: Можно ли увидеть локальную ветку при создании 'git remote show origin' в списке удаленных истоков? Потому что я не вижу своего. – ANW

5

Опция -u устанавливает значения по умолчанию в вашем репозитории для отслеживания my_new_branch на origin. Таким образом, и push, и pull по умолчанию используют origin и my_new_branch. После этого вам не нужно будет предоставлять эти аргументы. Вот пример:

$ mkdir foo; cd foo; git init; touch README; git add README; git commit -m 'README' 
Initialized empty Git repository in /private/tmp/foo/.git/ 
[master (root-commit) 03f3d46] README 
0 files changed 
create mode 100644 README 

$ cd ..; git clone foo bar; cd bar 
Cloning into 'bar'... 
done. 

$ git checkout -b my-br 
Switched to a new branch 'my-br' 

$ touch INSTALL; git add INSTALL; git commit -m 'INSTALL' 
[my-br 627d6db] INSTALL 
0 files changed 
create mode 100644 INSTALL 

$ git push -u origin my-br 
Counting objects: 3, done. 
Delta compression using up to 16 threads. 
Compressing objects: 100% (2/2), done. 
Writing objects: 100% (2/2), 245 bytes, done. 
Total 2 (delta 0), reused 0 (delta 0) 
Unpacking objects: 100% (2/2), done. 
To /tmp/foo 
* [new branch]  my-br -> my-br 
Branch my-br set up to track remote branch my-br from origin. 

$ touch Makefile; git add Makefile; git commit -m 'Makefile' 
[my-br f2390c1] Makefile 
0 files changed 
create mode 100644 Makefile 

$ git push 
Counting objects: 3, done. 
Delta compression using up to 16 threads. 
Compressing objects: 100% (2/2), done. 
Writing objects: 100% (2/2), 255 bytes, done. 
Total 2 (delta 0), reused 0 (delta 0) 
Unpacking objects: 100% (2/2), done. 
To /tmp/foo 
    627d6db..f2390c1 my-br -> my-br 

Обратите внимание, что окончательная git push использует соответствующие значения по умолчанию. Главный удаленный репозиторий безопасен от вашего репозитория, разбивающего его.

1

Как указано другими. Вы абсолютно правы.


Просто суммировать все детали.

Итак, я предполагаю, что я первый буду делать

git checkout -b my_new_branch 

Это правильный подход к создать новую ветку с именем my_new_branch. Вы добавляете все изменения, которые вы сделали в главной ветви, к этой новой ветке.

затем

git push -u origin my_new_branch 

Это затем создает свой новый филиал о происхождении который в настоящее время следуют с вашей отрасли. -u - это то же самое, что и --set-upstream.Дополнительная информация в удивительном ответе за why always git branch --set-upstream.

С этого момента вы можете использовать git push и git pull на удаленном хранилище, как вы хотите с филиал связан с локального хранилища в удаленном хранилище.

Будет ли это гарантировать, что мой филиал не будет смешан с кем-либо?

ДА. Ваша главная ветка абсолютно безопасна от ваших нажатий. И ваш филиал безопасен в смешанном коде, если только кто-то еще не подталкивает к этой ветке. Если это условие можно применить , можно с уверенностью сказать, что ваш код не будет смешиваться с чьим-то кодом.

Смежные вопросы