队友和我(都是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
首先,我想了解发生了什么。其次,我想知道更好的方法。
答案 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的内容