gpt4 book ai didi

git - 当其中存在 merge 冲突时 merge git 注释

转载 作者:太空狗 更新时间:2023-10-29 12:52:44 25 4
gpt4 key购买 nike

我做了以下 merge Git 笔记的操作。
引用:http://vmiklos.hu/blog/git-notes-merge

我克隆了一个 repo,添加了对提交的注释引用 (refs/notes/commits)。当我推送它时,中央 repo 拒绝它,因为它不是快进的 - 因为已经有该提交对象的 refs/notes/commits。因此,为了将远程 Notes 引用 merge 到我的本地 Notes 引用,

  1. git checkout refs/notes/master
  2. git fetch refs/notes/commits
  3. git merge FETCH_HEAD
    Auto-merging 206155715a78c9d91d42cda1de98449d2e0b1d36
    CONFLICT (add/add): Merge conflict in 206155715a78c9d91d42cda1de98449d........
    Automatic merge failed; fix conflicts and then commit the result.
  4. vi 206155715a78c9d91d42cda1de98449d........ [fix the conflict as usual manually]
  5. git add 206155715a78c9d91d42cda1de98449d........
  6. git commit -m "updated Notes"
    [detached HEAD 0afb80f] changed notes
  7. git update-ref refs/notes/commits HEAD
  8. git checkout master
    Previous HEAD position was 0afb80f... changed notes
    Switched to branch 'master'
  9. git push origin refs/notes/commits
    success

问题是,这是否是最好的方法?

按照 git notes 手册页,我尝试了以下操作。

  1. git fetch refs/notes/commits
  2. git notes merge -v refs/notes/commits
    Nothing to Update!

上述步骤显然对我有用。有没有一种方法可以使用 git notes merge 命令并 merge 注释,而不是第一个插图中所示的“分支方法”?对于我的用户,这个简单的命令会更有帮助。

最佳答案

正如我在评论中提到的,第一种方法对您不起作用的一个原因是您复制了错误的说明:您的第二步 git fetch refs/notes/commits 缺少 Remote 的名称。

关于 git notes merge 的第二种方法,您再次犯了同样的错误,即从 git fetch 中丢失了远程。但即使有了这个修复,我还是努力让它工作,直到我最终发现你必须在 merge 之前从远程获取笔记到不同的 ref 命名空间,因为如果有冲突它不会让你覆盖什么本地 refs/notes/commits 指向(尽管如果没有冲突它会愉快地快进)。

所以这对我有用:

git fetch origin refs/notes/commits:refs/notes/origin/commits
git notes merge -v origin/commits

如果有冲突,它现在会告诉你编辑 .git/NOTES_MERGE_WORKTREE 然后通过 git notes merge --commit 提交结果,或者中止 merge 使用 git notes merge --abort

the technique suggested in the URL above 上使用 git notes merge 的一大缺点是 merge 不提供任何索引,因此您不能通过 git mergetool 等使用正常的 merge 工作流程。另一个是它不支持 rebase 。因此,如果您预计会出现复杂的冲突或需要 rebase ,那么我建议您使用 git checkout refs/notes/commits 方法。但在简单的情况下,git notes merge 可能更方便,因为您可以在工作树脏时执行 merge ,而 git checkout refs/notes/commits 需要它保持清洁。

我很确定 git-notes(1) 手册页可以使这一切变得更加明显。也许我会找时间为此提交补丁。然而与此同时,我写了一个新的 wrapper called git-rnotes这使得与远程存储库共享笔记变得更加容易。

关于git - 当其中存在 merge 冲突时 merge git 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12055303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com