2013-01-16 37 views
25

Thú vị và hữu ích như câu trả lời cho How to setup a git driver to ignore a folder on merge là, nó không trả lời được câu hỏi ban đầu mà vẫn khiến tôi bối rối.Làm thế nào để làm cho git bỏ qua một thư mục trong khi hợp nhất

Không giống như câu hỏi được liên kết ở trên, tôi có hai nhánh với cùng một bộ thư mục và để hợp nhất một thư mục với nhau, tôi cần git bỏ qua một thư mục hoàn toàn.

Tôi đã thử bằng trình điều khiển hợp nhất của riêng mình như được mô tả trong How do I tell git to always select my local version for conflicted merges on a specific file? nhưng vấn đề với phương pháp này là trình điều khiển này chỉ được gọi khi có tệp xung đột thực sự trong hai nhánh này. Bất cứ khi nào những thay đổi của một tập tin chỉ trên một nhánh, git kết hợp chúng mà không gọi trình điều khiển hợp nhất của tôi.

Điều này dẫn đến những thay đổi trong tệp trong thư mục mà tôi không muốn. Bất kỳ ý tưởng làm thế nào tôi có thể làm cho git bỏ qua mỗi và mọi tập tin trong thư mục đó tất cả các thời gian - cho dù đó là xúc động hay không?

+0

Tôi đã nhìn vào git thời gian gần đây, và điều này có vẻ là một trong những vấn đề mà có thể ngăn cản chúng ta sử dụng nó, bạn không thể kết hợp mọi thứ một cách có chọn lọc. – user606723

+0

lệnh 'git filter-branch' có thể là thứ bạn đang tìm kiếm. Nó cho phép bạn thực hiện hợp nhất trong khi lọc những gì được hợp nhất. http://git-scm.com/docs/git-filter-branch –

+0

Cảm ơn fpr câu trả lời, nhưng tôi không hiểu làm thế nào tôi có thể áp dụng 'bộ lọc-chi nhánh' trong trường hợp cụ thể này mà không làm rất nhiều công việc thủ công cho mọi hợp nhất. –

Trả lời

37

Tôi không thực sự sử dụng Git, nhưng tôi nghĩ rằng điều này sẽ làm việc cho trường hợp của bạn:

Sử dụng một cái gì đó giống như những gì quy định ở đây: https://gist.github.com/564416

git checkout master  
git merge --no-commit --no-ff development 
git reset -- /path/to/folder # revert updates from path 
git commit 

Một lần nữa, tôi không sử dụng git, Tôi chỉ trì hoãn cách tôi nghĩ mọi thứ hoạt động dựa trên kinh nghiệm của tôi với TryGit.

  1. checkout master
  2. hợp nhất, nhưng không cam kết, không chuyển tiếp nhanh.
  3. hòa trộn đang dàn dựng, vì vậy thiết lập lại rằng toàn bộ cây thư mục
  4. cam
+0

@SebastianThiebes Đây là câu trả lời đúng. Bình chọn nó lên, chấp nhận nó. – jthill

+1

Tôi nghĩ bạn cũng nên đưa ra câu trả lời này trong [Cách thiết lập trình điều khiển git để bỏ qua một thư mục khi hợp nhất] (http://stackoverflow.com/questions/3111515/how-to-setup-a-git-driver-to -ignore-a-folder-on-merge). Có lẽ cũng xem xét không hiển thị bước thanh toán? Nó không liên quan, và tôi nghĩ nó làm giảm sự đơn giản của giải pháp. – jthill

+1

Nếu chỉnh sửa của tôi không thực hiện, việc đặt lại phải là 'git reset - path/to/folder' – jthill

Các vấn đề liên quan