Как быстро пометить разрешение конфликтов при перебазировании? - PullRequest
4 голосов
/ 06 октября 2011

это часть моего 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 Ответ

4 голосов
/ 06 октября 2011

Это действительно отличная пара псевдонимов, которую я недавно нашел в 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, которого не было на момент написания подсказки, что упростило бы перезапись при редактировании без объединения, чтобы избежать включения конфликтов удаления, поскольку обычно вы хотите удалить / сохранить эти , не редактируйте их. Но 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 для необработанного (модифицированного).

...