Git:藏匿而不是分支

时间:2014-12-01 19:05:45

标签: git version-control

在我的日常工作中,我发现自己正在用Git做一个新的代码习惯:而不是创建dev/master/main分支的分支,在那里做我的更改,当我完成后再合并回到通过解决冲突引用分支我根本就不分支。相反,我在参考分支上进行本地更改,当我必须推送更改时,为了获得其他人已更新的更改,我会保存我的更改,我提取新提交然后我应用我的存储更改这些其他人最重要的提交和解决冲突(如果有的话)。然后我终于推动了改变。我发现这种做法比处理分支更简单,更简单。

这种改变方式是否错误,可接受甚至比传统分支更好?为什么呢?

2 个答案:

答案 0 :(得分:1)

使用git stash(并且完全可以接受)的规定工作流程没有任何问题,因为,请记住,它是您的本地存储库。只要你推向世界其他地方的任何事情保持一致,你就可以做任何你想做的事。例如,不要rewriting history对那些被推翻其他人的提交。

这里要认识到的重要一点是,分支和存储并不是相互排斥的。如果存储符合您当前的需求,请使用它,直到more complicated scenarios表面,您需要考虑分支和存储。

要记住的一些事项:

  1. 在git中分支是一个很少到没有仪式的操作。在我的团队中,它是我们日常工作流程的一部分。
  2. 分支允许团队成员共享未准备好推送到master的工作进度代码(或任何上游主分支)。这基本上允许我们在团队成员之间形成子团队。
  3. 分支允许我们向github提交拉取请求,同时为其他项目做出贡献或请求代码审查。
  4. 使用git stash popgit stash drop,我总是将我的藏匿列表保持在较小的位置以避免混淆。
  5. 仍然存在与存储的合并冲突。

答案 1 :(得分:0)

通常这有点等同于你所关注的功能分支的重新绑定,所以例如你跟随一个功能X的上游主机,然后你做:

git fetch --all
git checkout featureX
git rebase master

这将根据新提取的代码应用您的更改。

如果你已经有了藏匿处,你可以将它们转换为功能分支,例如:

git branch featureX [<stash>]

我发现处理功能分支比处理存储更加惯用,这对我来说很容易被遗忘,你不能push them around在最终的远程开发回购中。