33

该命令有一些我不明白的git pull地方。我有一个foobarGit 存储库,其中包含两个文件,分别命名为f1f2. 首先,我使用以下命令克隆这个 repo:

git clone git@mycompany:foobar/foobar.git 

f1我对和文件进行了一些错误的修改f2,将它们添加到 Git 索引并提交。

git add -A
git commit -m 'a test wrong modification'

我现在决定这个修改是错误的,我想用远程版本替换我的文件。所以我习惯git pull这样做。

git pull
Already up-to-date.

Git 回答说项目已经是最新的。我在做什么有什么问题?我应该如何继续用远程版本替换我的本地版本?

4

3 回答 3

77
git fetch origin
git reset --hard origin/master

这是关于 git pull git pull的很好的解释

git fetch命令将提交从远程存储库导入本地存储库。生成的提交存储为远程分支,而不是我们一直在使用的普通本地分支。这使您有机会在将更改集成到项目副本之前查看更改。

命令git pull <remote>获取当前分支的指定远程副本并立即将其合并到本地副本中。git fetch <remote>这与后面的相同git merge origin/<current-branch>。由于它正在进行合并,因此您的提交仍然存在。

完成后,fetch您可以使用 reset 命令重置您的工作副本。Hard是忽略本地副本中的任何更改。git reset --hard origin/master

于 2013-06-27T07:19:01.393 回答
2

要重置特定文件,请使用git checkout

git checkout HEAD f1
git checkout HEAD f2

您也可以使用通配符 (*),但我从未尝试过。

类似的问题: 如何从 git 存储库中仅签出一个文件?

git checkout 资源:http: //gitready.com/beginner/2009/01/11/reverting-files.html

于 2013-06-27T07:19:36.693 回答
2

拉取主要是将您的远程存储库与本地存储库合并。简短的回答是您的 git 设置没有问题,因为您最新的远程更改已经存在于您的本地存储库中。如果其他人将更改推送到远程存储库,那么 pull 就派上用场了。在您进行拉取后,这些更改将被拉取并合并到您的本地存储库中。

于 2013-06-27T07:20:02.950 回答