Vì vậy, khi rebasing, hãy chọn chỉnh sửa cả cam kết mà bạn đã thêm tệp nhầm lẫn và tệp bạn muốn thêm vào theo thứ tự đó. Nếu tập tin là trong một cam kết sau đó, nhưng phải ở trong một trước đó, bạn sẽ phải sắp xếp lại các dòng. Ví dụ, tôi bắt đầu với
pick 8de731b Commit with missing file.
pick bbef925 Commit with too many files.
pick 52490ce More history.
tôi cần phải thay đổi nó để
edit bbef925 Commit with too many files.
edit 8de731b Commit with missing file.
pick 52490ce More history.
Sau đó,
# In the commit containing an extra file
git reset HEAD^ badfile.c
git commit --amend
git rebase --continue
# Now in the commit to add it to
git add badfile.c
git commit --amend
git rebase --continue
Thật không may, khi chỉnh sửa lịch sử trong một chi nhánh, tôi không biết bất kỳ cách nào để tránh chỉnh sửa lịch sử trong tất cả các nhánh. Rebasing nên được thực hiện càng sớm càng tốt để tránh các vấn đề như thế này. Trong trường hợp đơn giản của tôi ở đây, tôi có thể kết hợp tổng thể và chi nhánh khác, nhưng cam kết không hợp nhất, sau đó tôi phải rebase trong tổng thể, và sắp xếp lại và dẹp cam kết, như thế này:
pick 7cd915f Commit with missing file.
fixup 8de731b Commit with missing file. #This was the higher of the two entries
pick 8b92c5a Commit with too many files.
fixup bbef925 Commit with too many files. #This was the higher of the two entries
pick 94c3f7f More history.
fixup 52490ce More history. #This was the higher of the two entries
Cuối chỉnh sửa: Tôi chỉ nhận thấy tôi đã vô tình sắp xếp lại lịch sử cam kết như một sự chuyển giao từ câu trả lời ban đầu của tôi. Trao đổi các dòng trong rebase thay đổi thứ tự bạn cam kết; sau khi chỉnh sửa, bạn có thể rebase lại và hoán đổi lại để quay lại lệnh commit ban đầu.
Hãy nhớ rằng việc thay đổi bất kỳ cam kết trước đây đã ghi lại lịch sử và bạn sẽ nhận được băm hoàn toàn mới kể từ lần commit đó.Đừng làm điều đó nếu cam kết đã được xuất bản. – aragaer
@aragaer Tôi đã cố tình quy định rằng tôi viết lại lịch sử _LOCAL_. – Val