git merge的rebase选项的目的是什么?

时间:2016-05-25 23:51:03

标签: git merge rebase pull git-checkout

here

学习git
git pull --rebase origin master

有没有--rebase选项有什么区别?我读到rebase选项允许你在提交同步后将你自己的提交放在master分支上,但不是正常情况下会发生什么?

我也不明白在结账时指定分支作为选项的目的。

git checkout -b marys-feature master

为什么需要指定master?如果你已经掌握了它,那么就不会让新分支自动成为主分支的副本。如果是这样,指定要复制的分支只有在您不想复制的分支(当前已检出的分支)上才有用吗?

此外,推送期间-u选项的目的是什么?

git push -u origin marys-feature

即使您没有-u,它也会使它成为远程跟踪分支吗?我认为你推的任何东西都会自动进行远程跟踪?

2 个答案:

答案 0 :(得分:3)

来自git pull doc

  

git pull 使用给定参数运行 git fetch 并调用 git merge   将检索到的分支头合并到当前分支中。同    - rebase ,它运行 git rebase 而不是 git merge

来自 git checkout doc

  

指定-b会导致创建一个新分支,就像调用master然后签出一样。

在你的情况下: git checkout -b marys-feature master
这意味着无论您处于何种分支状态(无需更改提交),您都将使用分支 中的内容创建名为 marys-feature 的新分支主 即可。

转发您的上一个问题,您可以参考以下链接:What exactly does the "u" do? "git push -u origin master" vs "git push origin master"

答案 1 :(得分:2)

git push -u ...设置指定的上游跟踪分支。

如果没有跟踪,则表示已设置。如果为分支分配了上游跟踪分支,请更改为指定的分支(覆盖)。因此通常只需要在定义上游时应用一次。

默认情况下,Git推送,如果分支名称不同,则不会自动分配远程跟踪分支,有关push.default的详细信息,请参阅git-config documentation

  

定义git push应该采取的操作,如果没有显式的refspec   给出。不同的值非常适合特定的工作流程;对于   例如,在纯粹的中心工作流程中(即获取源是相同的   到推送目的地),上游可能就是你想要的。可能   值是:

     

nothing - 除非refspec是,否则不要推送任何内容(错误输出)   明确给出。这主要是针对想要避免的人   总是明确的错误。

     

current - 推送当前分支以使用相同的更新分支   接收端的名称。适用于中央和非中央   工作流程。

     

upstream - 将当前分支推回到其更改的分支   通常集成到当前分支(称为   @{上游})。这种模式只有在你推动时才有意义   您通常会从中获取相同的存储库(即中央工作流程)。

     

simple - 在集中式工作流程中,像上游一样添加工作   如果上游分支的名称不同,则拒绝推送的安全性   来自当地的。

     

当推到与遥控器不同的遥控器时   通常来自,作为当前工作。这是最安全的选择   适合初学者。

     

此模式已成为Git 2.0中的默认模式。

     

matching - 推送两端具有相同名称的所有分支。这个   使您正在推动的存储库记住分支集   这将被推出(例如,如果你总是推动maint和master   那里没有其他分支,你推送的存储库将有   这两个分支,你的当地maint和master将被推动   有)。

git checkout -b marys-feature master

是运行

的快捷方式
git branch marys-feature master
git checkout marys-feature

这将创建master名为marys-feature的新分支,并将您的工作副本更改为marys-feature

有关创建分支和更改工作副本的详细信息,请参阅官方git-branch documentation

相关问题