3

因此,我有许多使用 Git 存储库管理的 Wordpress 站点,所有这些站点都是中央上游 Git 存储库的分支。我最近对父 repo 应用了一堆更新,但是其中一个子网站 repos 有一个插件更新到不同的版本,现在引发了大约 400 个重命名/重命名冲突。所有这些冲突都在上游插件目录中,可以安全地解决有利于上游分支的问题。

我想做以下事情:

  1. 确保文件的上游版本“赢得”合并冲突(例如 --theirs 标志对结帐的作用)
  2. 产生一个可合并的历史(如果一个同事用旧的仓库输入“git pull origin master”是不安全的,那不是一个选择。我坚决反对变基。)
  3. 不重构我的 Git 存储库(我的托管服务提供商 Pantheon 不会在部署时安装 Composer 依赖项。上游插件必须是存储库的一部分。)
  4. 不会受到重复性压力伤害(必须是相当少量的命令,因为我必须每个月左右解决一次这类混乱。)

如果我只输入“git checkout wp-content/plugins/** --theirs”,我会遇到大约 400 个错误,并且 Git 拒绝签出文件。它们看起来像这样:

....400 or so errors omitted...
error: path 'wp-content/plugins/wordpress-seo/js/dist/wp-seo-quick-edit-handler-710.min.js' does not have their version
error: path 'wp-content/plugins/wordpress-seo/js/dist/wp-seo-quick-edit-handler-720.min.js' does not have their version
error: path 'wp-content/plugins/wordpress-seo/js/dist/wp-seo-recalculate-710.min.js' does not have their version
error: path 'wp-content/plugins/wordpress-seo/js/dist/wp-seo-recalculate-720.min.js' does not have their version

我断然拒绝键入包含每个单独路径的 400 git rm/git add 命令。git checkout --force 不是一个选项,因为 --theirs 和 --force 相互不兼容(出于某种原因)。我目前的解决方案是打开 Git GUI 并手动右键单击 -> 使用远程版本,然后单击是... 400 次。我至少不必输入路径,但这仍然很耗时。

如何有效地解决大量重命名/重命名冲突以支持远程存储库?

4

1 回答 1

1

您是想只解决冲突文件以支持远程,还是只采用远程中的一整棵树?

对于后者,您可以这样做:

  • 只需按原样接受有冲突的文件。git add .或类似的
  • 提交合并。
  • rm -Rf path/in/question
  • git checkout origin/branch -- path/in/question
  • git commit --amend -a

对于前者,它可能非常相似

  • 只需按原样接受有冲突的文件。git add .或类似的
  • 提交合并。
  • 查找有冲突的文件。例如grep -r -l '>>>>' path/in/question > /tmp/conflicts.txt
  • 删除有冲突的文件,检查所需的版本,并以与上述类似的方式修改提交。

(如果文件/路径中有空格,可能需要对上述命令进行小幅调整。为了清楚起见,我给出了更简单的版本。)

于 2018-05-02T23:34:07.197 回答