1. Khác biết giữa git pull branch_Name và git merge branch_Name
-> git pull sẽ kéo code từ trên web về mà merge vào nhánh local hiện tại của mình
-> git merger branch_Name sẽ merge nhánh local của mình với nhanh local hiện tại
Khi merge thì chú ý nên dùng git pull thì hơn. Nếu mình fix tại 1 branch thì hãy check commit và pull hết về rồi hãy merge
Merge code và push lên github/gitlab: giả sử merge branchA vào branchB
C1(Dùng git merge):
B1. git checkout brA
B2. git pull origin brA
B3. git checkout brB
B4. git pull brB
B5. git merge brA (Nhớ là không có tham số nào đằng sau cả)
B6. Nếu có conflict đi đến B7
Nếu không đi đến B9(Không có confilct thì nó sẽ tự động add và commit tại local luôn)
B7. Sửa conflict
B8. Commit với message "merge brA into brB"
B9. Push code lên github/gitLab
C2(Dùng git pull):
B1. git checkout brB
B2. git pull origin brB
B3. git pull origin brA
B4. push nó lên
2. Sau mỗi thao tác commit hoặc merge thì đều nên dùng git log --oneline để check.
3. Revert lại bản commit (Đây là 1 lệnh rất nguy hiểm, không được làm điều này nếu có ai đó đã pull code branch này của mình về, vì khi người ta update và push lên, người ta sẽ push lại cả cái mình đã revert)
C1->C2->C3->C4
muốn revert lại C2 và đè lên cái commit C3,C4.
B0. Back up lại code của C4
B1. git reset --hard check-sum(mã hash của C2) (nếu dùng git reset check-sum thì là soft reset, tức là file thay đổi sẽ được đưa vào vùng modified chứ không mất hẳn như hard reset)
B2. thực hiện chỉnh sửa lại code
B3. git commit
B4. git push --force origin brName hoặc git push -f origin master
4. Lấy các branch mới về
C1. git fetch origin
C2. git pull (không tham số)
5. Chuyển folder trong git bash
-> Để chuyển folder trong git bash, ta dùng lệnh: cd .. / cd link
6. Clone repository
$ git clone https://github.com/libgit2/libgit2
7. Trong gitbash để sửa 1 file(ví dụ index.html)
$ vim index.html
8. Thoát vim
B1. Ấn i để insert
B2. Ấn esc để save
B3. :wq để thoát
9. Xem khác biệt modified file
$ git diff
10. Xem khác biệt trong staged file
$ git diff --staged
11. Commit bỏ qua staging area. File được chỉnh sửa sẽ đi vào commit luôn. (Câu lệnh này chỉ đẩy vào committed area các file tracked mà bỏ qua staging area
, nếu các file untrack thì dùng câu lệnh này cũng sẽ không được add vào staged area hoặc commited area)
$ git commit -a -m 'added new benchmarks'
12. Để xem commit history
$ git log
$ git log --oneline
13. Xem commit history và merge history
$ git log --oneline --graph
14. Để giới hạn số lần log ta dùng câu lệnh
$ git log --since=2.weeks (Lấy ra lịch sửa commit 2 tuần trở lại đây)
15. Unstaging a Staged File
$ git reset HEAD <file>... to unstage.
Khi 1 file là staged file thì có thể reset để đứa nó về modified area.
16. Unmodified file a modified file
$ git checkout --file
Khi 1 file thay đổi. Để lấy lại file như ban đầu ta dùng git checkout
17. xóa 1 branch trên local và lấy lại từ trên server(Sử dụng trong trường hợp branch đã quá rồi, hoặc branch trên server đã bị revert)
B1. git branch -d branchName
B2. git fetch origin
18. Git commit --amend
- Để thay đổi msg (mà ko thay đổi file) thì git commit --amend luôn
- Để thay đổi cả file và nội dung msg, ta làm như sau:
B1. git add fileName
B2. git commit --amend
hướng dẫn: https://kipalog.com/posts/Nhung-cach-khac-phuc-nham-lan-trong-Git
19. Để back lại 1 commit nào đó và quay trở lại bản commit mới nhất
- Để back 1 lại 1 commit nào đó
B1. git checkout abcdef(hash của commit đó)
- Để back lại bản commit mới nhất
B1. git checkout branchName
20. Khi gửi mail không được, hãy check phần mềm diệt virus hoặc firewall.
21. Để check history của 1 file trong git ta dùng 1 trong 2 cách sau:
C1. git log -- [fileName]
C2. gitk [fileName]
\\172.16.3.246\ShareForEveryone
22. Để discard changed file java
git checkout *.java
Sử dụng wildcard.