用远程版本替换本地版本

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

230663 次浏览

这是最安全的解决方案:

git stash

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

例如:

git checkout origin/master   # or origin/main

如果要在主分支中包含远程更改,可以这样做:

git reset --hard origin/master  # or origin/main

这将使您分支“ master”指向“ source/master”。

我对这个问题的理解是: 您希望完全替换来自上游的一个文件(或一个选区)的内容。您不希望直接影响索引(因此您将像往常一样执行 add + commit)。

很简单

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

如果希望对广泛的子树执行此操作,而希望直接影响索引,请使用

git read-tree remote/branch:subdir/

然后,您可以(可选地)通过执行以下操作来更新您的工作副本

git checkout-index -u --force

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

用远程版本替换冲突

git merge -s recursive -Xtheirs upstream/master

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

用本地版本替换冲突

git merge -s recursive -Xours upstream/master

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

我的理解是,例如,您错误地保存了仅用于测试目的而更新的文件。然后,当您运行“ git status”时,文件显示为“ Amendment”,并且您说了一些不好的单词。你只是想要旧版本回来,继续正常工作。

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

git checkout -- path/filename

我会像下面这样从“ master”(远程/原始存储库)签出远程文件:

git checkout master <FileWithPath>

例如: Git 签出主组件/indexTest.html

重命名旧的本地分支

git branch -m master old_master

远程结帐分支

git checkout -b master origin/master