2014-07-23 21 views
12

Nói rằng tôi có điều này sau khi cố gắng một hợp nhất và khi vào git status:Làm thế nào để làm '--theirs git checkout' cho nhiều file (hoặc tất cả các file chưa hợp nhất)

# Unmerged paths: 
# (use "git add/rm <file>..." as appropriate to mark resolution) 
# 
# added by them: myfile1.xhtml 
# added by them: myfile2.xhtml 
# added by them: myfile3.xhtml 

... và tôi biết tôi muốn để thực hiện việc này cho từng tệp đó:

git checkout --theirs myfile1.xhtml 
git add myfile1.xhtml 

... nhưng có nhiều trong số chúng. Làm thế nào tôi có thể làm chúng như một lô?

Trả lời

13

Giải pháp cho trường hợp của tôi rốt cuộc là chỉ cần sử dụng một ký tự đại diện trong đường dẫn thư mục, kể từ khi các tập tin được nhóm:

git checkout --theirs directory_name/* 
git add directory_name/* 
0

này kiểm tra ra tất cả các file Đã hủy hợp nhất mà không chỉ định thư mục:

git ls-files --unmerged | perl -n -e'/\t(.*)/ && print "$1\n"' | uniq | xargs -r git checkout --theirs -- 

Source

+0

Câu trả lời này sẽ là tốt hơn với một số giải thích của tất cả những đối số và cờ. – isherwood

2

Nếu tệp của bạn sâu hơn một thư mục (ví dụ: có các thư mục con) và bạn muốn chọn lọc theo cách chọn lọc l their file cho một thư mục, sau đó sử dụng như sau:

grep -lr '<<<<<<<' directory_name/ | xargs git checkout --theirs 
git add directory_name/* 

(từ this page)

+0

Điều này không hoạt động nếu có tệp nhị phân. –

0

Bạn có thể sử dụng các lệnh dưới đây để kiểm tra file bội trên con đường Đã hủy

git checkout --theirs `git status | grep "added by them:" | awk '{print $NF}'` 

thực hiện dưới đây lệnh để cam kết các tệp ở trên

git commit `git status | grep "added by them:" | awk '{print $NF}'` 
Các vấn đề liên quan