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

38

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

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个回答

91
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


3
你说得对(如果所有更改都已经在本地可用,则第一个可能不是必需的),但是如果你解释这些命令的作用,可能会帮助提问者理解。 - user743382
1
添加了问题的说明 - Tala
如果我们想替换特定的文件而不是从orgin/master替换所有内容怎么办? - Kaizar Laxmidhar

2

2

Pulling主要是将远程存储库与本地存储库合并。简单来说,如果其他人向远程存储库推送了更改,那么pull就会变得很方便。在你进行pull操作后,这些更改会被拉取并合并到你的本地存储库中。因此,你的git设置没有问题,因为你最新的远程更改已经存在于你的本地存储库中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接