8

我和我的团队都是 Git 新手;到目前为止,我们已经使用了 CVS。我们有一个远程存储库,我们每个人都有自己的存储库。我们每个人都在研究一个特性或错误,但我们中的一些人可能在同一个特性的不同部分工作。

完成后,他们提交并推送他们的更改。另一位程序员可能想要使用该代码(例如,如果一个人在 BL 上工作,而另一个在 UI 上工作),但没有提交任何内容,因为代码甚至可能还没有编译,或者工作目录可能仍然很脏。

到目前为止,我只发现了一个使用 stash 的建议,但我们觉得它不舒服。我们想从远程提取代码并将其与未提交的代码合并,但据我了解 Git,这可能是不可能的。

您认为我们使用遥控器的最佳方式是什么?

4

3 回答 3

20

问题

您在工作流程中受到 CVS/SVN 习惯的困扰,尤其是“大补丁”思维模式。

解决方案

Git 有一个非常便宜的分支模型和交互式暂存。这样做的结果是您应该在功能分支上工作,并将您的非集成分支视为补丁队列。

因此,您应该做一些更易于管理的事情,而不是“代码、代码、代码、代码、推送、拉取、合并、尖叫”:

  1. 分支很多。为每个小功能或变更集创建一个分支。
  2. 对您的私有分支提交大量小的、原子性的更改。git add -p是你的朋友。
  3. 在合并到集成分支之前,根据您的集成分支重新设置您的私有分支。
  4. 每次您拥有完整的变更集或完成一项功能时,推送到您的集成分支。

如果您开始将 Git 提交视为补丁,并将分支视为补丁队列,那么您最终会得到一个工作流程,人们可以在其中挑选或合并存储库之间的小型变更集,而不会出现偏头痛。Git 分支模型使它变得容易,但您的团队将工作分解成合适大小的部分。

于 2012-06-24T08:32:35.273 回答
8

只要不推送自己的代码,就可以提交,然后git pull.

在您下一次推送之前,提交将对您的存储库保持私有。

git 推送

所以你可以在同一个 ' feature' 分支上工作,并且仍然受益于你同事的推动。

但是,如果您还必须发布您的工作,那么您可以使用 ' developerX_feature' 分支,以便您推送自己的分支,并让其他人获取然后将您的分支合并到他们自己的developerY_feature本地 repo 中的 ' ' 分支。

于 2012-06-24T08:13:18.100 回答
0

使用树枝!您可以创建分支,将更改提交到此分支,推送此分支,然后其他人可以获取此分支并在分支之间切换(结帐)(甚至离线)。它不会影响您的主要稳定分支(主)。

于 2012-06-24T08:13:38.040 回答