当我在本地功能分支上工作时,我更喜欢对其进行重新定位以保持历史记录清洁。我的工作流程下面有一个例子。
我的分支feature1
仅限本地(无跟踪设置),并由master
创建。请注意,我始终将git pull
配置为rebase。
git checkout master
git pull
git checkout feature1
git rebase master
我对这个工作流程的痒是在步骤方面效率低下。我只是在我的feature1
分支机构之外工作(我没有必要重新审视master
除了提取最新信息),所以我只是不明白为什么我需要添加额外的间接级别来获取来自原点的最新变化。所以我想知道,如果我采取一些快捷方式并改装到我的远程跟踪分支上,它是否相同?以下是几种方法:
git checkout feature1
git fetch
git rebase origin/master
甚至更短(我可以将fetch和rebase组合成一个带拉):
git checkout feature1
git pull origin master
所有这些都有效吗?这些是推荐的吗?我想不出任何更短/更方便的方法,所以也欢迎其他想法。
这会使feature1
在master
与origin
的同步方面保持领先,但是没关系,因为我可以在以后切换到master
时更新{{1}}它可以做其他任务。
答案 0 :(得分:2)
我认为它们中的任何一个都不比你的第一个短。
在你的第一个替代方式中你只获取了,所以为了得到确切的结果而不是第一个你需要将以后的origin / master合并到本地master中再这样4个命令(你说你以后会这样做,但是你这样做了。)
第二种方式是不完整的,我认为,因为你还没有改变,所以你仍然会有3个命令。
话虽如此,我建议在使用git时始终执行所有步骤。有时在完成一个步骤之前必须输入几个命令是很乏味的,但最后你会习惯它。
我不会说git rebase origin/master
是一种很好的做法。它实际上与git rebase master
相同,但它在概念上有点奇怪。您应始终在本地工作,并将远程分支作为指向您所连接的不同存储库的指针。如果您做错了,本地工作允许您执行和撤消。在这种情况下,你可能永远不会有任何错误,但如果你习惯使用远程分支,你最终会做更多的事情,并可能会遇到问题。
如果你想节省时间,我建议你开发一个运行这一系列命令的脚本,这样你只需要运行它。
另一个考虑因素是使用pull
还是fetch
+ merge
。我更喜欢第二种,原因有几个,不是这个问题的问题。所以再说2个命令而不是1个
答案 1 :(得分:0)
首先,你要将你的git pull配置为rebase。
假设您不在要重新绑定的分支上 脚步 1)git checkout feature1 2)git fetch 3)git rebase origin / Master
假设您在要重新分支的分支上,那么您可以避免git checkout 脚步 1)git fetch 2)git rebase origin / Master