Các lệnh git thường dùng

Các thuật ngữ:
working directory: các file trên local PC
stage area: nơi lưu trữ thay đổi của file để có thể đưa lên repository, chỉ những thay đổi được đưa lên stage mới được đưa lên git repository.
git repository: nơi lưu trữ thay đổi được lưu trữ remote

Các lệnh:
git init: Tạo git repository
git status: Xem trạng thái các file ở working directory và stage area
git add: Thêm thay đổi của file từ working directory lên stage area
git commit: Lưu thông tin thay đổi của file trê stage area
git push: Lưu thông tin thay đổi của file từ stage area lên git repository
git log: Hiện thị thay đổi, các commit đã thực hiện
git show <git_hash_id>: Hiện thị thay đổi cho từng commit
git diff: Xem thay đổi của file ở trên git repository và trên working directory
gitk: Trên local PC sẽ hiển thị ra màn hình GUI (Graphic User Interface)
git checkout — <file>: Bỏ thay đổi của file trên working directory
git reset HEAD <file>: Bỏ thay đổi của file khi đã được đưa lên stage area
git branch -a: Hiển thị tất cả các branch
git checkout <branch>: Chuyển nhánh
git checkout -b <branch>: Tạo nhánh mới và chuyển sang làm việc với nhánh đó
git merge: Kéo thay đổi từ branch B —> branch A thì làm như sau:
– git checkout A
– git merge B
git branch -D <branch>: xoá branch trên local
git reset –soft <to_commit_id>: Quay về <commit_id> và code sẽ ở trạng thái chưa commit (trạng thái ở stage area) những thay đổi kể từ <commit_id>
git branch -D <branch>: xoá branch trên local
git reset –mixed <to_commit_id>: Quay về <to_commit_id> và code sẽ ở trạng thái chưa add (trạng thái ở working directory) những thay đổi kể từ <to_commit_id>
git reset –hard <to_commit_id>: Quay về <to_commit_id> và code sẽ bỏ đi những thay đổi kể từ <to_commit_id> (không lưu cả trên working directory và stage như –mixed và –soft)
git revert <commit_id>: Xoá những thứ đã thay đổi trong <commit_id> mà vẫn giữ nguyên thay đổi ở những commit sau <commit_id>. Nên hạn chế dùng lệnh này vì khi thay đổi nội dung trong một commit trước đó, thì có thể ảnh hưởng tới những commit sau mặc dù nội dung của những commit sau vẫn được giữ nguyên. (Khác với reset, nội dung những commit sau sẽ mất theo: –hard, hoặc lưu ở stage area: –soft, hoặc lưu ở working directory: –mixed)
git remote add origin <git_url>: Trỏ local repository tới remote repository
git remote -v: Kiểm tra xem local repository đang trỏ tới những repository nào
git push -u origin master: Push local repository lên remote repository
git config –global credential.helper store: Lưu trữ thông tin login git trong file ~/.git-credentials. Cách này không nên dùng vì thông tin sẽ không được mã hoá.
git config –global credential.helper “cache –timeout=18000”: Sẽ lưu thông tin login git trong 5 tiếng vào cache. Tiện hơn thì dùng gnome-keyring, git ssh
git clone <git_url>: Clone project về
git pull: Pull(keó) những thay đổi của project về
git push origin <branch>: Push thay đổi lên nhánh <branch>
git fetch origin <branch>: Kéo một branch từ remote về local để sau này có thể checkout ra. (Dùng trong trường hợp muốn review code, test code offline khi nhận được pull request). Sau khi fetch được về rồi thì có thể checkout sang nhánh đó để test: git checkout <branch>. Ở đây branch là nhánh vừa fetch về.
git checkout — .: Xoá bỏ trạng thái thay đổi của các file ở trên working directory

Conflict
Conflict xảy ra khi 2 người cùng sửa một file, cùng sửa một dòng.
Cách 1: Sử dụng rebase sửa conflict:
– git checkout <branch>: checkout ra branch cần sửa
– git rebase master: rebase trên branch master mới sẽ tạo ra conflict
– Sửa conflict trên file trực tiếp
– git add <file>: Add file đã sửa xong phần conflict vào stage area
– git rebase –continue: Apply phần đã sửa đó vào master (master mới)
– git push origin <branch> -f: Push những thay đổi đó vào branch đã sửa. -f là viết tắt của force.
– Sau đó có thể merge pull request như bình thường

Cách 2: Sử dụng cách merge (3-way merge). Bị lỗi ở nhánh nào thì người phát triển nhánh đó sẽ sửa. Cá nhân mình thấy cách 2 dễ làm hơn cách 1.
– git checkout master: checkout sang master
– git pull: update thay đổi từ master trên remote repository
– git checkout <branch>: Quay lại branch cần sửa conflict
– git merge master: Merge master vào nhánh hiện tại, lúc này sẽ tạo ra conflict
– Sửa conflict trên file trực tiếp
– git add <file>: Add file đã sửa
– git commit -m “message”: Commit các thông tin thay đổi
– git push origin <branch>: Push lên nhánh cần sửa
– Sau đó có thể merge pull request như bình thường

Tìm kiếm trong git repository
 git grep -inrw <keyword>: tìm từ khóa keyword ở trong git repository

git diff > file.patch: Tạo file patch
git apply –check file.patch: Check xem có phát sinh lõi khi apply diff không
git apply file.patch: Thực tế apply file patch vào

git submodule add <git repos> <path_to_save>: Add submodule repos vào project
Để xóa thì tham khảo cách sau:

  • Delete the relevant section from the .gitmodules file.
  • Stage the .gitmodules changes git add .gitmodules
  • Delete the relevant section from .git/config.
  • Run git rm –cached path_to_submodule (no trailing slash).
  • Run rm -rf .git/modules/path_to_submodule (no trailing slash).
  • Commit git commit -m “Removed submodule “
  • Delete the now untracked submodule files rm -rf path_to_submodule

Tham khảo:
https://git-scm.com/docs/gittutorial
https://www.atlassian.com/git/tutorials

Share

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *