2011-01-31 28 views
9

Tôi có hai nhánh khác nhau của cùng một phần mềm mà tôi làm việc mỗi ngày. Tuy nhiên, mỗi khi tôi thanh toán chi nhánh khác, quá trình xây dựng của tôi có thể mất tối đa một giờ. Để giải quyết vấn đề này, tôi vừa kiểm tra dự án một lần cho mỗi nhánh trong hai thư mục riêng biệt.Sử dụng git, làm cách nào để bạn di chuyển một số thay đổi không được cam kết từ một chi nhánh sang một chi nhánh khác trong một thư mục khác?

Tôi đã làm một số công việc trong một nhánh, và nhận ra trước khi cam kết rằng tôi đã ở trong thư mục sai, và do đó là nhánh sai. Làm thế nào tôi có thể di chuyển công việc tôi đã làm trên nhánh này, đến nhánh khác, tốt nhất là không tạo một cam kết (nếu điều đó thậm chí có thể)?

Trả lời

19

Trong thư mục với những thay đổi, làm:

 
$ git diff > patch 

cd vào thư mục khác, và làm:

 
git apply /path/to/patch 
+1

Điều này sẽ hoạt động, mặc dù tôi có thể thu nhỏ thêm một chút. 'cd project2 && (cd ../project1 && git diff) | git apply'. Không cần phải viết một patchfile vào đĩa. –

+1

Cảm ơn, nó đã hoạt động. Tôi đã sử dụng 'git diff> patch',' git reset --hard', sau đó chuyển đến nhánh chính xác và 'git apply patch'. – thameera

6

Vâng, bạn cũng có thể không xây dựng các chi nhánh khác ..

  1. Thực hiện thay đổi, không cam kết
  2. Chuyển sang chi nhánh khác
  3. cam kết (không xây dựng)
  4. Quay lại

Đương nhiên, điều này chỉ hoạt động nếu bạn có thể cho phép bản thân để thực hiện mà không cần xây dựng (hợp lý trong một số kịch bản).

+0

Giải pháp này ít bị lỗi hơn so với sử dụng diff/apply imo – Trindaz

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