【问题标题】:How do i get git to generate REMOTE, LOCAL files while rebasing?如何让 git 在变基时生成远程、本地文件?
【发布时间】:2018-03-21 23:49:45
【问题描述】:

所以我有masterfeature 分支。我愿意:

git checkout feature
git rebase master

我遇到了合并冲突:

Unmerged paths:
(use "git reset HEAD <file>..." to unstage)
(use "git add <file>..." to mark resolution)

    both modified:   /src/...

我运行合并工具

git mergetool

冲突很严重,我的合并工具无济于事。所以我需要手动解决,所以我关闭了合并工具,我回答:

Was the merge successful [y/n]? N
Continue merging other unresolved paths [y/n]? Y

这是唯一的冲突,所以我们退出

现在我希望在有冲突的文件周围看到 4 个文件:REMOTE、LOCAL、BASE、BACKUP,但我看不到它们。

问题:

  • 我如何在进行 rebase 时查看 REMOTE LOCAL BASE 和 BACKUP?

【问题讨论】:

  • 您可以再次运行git mergetool(可能使用标准的合并工具,例如vimdiff)并保存git mergetool 生成的临时BASE、LOCAL 和REMOTE 文件
  • Git 不会创建您期望的 4 个文件。它们可能由您的合并工具创建。所以我猜如果你不使用mergetool,这些文件就不存在了。 Git 在合并的文件中添加冲突标记。您可以打开文件,处理冲突部分。保留你需要的,删除你不需要的。保存并退出,然后运行git addgit rebase --continue
  • @ElpieKay 看看我自己的答案

标签: git


【解决方案1】:

事实证明 git 本身确实会生成所有这些文件,您需要做的就是终止合并过程(而不是轻轻地关闭它以回答所有问题):

Was the merge successful [y/n]? 

点击Ctrl + C,然后进行

git status

观察

Untracked files:
(use "git add <file>..." to include in what will be committed)

    scripts/src/models/editing/main/basic-block/block-object-attribute-fields_BACKUP_9504.tsx
    scripts/src/models/editing/main/basic-block/block-object-attribute-fields_BASE_9504.tsx
    scripts/src/models/editing/main/basic-block/block-object-attribute-fields_LOCAL_9504.tsx
    scripts/src/models/editing/main/basic-block/block-object-attribute-fields_REMOTE_9504.tsx

【讨论】:

  • 请注意,这些不同的文件中的每一个实际上只是一个在某个时刻提交的文件,由git mergetool 代码提取为一个新名称。您可能还想查看我对stackoverflow.com/q/44212642/1256452 的(长)回答(它是关于git merge 而不是git rebase,但是当rebase 需要进行合并时,它会调用相同的合并代码,并留下相同的索引条目到位)。
  • 独立于上述所有,我建议将merge.conflictStyle 设置为diff3,以便在低级冲突期间Git 留下的标记文件包含来自所有三个版本的行(称为base,本地和远程;基地,--ours--theirs 其他地方)。
猜你喜欢
  • 2022-11-17
  • 1970-01-01
  • 2016-05-07
  • 2022-01-14
  • 1970-01-01
  • 2011-05-18
  • 2015-08-12
  • 2016-01-12
  • 2012-02-19
相关资源
最近更新 更多