Hướng dẫn 1: Hãy thử sử dụng branch!

7. Merge bằng rebase

Khi merge branch issue3, nếu rebase nhánh issue3 trước thì cũng có thể hợp nhất lịch sử.

Tạm thời, hãy xóa merge trước đó.

$ git reset --hard HEAD~

History before rabase

Sau khi checkout với branch issue3, hãy thực hiện rebase đối với master.

$ git checkout issue3
Switched to branch 'issue3'
$ git rebase master
First, rewinding head to replay your work on top of it...
Applying: Thêm giải thích pull
Using index info to reconstruct a base tree...
<stdin>:13: new blank line at EOF.
+
warning: 1 line adds whitespace errors.
Falling back to patching base and 3-way merge...
Auto-merging myfile.txt
CONFLICT (content): Merge conflict in myfile.txt
Failed to merge in the changes.
Patch failed at 0001 Thêm giải thích pull

When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To check out the original branch and stop rebasing run "git rebase --abort".

Giống với lúc merge, xung đột tại myfile.txt sẽ phát sinh nên hãy chỉnh sửa.

Đến cả con khỉ cũng hiểu được lệnh Git
add: Đăng ký thay đổi trong index
<<<<<<< HEAD
commit: Lưu lại trạng thái của index
=======
pull: Lấy nội dung của remote repository
>>>>>>> issue3

Trường hợp rebase, sau khi đã chỉnh sửa chổ xung đột thì không commit, mà hãy chỉ định lựa chọn --continue trong lệnh rebase rồi thực hiện. Giả sử nếu là trường hợp xóa bỏ chính rebase thì hãy chỉ định lựa chọn --abort.

$ git add myfile.txt
$ git rebase --continue
Applying: Thêm giải thích pull

Current history

Như thế, branch master đã có thể merge fast-forward với branch issue3.

Sau khi checkout branch master hãy thử thực hiện merge.

$ git checkout master
Switched to branch 'master'
$ git merge issue3
Updating 8f7aa27..96a0ff0
Fast-forward
 myfile.txt |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

Nội dung cuối cùng của myfile.txt thì giống với merge nhưng lịch sử thì lại như sau.

Current history