Как быстро пометить разрешение, имеющее конфликты во время перебазирования?

#git #git-rebase

#git #git-перебазирование

Вопрос:

это часть моей 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                                                                                                                                                             
#                   
  

Как я могу легко и быстро внести git rm изменения в каждый из этих файлов, зная, что в папке ../../src/generic/ есть много других файлов, которые я не хочу удалять.

Ответ №1:

Есть действительно отличная пара псевдонимов, которые я взял из 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 для несвязанного (измененного).