2011-08-03 41 views
201

Tôi đang làm việc trên nhánh chính, thực hiện một số thay đổi và sau đó đã lưu trữ chúng. Bây giờ, chủ nhân của tôi đang ở HEAD.thay đổi stit git áp dụng cho chi nhánh mới?

Nhưng bây giờ, tôi muốn truy xuất những thay đổi này nhưng đến một chi nhánh mới mà chi nhánh từ phiên bản HEAD của nhánh chính.

Làm cách nào để thực hiện việc này?

+1

Tôi nghĩ bạn đang tìm kiếm điều này? http://stackoverflow.com/questions/556923/how-to-merge-my-local-uncommitted-changes-into-another-git-branch – zx1986

Trả lời

274

Quy trình chuẩn có hoạt động không?

  • thực hiện thay đổi
  • git stash save
  • git branch xxx HEAD
  • git checkout xxx
  • git stash pop

ngắn:

  • thực hiện thay đổi
  • git stash
  • git checkout -b xxx
  • git stash pop
+39

ngắn hơn: 'git checkout -b xxx' – eckes

+25

Chỉ cần làm rõ @eckes 'git checkout -b xxx' là một thay thế để thực hiện' git branch xxx HEAD' và sau đó là 'git checkout xxx'. Để đạt được những gì OP muốn, bạn vẫn cần phải thực hiện lệnh 'git stash'. – Simon

+9

Một phím tắt khác: 'git stash' tương đương với' git stash save' – sfletche

190

Vì bạn đã cất giấu những thay đổi của bạn, tất cả bạn cần là một-liner:

  • git stash branch <branchname> [<stash>]

Từ các tài liệu (https://www.kernel.org/pub/software/scm/git/docs/git-stash.html):

Tạo và kiểm tra ra một chi nhánh mới có tên < BRANCHNAME> bắt đầu từ cam kết mà tại đó các < stash> ban đầu được tạo ra, áp dụng những thay đổi được ghi trong < stash> vào cây và chỉ mục đang hoạt động mới. Nếu điều đó thành công, và < stash> là một tài liệu tham khảo của mẫu stash @ {< sửa đổi>}, nó sau đó giọt < stash>. Khi không có < stash> được cung cấp, hãy áp dụng phiên bản mới nhất.

Điều này rất hữu ích nếu nhánh mà bạn chạy git stash save đã thay đổi đủ để git stash áp dụng không thành công do xung đột. Kể từ khi stash được áp dụng trên đầu trang của commit là HEAD tại thời điểm stit git được chạy, nó khôi phục trạng thái stashed ban đầu mà không có xung đột.

+3

Đối với stashes duy nhất đây là con đường để đi. Tên tham chiếu stash không cần thiết vì Git sẽ áp dụng stash mới nhất, chuyển sang nhánh mới và áp dụng stash trong lệnh 1. – sinisterOrange

+0

@RodneyGolpe Điều này dường như cũng áp dụng các stash để 'chủ'? Những gì tôi muốn làm là, từ 'chủ', git stash, sau đó tôi đã có thể mong đợi 'git stash branch [branchname] để áp dụng stash cho một nhánh mới, để lại master mà không có chỉnh sửa? –

+2

@DavidDoria Bạn phải cam kết những thay đổi cho chi nhánh mới của bạn trước khi trở lại làm chủ. –

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