git - 如何在 rebase 期间快速标记有冲突的决议?

标签 git git-rebase

这是我的 git status 的一部分

# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#       deleted by us:      ../../src/generic/asdfgsdfgsfg.java
#       deleted by us:      ../../src/generic/bsdfgsdf.java                                                                                                                                                             
#       deleted by us:      ../../src/generic/cdghdfgh.java                                                                                                                                                              
#       deleted by us:      ../../src/generic/dghkghjk.java                                                                                                                                                           
#       deleted by us:      ../../src/generic/eghkghjk.java                                                                                                                                                       
#       deleted by us:      ../../src/generic/fsdfgsdfg.java                                                                                                                                                    
#       deleted by us:      ../../src/generic/gsdfgsd.java                                                                                                                                                        
#       deleted by us:      ../../src/generic/hdsfgsdfg.java                                                                                                                                                    
#       deleted by us:      ../../src/generic/isdgsdfg.java                                                                                                                                                     
#       deleted by us:      ../../src/generic/jdsfgsd.java                                                                                                                                                    
#       deleted by us:      ../../src/generic/ksdf.java                                                                                                                                                       
#       deleted by us:      ../../src/generic/lnsfgnsg.java                                                                                                                                                             
#                   

知道在文件夹 ../../src/generic/ 中有很多文件,我怎样才能轻松快速地在每个文件上制作 git rm其他我不想删除的文件。

最佳答案

我不久前从 git wiki 上找到了这对非常棒的别名(它目前与 kernel.org 一起下线了):

edit-unmerged = \
    "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; vim `
add-unmerged = \
    "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; git add `f`"

这可以根据 git status --porcelain 重新实现,在编写提示时它不存在,这将使重写 edit-unmerged 以避免包含删除冲突变得更容易,因为通常你想删除/保留它们,而不是编辑它们。但是 add-unmerged 完全适合您的用例!

像这样(未经测试):

add-unmerged = \
    "!f() { git status --porcelain | grep '^[ADU][ADU]' | cut -d" " -f2 }; git add `f`"
edit-unmerged = \
    "!f() { git status --porcelain | grep '^UU' | cut -d" " -f2 }; git add `f`"

调整第二个模式,直到它只包含您想要编辑的冲突类型。你肯定想要UU;您可能还想要 AU/UA,甚至 AA。 A 表示添加,D 表示删除,U 表示未 merge (修改)。

关于git - 如何在 rebase 期间快速标记有冲突的决议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7677550/

相关文章:

git - 建立主机 'nodejs-xxxxx.rhcloud.com can'的真实性

git - 在 Windows 上从源代码构建 PhantomJS-2

mysql - 使用 GitFlow 开发模型管理 Liquibase

git - 如何将提交从主干移动到 Git 中的分支?

git - 如何以非交互方式运行 git rebase --interactive?

git - 宣布 git push -f 而其他人都在做 git pull --rebase 有什么不好

git - 与 git diff 比较相等但具有不同哈希值的两个分支

未在 Windows 上执行 Git clean 过滤器

git - 为什么 git rebase 的 merge 冲突通常比 merge 少?

git - 撤消 Git Rebase