Giả sử tôi có một lịch sử git tuyến tính của 8 cam kết và một chi nhánh (master):Áp dụng git cam kết để làm việc cây unadded?
1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> [8=master]
tôi muốn chuyển tổng thể để 4 (mà tôi có thể làm với git branch -f master 4
):
1 -> 2 -> 3 -> [4=master] -> 5 -> 6 -> 7 -> 8
Bây giờ cây làm việc ở trạng thái 4.
Bây giờ tôi muốn áp dụng các thay đổi từ 4 -> 8
vào cây đang hoạt động của tôi dưới dạng bản vá.
Tức là, không ảnh hưởng đến trạng thái của thư mục .git, tôi muốn áp dụng các thay đổi từ 4->8
không được tổ chức vào cây đang hoạt động của mình. Sau đó cây làm việc phải ở trạng thái 8 nhưng nhánh và nhánh chính đã cam kết phải ở trạng thái 4.
Một cách khác để nói: Giả vờ sau khi chuyển chủ thành 4, tôi thực hiện các thay đổi từ 4 đến 8 thủ công vào cây làm việc của tôi mà không cần thêm chúng vào chỉ mục. Kết quả sẽ giống nhau.
Cách dễ nhất để thực hiện việc này là gì?
Hoặc, bằng nhau, 'git diff 4..8 | git apply' – cmbuckley
Tôi thích bạn hơn. – jthill