【问题标题】:How to push to a new branch in Git carefully如何小心推送到 Git 中的新分支
【发布时间】:2013-10-01 06:31:03
【问题描述】:

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

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

所以,我猜我会先做

git checkout -b my_new_branch

然后

git push -u origin my_new_branch

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

【问题讨论】:

    标签: git github push git-remote


    【解决方案1】:

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

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

    【讨论】:

    • 那么,制作本地遥控器并按照我所说的方式推送它不会给其他人造成问题吗?顺便说一句:在远程来源列表中执行git remote show origin 时,我们可以看到本地分支吗?因为我看不到我的。
    【解决方案2】:

    -u 选项设置存储库中的默认值以跟踪 origin 上的 my_new_branch。因此pushpull 默认使用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 使用正确的默认值。 主远程存储库不会被您的存储库破坏。

    【讨论】:

      【解决方案3】:

      正如其他人指出的那样。 你完全正确。


      只是总结所有细节。

      所以,我猜我会先做

      git checkout -b my_new_branch
      

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

      然后

      git push -u origin my_new_branch
      

      然后,这会在您的分支上创建 新分支-u--set-upstream 相同。在why always git branch --set-upstream 的惊人答案中提供更多信息。

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-23
        • 2019-02-13
        • 2010-11-07
        • 2014-02-04
        • 2011-09-10
        • 2013-10-09
        • 2016-07-08
        • 1970-01-01
        相关资源
        最近更新 更多