从here
学习gitgit pull --rebase origin master
有没有--rebase选项有什么区别?我读到rebase选项允许你在提交同步后将你自己的提交放在master分支上,但不是正常情况下会发生什么?
我也不明白在结账时指定分支作为选项的目的。
git checkout -b marys-feature master
为什么需要指定master
?如果你已经掌握了它,那么就不会让新分支自动成为主分支的副本。如果是这样,指定要复制的分支只有在您不想复制的分支(当前已检出的分支)上才有用吗?
此外,推送期间-u选项的目的是什么?
git push -u origin marys-feature
即使您没有-u
,它也会使它成为远程跟踪分支吗?我认为你推的任何东西都会自动进行远程跟踪?
答案 0 :(得分:3)
git pull 使用给定参数运行 git fetch 并调用 git merge 将检索到的分支头合并到当前分支中。同 - rebase ,它运行 git rebase 而不是 git merge 。
指定-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。