Git¶
Merge two Git repositories¶
https://stackoverflow.com/questions/1425892/how-do-you-merge-two-git-repositories
Link local repo to remote¶
git remote add origin <link_to_remote_repo>
For example,
git remote add origin git@github.com:vutang/test_git_repo.git
All remote repo can be listed by using:
git remote -v
The results look like:
origin git@github.com:vutang/test_git_repo.git (fetch)
origin git@github.com:vutang/test_git_repo.git (push)
Branches¶
When a first commit is commited by git commit -m "mesage". A master branch is created.
git push origin master will push your local branch to remote.
- Create a new local branch:
git branch <branch-name>. - Switch to new branch:
git checkout <branch-name> - Push to remote repo:
git push <remote-name> <branch-name> - Pull a remote branch to local:
git checkout <branch-name>
Before,
* master
remotes/origin/HEAD -> origin/master
remotes/origin/branch1
remotes/origin/master
After,
* branch1
master
remotes/origin/HEAD -> origin/master
remotes/origin/branch1
remotes/origin/master
-
merge branches
git merge <source> <dest>
Commit¶
- Revert a commit in a branch:
git reset --hard <commit-hash-value>
Quản lý và đồng bộ nhánh (master & dev)¶
Kéo code mới nhất từ master về dev¶
Sử dụng khi nhánh master có cập nhật mới và bạn muốn lấy các thay đổi đó về dev để tiếp tục làm việc.
- Sử dụng Merge (an toàn, khuyên dùng): giữ nguyên lịch sử thực tế, tạo thêm 1 merge commit.
- Sử dụng Rebase (lịch sử thẳng hàng): bốc các commit riêng của
devđặt lên trên cùng củamaster.
Xử lý commit lỗi đã đẩy lên remote¶
Khi nhánh dev đang chứa một commit bị lỗi và bạn muốn hoàn tác nó.
- Cách an toàn (dùng Revert): tạo một commit mới mang nội dung đảo ngược, không làm hỏng lịch sử chung của team.
git log --oneline -n 5 # Lấy mã hash của commit lỗi (VD: a1b2c3d)
git revert <mã_commit> # Tạo commit đảo ngược
git push origin dev # Đẩy lên remote bình thường
- Cách xóa vĩnh viễn (dùng Reset): xóa không để lại dấu vết (cần cẩn thận nếu team dùng chung nhánh).
git reset --hard HEAD~1 # Quay lùi lại 1 commit để bỏ commit mới nhất
git push origin dev --force-with-lease
Đồng bộ tuyệt đối: ép dev giống hệt master (100%)¶
Sử dụng khi nhánh dev (cả local lẫn remote) bị rác lịch sử quá nhiều và bạn muốn nó trở thành bản sao hoàn hảo của master.
Warning
Thao tác này sẽ xoá vĩnh viễn các commit riêng trên dev.
- Cách A: ghi đè bằng Reset (nhanh chóng)
git checkout dev
git fetch origin
git reset --hard origin/master # Ép nhánh local giống hoàn toàn master
git push origin dev --force-with-lease # Ghi đè nhánh remote trên server
- Cách B: xóa hẳn và tạo lại (triệt để nhất)