保持git分支最新的推荐工作流程

时间:2017-08-10 01:34:38

标签: git github version-control

我有两个目标,在处理我的功能时我需要一个工作流来实现它们(master是一个企业github仓库)。

目标:

  • 让我的分支机构保持最新状态

  • 能够看到我使用git diffgit show

  • 所做的更改

我是github的新手,但我尝试了很少的方案来实现这一点,但他们没有帮助我。

最初,我创建了一个新的分支(跟踪origin / master)并进行了代码更改。

我提交更改并使用git push origin将此更改发布到github。

然后我创建公关并让人们评论。

我得到了很好的反馈,我进行了代码更改并在第一次提交之前提交。

如何保持我的分支与origin / master同步?

我尝试通过git pull合并来更新我的本地分支。没关系,但现在如果我做git show我将看不到我的更改,我会看到最新的主提交。

我尝试通过git pull --rebase重新定位来更新我的本地分支。我可以使用git show来查看我的更改,但我的本地和远程分支不同步,我必须使用git push origin -f更新我的github PR并进行第二次更改。

我愿意接受建议,谢谢!

1 个答案:

答案 0 :(得分:1)

你正在做的是正确的方法。 pullpull --rebase之间存在很大差异。它会git fetch && git merge origin/master resp。 git fetch && git rebase origin/master。他们两个都是正确的方法。不同之处在于树历史,在大多数情况下,它的公司政策应该使用什么。

使用rebase,您将始终更改历史记录,并需要强制推送。使用merge,您不会更改历史记录,但最后一次提交是合并。

不要指望你只有一个会被推送的提交,所以diff不应该仅用于一次提交而是用于整个分支。如果您只需要查看差异,则可以运行:

git show HEAD~1

或     git show HEAD~4..HEAD~1

查看除最后一个(合并)之外的最后几次提交中的所有更改。

或者你可以试试这样的东西

git diff --boundary HEAD~1..origin/master

P.S。当更多人在同一个分支上工作时,rebase和force push会非常危险。只有当您确定自己是唯一一个在分支机构工作的人时才强制推动。

评论也可能存在一些问题。不确定Github如何,但Gitlab不会在强制推送后显示完全更改或删除行的注释。