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

时间:2011-03-13 07:52:56

标签: git

如何告诉git忽略我的本地文件并从远程分支中获取该文件而不尝试合并并导致冲突?

5 个答案:

答案 0 :(得分:139)

这是最安全的解决方案:

git stash

现在你可以做任何你想做的事而不用担心冲突。

例如:

git checkout origin/master

如果要在主分支中包含远程更改,可以执行以下操作:

git reset --hard origin/master

这将使你分支“master”指向“origin / master”。

答案 1 :(得分:40)

我理解这个问题:你想从上游完全替换一个文件(或选择)的内容。您不希望直接影响索引(因此您将像往常一样通过add + commit)。

简单地做

git checkout remote/branch -- a/file b/another/file

如果您想为广泛的子树执行此操作,而是希望直接使用

来影响索引
git read-tree remote/branch:subdir/

然后,您可以(可选)通过执行

更新您的工作副本
git checkout-index -u --force

答案 2 :(得分:7)

我的理解是,例如,您错误地保存了一个已更新的文件,仅用于测试目的。然后,当你运行" git status"该文件显示为"已修改"你说一些不好的话。您只想恢复旧版本并继续正常工作。

在这种情况下,您只需运行以下命令:

git checkout -- path/filename

答案 3 :(得分:5)

我会从" master"结帐远程文件(远程/原始存储库)像这样:

git checkout master <FileWithPath>

实施例: git checkout master components / indexTest.html

答案 4 :(得分:4)

使用-s--strategy选项与-X选项结合使用。在您的特定问题中,您希望保留所有远程文件并替换同名的本地文件。

用远程版本替换冲突

git merge -s recursive -Xtheirs upstream/master  

将使用所有冲突文件的远程repo版本。

用本地版本替换冲突

git merge -s recursive -Xours upstream/master

将使用所有冲突文件的本地repo版本。