9

我正在做一个 pull origin some_branch 并且可以看到有很多变化。最终我不介意他们把我的全部抹掉。

我怎样才能全部接受它们,或者使用mergetool并一一合并文件?

4

3 回答 3

8

只是:

    git clone $url

严重地!这是最好的方法。

您可以执行各种命令来移动引用git resetgit branch但唯一的目的是将您的提交保存在本地存储库中的某个位置以供将来参考。如果这是目标,只需保持整个存储库不变,然后重新克隆源。

要仅在一个分支上接受所有更改,请foo

    git checkout foo
    git fetch origin +refs/heads/foo:refs/remotes/origin/foo
    git reset refs/remotes/origin/foo

foofoo现在将指向与on相同的提交origin。如果您想删除工作目录中的文件,请添加--hardgit reset. 如果要先合并,请替换fetchpull.

你的本地仓库中可能有一堆悬空提交,git 可能有一天会清理它们,但有一段时间你仍然可以通过 reflog 访问它们。

于 2011-01-18T20:47:50.063 回答
6

或者:

git status | grep "both " | cut -f2 | cut -f11 -d" " | xargs git checkout --theirs
git status | grep "both " | cut -f2 | cut -f11 -d" " | xargs git add

这强制接受所有冲突的远程文件。

于 2012-09-11T16:52:45.923 回答
0

这是我使用的方法,似乎还可以。我有一个名为“他们的”的分支,其中包含遥控器中所有内容的新版本。一个名为“我们的”的版本是我的作品,它基于他们很久以前的版本,其中有太多不相关的更改,但我想保留许多添加(站点/全部的新子目录)。

git checkout ours
git checkout theirs -- *.php *.txt *.config modules themes includes scripts
git commit -m "New version with all new key files from 'theirs'"

只要我在第二次结帐时得到了正确的文件和目录列表,这应该没问题。

如果我希望历史基于“他们的”分支,我可能想反过来做。

于 2011-06-23T19:43:33.337 回答