2009-08-18 24 views
32

Tôi đang sử dụng Git để theo dõi nguồn tài liệu latex của mình. Tôi muốn giữ cho nhánh master đầy đủ các tài liệu phù hợp cho bản phát hành của người dùng cuối, vì vậy khi ai đó cần thứ gì đó, tôi chỉ có thể chuyển sang nhánh chính, biên dịch và phát tài liệu.Git: Hợp nhất để làm chủ khi tự động chọn ghi đè lên tệp chính với chi nhánh

Tôi tạo các nhánh mới khi sổ tay cần cập nhật lớn. Tuy nhiên, khi hướng dẫn được phê duyệt, nó cần phải được sáp nhập trở lại vào tổng thể. Khi sáp nhập từ chi nhánh vào chủ, tôi muốn vượt qua một số lệnh để Git để nói, "quên việc sáp nhập, chỉ cần sử dụng các tập tin từ chi nhánh ghi đè lên tập tin trong chủ." Có cách nào để làm việc này không? Cụ thể, tôi muốn tránh mở một công cụ hợp nhất mỗi lần. Cảm ơn trước.

+0

Bạn có thể thực hiện tương tác hợp nhất và cho ăn thìa (với 'yes') bất kể câu trả lời là gì khi nó yêu cầu phải làm gì ... –

+1

@ r-martinho-fernandes: Lệnh kết hợp tương tác là gì? –

Trả lời

46

Để bỏ qua master, khi bạn có branch kiểm tra ra sau đó:

git merge master --strategy=ours 

http://schacon.github.com/git/git-merge.html

Như 'Computer Nhà ngôn ngữ học' bình luận ở đây, điều này sẽ "bỏ qua tất cả mọi thứ từ 'thầy', thậm chí nếu nó có thay đổi sang các tệp mới, độc lập ". Vì vậy, nếu bạn không phải là OP và muốn có một hợp nhất an toàn hơn mà không phải là OP nói "quên việc sáp nhập", sau đó sử dụng lệnh an toàn tuyệt vời này từ 'Computer Linguist', và cộng với bình luận của mình lên để ông được creds.

git merge -s recursive -X theirs branch 
+1

Từ đây: http://stackoverflow.com/questions/366860/when-would-you-use-the-different-git-merge-strategies, điều này nói: của chúng ta == Tôi muốn kéo vào đầu khác, nhưng ném đi tất cả những thay đổi mà giới thiệu. Vì vậy, trái ngược với những gì OP muốn. – Amala

+4

Nếu bạn đang ở trong nhánh và bạn 'git merge master --strategy = ours' thì nó sẽ giữ các thay đổi của nhánh. (những gì OP muốn) Nhưng nếu bạn đang ở trong chủ và sử dụng "của chúng tôi" thì nó giữ của chủ nhân. (đối diện) – Robert

+4

Từ đọc câu hỏi của tôi, Mica muốn hợp nhất nhánh vào master, giữ trạng thái nhánh, nghĩa là 'git merge branch' vào master, vì vậy --strategy = của chúng ta ngược lại với cái anh ta muốn –

1

Tôi tin rằng bạn có thể làm điều này với chiến lược hợp nhất của chúng ta ':

git checkout branch 
git merge -s ours master 

Nhưng điều này không thực hiện chính xác những gì bạn muốn: nó ghi đè lên nội dung của hiện chi nhánh làm việc branch và những gì bạn muốn là để có được cùng một nội dung trên master. Những gì bạn thực sự muốn là một chiến lược hợp nhất theirs, và cho rằng tôi chỉ cho bạn tại this similar question cho một cách để làm điều đó. Trong thực tế những gì nó sôi xuống là đặt lại master để trỏ đến branch.

13

Trong phiên bản 1.7.1 của Git, bạn có thể sử dụng "-Xtheirs" để hợp nhất vào chính nhánh đó.

Ví dụ, nếu bạn bắt đầu trong ngành thạc sĩ của mình, bắt đầu từ năm chủ

git checkout -b editBranch
-- edit your files --
git add .
git commit -m "Updated the files"
git checkout master
git merge -Xtheirs editBranch

Một cách khác mà tôi đã nhìn thấy để làm điều này dựa trên this post là để làm một hard reset khỏi editBranch . Ví dụ:

git checkout -b editBranch
-- edit your files --
git add .
git commit -m "Updated the files"
git checkout master
git reset --hard editBranch

Tôi nghĩ rằng cách thứ hai này có thể là chơi tốt hơn, nhưng tôi đã không có cơ hội để chơi đùa với nó đủ được nêu ra.

+0

cảm ơn. Tôi sẽ phải cập nhật git ở nhà và kiểm tra điều này. Nhiều đánh giá cao. – Mica

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