2011-09-12 64 views
40

Tôi có 2 chi nhánh chưa sẵn sàng để hợp nhất, nhưng có một số logic bổ sung mà tôi muốn xem xét (trước khi hợp nhất)Có thể xem nhiều nhánh git cùng một lúc cho cùng một dự án không?

Tôi có thể kiểm tra nhiều nhánh git của cùng một dự án không? Có thể không?

+0

Bạn có thể làm như vậy với Git 2.5+ và lệnh 'git checkout --to = 'mới. Xem [câu trả lời của tôi dưới đây] (http://stackoverflow.com/a/30186481/6309). – VonC

+0

Cú pháp thực tế là 'git worktree thêm '. Tôi đã cập nhật [câu trả lời của tôi dưới đây] (http://stackoverflow.com/a/30186481/6309). – VonC

Trả lời

36

Bạn chỉ cần sao chép kho lưu trữ vào một vị trí mới (bằng cách sao chép thư mục theo nghĩa đen hoặc sử dụng git clone --shared) và kiểm tra một nhánh trên mỗi vị trí.

Bạn cũng có thể sử dụng git-worktree để tạo nhiều thư mục hoạt động từ một bản sao lưu trữ duy nhất.

Nếu không, phương tiện chính để so sánh tệp giữa các chi nhánh trước khi hợp nhất chúng là git diff.

+3

Lưu ý: Tôi nhận thấy câu trả lời của bạn đã được bình chọn ngày hôm nay (http://stackoverflow.com/posts/7393302/timeline), nhưng tôi đã không downvoted nó;) Tôi chỉ đơn giản là (2 năm trước) đã chỉ ra lệnh git worktree mới. – VonC

1

Điều đầu tiên đến với tâm trí của tôi là kiểm tra từng chi nhánh trên dự án riêng biệt. Vì vậy: 1. kiểm tra chi nhánh A trên bản sao chính (1) 2. tạo một bản sao mới (2) 3. kiểm tra chi nhánh B trong bản sao 2

cách tiếp cận thứ hai có thể là để tạo ra một chi nhánh mới (hay còn gọi là C) và hợp nhất cả nhánh A và B với nó. Nếu chúng được miễn phí hơn điều này có thể giúp bạn đánh giá.

-1

Như đã đề cập, bạn có thể diff chi nhánh với git diff:

git diff [--options] <commit> [--] [<path>…] 

This form is to view the changes you have in your working tree relative to the named <commit>. You can use HEAD to compare it with the latest commit, or a branch name to compare with the tip of a different branch. 

Trích trên là từ tài liệu Git.

1

Có thể thực hiện với sự chăm sóc phù hợp. Tuy nhiên, bạn đang lấy một trong các bản sao 'đi' từ thư mục git thông thường bằng cách sử dụng tùy chọn --work-tree=<path>, do đó, các thay đổi sẽ không được nhìn thấy bởi git trừ khi bạn đặc biệt nói với nó. Tôi đã đưa ra một ví dụ ở đây single-working-branch-with-git - xem phân đoạn CẬP NHẬT.

Lưu ý rằng git-new-workdir không hoạt động trên Windows XP vì nó yêu cầu liên kết kiểu Unix.

6

Với Git 2.5+ (Q2 2015), một repo Git sẽ hỗ trợ nhiều cây làm việc với git worktree add <path> (và điều đó sẽ thay thế contrib/workdir/git-new-workdir)

Những cây làm việc "liên kết" đang thực sự được ghi trong chính repo mới $GIT_DIR/worktrees thư mục (để hoạt động trên mọi hệ điều hành, kể cả Windows).

Xem thêm tại "Multiple working directories with Git?"

+0

Lưu ý rằng không giống như git-new-workdir, git worktree không cho phép bạn tạo nhiều worktrees cho cùng một nhánh:/ – NikiC

+2

@NikiC Bạn có thể thêm cờ '--force' (' -f' cũng hoạt động) theo [doc] (https://git-scm.com/docs/git-worktree#_options) –

-1

Bây giờ git bao gồm các lệnh worktree để làm chính xác điều đó.

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