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

ryu*_*ice 136 git

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

Oli*_*ier 158

这是最安全的解决方案:

git stash
Run Code Online (Sandbox Code Playgroud)

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

例如:

git checkout origin/master
Run Code Online (Sandbox Code Playgroud)

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

git reset --hard origin/master
Run Code Online (Sandbox Code Playgroud)

这将使您分支"master"指向"origin/master".

  • 可能值得指出的是,这将分离HEAD - 提问者可能更喜欢留在`git stash; git fetch origin; git reset --hard origin/master` (75认同)
  • 我认为Mark Longair的评论是这个问题的实际答案 (7认同)

seh*_*ehe 42

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

简单地做

git checkout remote/branch -- a/file b/another/file
Run Code Online (Sandbox Code Playgroud)

如果你想为广泛的子树做这个,而是希望直接影响索引使用

git read-tree remote/branch:subdir/
Run Code Online (Sandbox Code Playgroud)

然后,您可以(可选)通过执行更新工作副本

git checkout-index -u --force
Run Code Online (Sandbox Code Playgroud)

  • 这正是我想要的.谢谢. (2认同)

Alm*_*pos 10

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

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

git checkout -- path/filename
Run Code Online (Sandbox Code Playgroud)


csi*_*csi 5

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

替换与远程版本的冲突

git merge -s recursive -Xtheirs upstream/master  
Run Code Online (Sandbox Code Playgroud)

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

替换与本地版本冲突

git merge -s recursive -Xours upstream/master
Run Code Online (Sandbox Code Playgroud)

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


Bir*_*Efe 5

我会从“主服务器”(远程/原始存储库)中签出远程文件,如下所示:

git checkout master <FileWithPath>
Run Code Online (Sandbox Code Playgroud)

示例:git checkout主组件/indexTest.html