5

我目前正在从事一个团队项目,有许多远程分支。我从我们的 master 分支克隆了这个项目。现在,我已经在本地对该项目进行了更改,我想将其推送,但是为了避免将其推送到项目的主远程分支,我想在本地创建一个新分支,并将此分支推送到远程.

总的想法是不要将我的本地版本的项目粉碎到主要的远程项目中。我只需要我的分支是分开的。

所以,我想我会先做

git checkout -b my_new_branch

然后

git push -u origin my_new_branch

这能保证我的分支不会与任何人的分支混在一起吗?

4

3 回答 3

6

-u选项设置存储库中的默认值以跟踪my_new_branch. origin因此,默认情况下,push和都pull将使用originmy_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使用正确的默认值。 主远程存储库不会被您的存储库破坏。

于 2013-09-25T17:28:03.667 回答
2

正如其他人指出的那样。你是绝对正确的。


只是为了总结所有细节。

所以,我想我会先做

git checkout -b my_new_branch

这是用 name创建新分支的正确方法my_new_branch。您正在将您在 master 分支中所做的所有更改添加到这个新分支。

然后

git push -u origin my_new_branch

然后,这将在您的分支上创建您的分支。与-u相同--set-upstream关于为什么总是 git branch --set-upstream的惊人答案中的更多信息。

从现在开始,您可以根据需要使用远程存储库,git push并将git pull您的分支从本地存储库链接到远程存储库

这能保证我的分支不会与任何人的分支混在一起吗?

的。您的主分支绝对不受您的推送影响。而且你的分支是安全的混合代码,除非其他人推送到这个分支。如果可以应用此条件,则可以肯定地说您的代码不会与其他任何人的代码混合

于 2017-07-17T09:38:59.403 回答
1

在您的示例中,您将本地分支推送到远程仓库。这样,分支将与master分支分离。

因此,除非其他人自愿 push加入您的分支机构,否则它不会与任何人的混在一起。

于 2013-09-25T15:37:41.563 回答