git pull:用远程版本替换本地版本

时间:2013-06-27 07:16:11

标签: git

我对git pull命令有些不理解。 我有一个foobar Git存储库,其中包含两个名为f1f2的文件。 首先,我使用以下命令克隆此repo:

git clone git@mycompany:foobar/foobar.git 

我对f1f2文件做了一些错误的修改,然后将它们添加到Git索引并提交。

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

我现在决定这些修改是错误的,我想用远程版本替换我的文件。所以我使用git pull来做到这一点。

git pull
Already up-to-date.

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

3 个答案:

答案 0 :(得分:45)

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

答案 1 :(得分:2)

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

git checkout HEAD f1
git checkout HEAD f2

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

类似的问题: How to checkout only one file from git repository?

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

答案 2 :(得分:2)

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