Git - 帮助我理解并改进我的双人工作流程

时间:2013-05-21 19:10:21

标签: git workflow

队友和我(都是git的新手)正在开展一个新项目。该项目仍处于开发的早期阶段,因此变更尚未达到可以分解为完全隔离的功能的程度。

这是我们当前的工作流程。 (我知道这可能是错的)......

  • git commit
  • git pull origin
  • git push origin

我无法理解以下情况中的结果......

  • 我在当地做了一个小改动
  • 我的队友做了一系列提交并推送到原点
  • 我完成了我正在做的事情,再次提交
  • 我拉了他的变化,然后推回原点

之后,我预计差异将显示我的变化,因为这是新的起源。相反,我看到我的队友更改添加到我的代码中。另外,我的队友在尝试拉动时收到错误(不幸的是没记录),并且不得不克隆以使事情再次正常工作。

为了让事情看起来像我预期的那样,我(在搜索stackoverflow之后)......

  • git reset --hard
  • git checkout <teammates last commit>
  • git merge <my last commit>
  • git push

首先,我想了解发生了什么。其次,我想知道更好的方法。

2 个答案:

答案 0 :(得分:2)

如果没有关于错误的更多信息,很难说它们为什么会发生。可能是二进制文件被修改(这经常导致Git错误),但它也可能是很多其他的东西。

听起来我觉得Git正常工作:你做的最后一次改变就是引入你队友的变化,而这反映在最近的git diff中。您通常希望在执行提交之前提取,以确保您使用的是最新版本的存储库。此外,diff命令适用于提交历史记录;当你推到原点是无关紧要的。

将来,您可能希望考虑使用分支机构。如果每个人都有自己的分支,则可以使用git rebase在提交修改之前提取对主分支所做的任何更改。使用本地分支可以使协作更容易,因为您不必担心将尚未准备好的更改提交给主分支。有关分支的精彩教程可在以下位置找到:http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging。我发现它在过去非常有用。

答案 1 :(得分:0)

git pull会将远程控制器中的所有更改合并到您的本地存储库中。因为你的队友在你做了拉动时推了新的变化,所以将它们合并到你的本地仓库中。拉动在后台进行获取和合并。在不知道错误的情况下,你的队友难以确定wron的内容