3

我是 Git 的新手,不太确定发生了什么。我和我的朋友正在一起做一个项目。

我从远程服务器获取了所有文件git fetch,所以我现在有一大堆文件。

  • 我编辑其中一些,他编辑其中一些,等等。

  • 我每天都在做 fetch,他开始告诉我他已经修改了一些文件并更新了它们,但是这些更改并没有出现在我的端。

  • 我在 Windows 中打开 Git GUI,左侧有两个面板。

    有人说Unstaged Changes-我认为这些是我更改的内容,除非我更改它们,否则它们不会更新到本地存储库add

    另一个说Staged Changes (Will Commit)。在此窗口中,当我单击某些文件时,我确实看到了我的朋友所做的更新,这些更新并未显示在我正在编辑的文件中,而且我想我也看到了我所做的更改。

  • git add .我在我的目录中添加所有文件

  • 我按下commitGit GUI 中的按钮,现在两个侧面板中没有更多文件, noUnstaged Changes​​和 no Staged Changes (Will Commit).

  • 我检查了所有文件,似乎我和我朋友端的更改已合并到一个文件中。

我仍然不能 100% 确定发生了什么。

  • 问题1:我做对了吗?

  • 问题2:具体是merge做什么的?

因为我一直在合并,git merge origin/master合并似乎并没有做任何该死的事情。我以为commit只是将您当前版本的记录写入一些哈希码,但似乎commit实际上正在做我认为的事情merge- 它正在合并更改。

抱歉这个冗长的问题,只是很困惑。

4

3 回答 3

6

我相信你是误会了git fetch

它只获取对远程存储库所做的更改,在您的情况下是存储库中的master分支origin,但它不会它们应用于您的树(它只将它们存储在本地.git目录中)。git merge,另一方面,将远程更改应用到您的存储库。

您必须使用git pull origin master拉取您朋友的更改并将它们合并到您的工作树中。本质上, a与后面git pull的 相同。git fetchgit merge

看看这个:Git Fetch vs Pull


或者

您的朋友/您没有push进入原始存储库。你的朋友git push origin master在他犯下之后在做什么?提交是本地的,要与世界其他地方“共享”它们,您必须git push.

唯一的例外是当直接在origin存储库上工作时。然后他不需要推送,因为他的所有提交都已经origin在他的分支中了。

于 2011-09-17T02:21:46.463 回答
1

这将需要很长时间来解释,我已经在一系列博客文章中做到了。看看他们。他们从初学者的角度引导您了解此类基本内容。

于 2011-09-17T02:31:07.687 回答
0

如果您重视阅读,我建议您使用 Git 进行版本控制一书,以巩固您对 Git 的了解。文章肯定更直接、更便宜,但 Git 是一个相当复杂的野兽,我相信从长远来看,良好的基础是有回报的。

我的两分钱。

于 2011-09-18T12:32:12.383 回答