0

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

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

  • git commit
  • git pull origin
  • git push origin

我无法理解以下场景中的结果......

  • 我在本地做了一个小改动
  • 我的队友做了一系列提交并推送到原点
  • 我完成了我正在做的事情,再次承诺
  • 我拉入他的更改,并推回原点

之后,我希望 diff 显示我的更改,因为这是 origin 的新内容。相反,我看到我的队友更改添加到我的代码中。此外,我的队友在尝试拉动时收到错误(不幸的是没有记录它们),并且不得不克隆以使事情再次正常运行。

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

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

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

4

2 回答 2

2

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

在我看来,Git 工作正常:您所做的最后一次更改是引入队友的更改,这反映在最近的 git diff 中。您通常希望在提交之前拉取,以确保您使用的是最新版本的存储库。此外,该diff命令适用于提交历史;当你推到原点时是无关紧要的。

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

于 2013-05-21T19:27:10.543 回答
0

git pull 会将远程的所有更改合并到本地存储库中。由于您的队友在您拉动时推送了新更改,因此将它们合并到您的本地存储库中。拉动在幕后进行提取和合并。在不知道错误的情况下,您的队友很难确定出了什么问题

于 2013-05-22T01:04:42.073 回答