我对git pull
命令有些不理解。
我有一个foobar
Git存储库,其中包含两个名为f1
和f2
的文件。
首先,我使用以下命令克隆此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回答说该项目已经是最新的。我正在做什么有什么问题?我该如何使用远程版本替换本地版本?
答案 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。执行拉动后,这些更改将被拉出并合并到您的本地存储库中。