Tổng hợp các câu lệnh git hữu dụng

Hiện nay, việc sử dụng git để quản lý source code của dự án là điều không thể thiếu.
Dưới đây, là 1 số lệnh về git mà tôi thường dùng nhất.

Git config

git config --global user.name "nghialuutrung"  
git config --global user.email "nghialuu@gmail.com"  

Set up tên hiển thị trên pull --global được sử dụng để áp dụng cho tất cả các projects. Nếu bạn ko sử dụng --global thì settings sẽ chỉ dùng cho riêng project đó.

Git init

Khởi tạo Git repo cho code có sẵn

cd project/  
git init  

Clone một remote repo

git clone https://github.com/user/repository.git  

Update và merge branch hiện tại với một remote repo

git pull origin master  

với origin là remote repo, master là remote branch.

Nếu bạn không muốn merge những thay đổi của bạn, hãy sử dụng git fetch

Liệt kê các remote urls

git remote -v  

Thay đổi origin url

git remote set-url origin https://github.com/repo.git  

Kiểm tra status của worktree

git status  

Câu lệnh với commit

tạo một vài thay đổi file trong thư mục project,
sau đó add file cần commit

git add /đường dẫn đến file được thay đổi/  
git commit -m "Changed file"  

Xoá các thay đổi file(không muốn sử dụng) khi chưa commit những thay đổi đó

git stash  

Đổi message của commit cuối

git commit --amend -m "New commit mesage"  

Check log

Check các commit history

git log --oneline  

các commit được hiển thị 1 dòng với tên commit và commit ID
hoặc để xem chi tiết hơn ta dùng

git log  

ở đây thông tin sẽ hiển thị đầy đủ hơn với mã băm SHA-1, message của commit, tên tác giả, thời gian.

Di chuyển HEAD đến commit

nếu muốn sử dụng di chuyển HEAD hiện tại của wroktree tới commit nào để sử dụng code:

git checkout 91651ef  

với 91651ef là commit ID lấy ở trong khi check git log --oneline

Undo commit

Undo commit, vẫn giữ thay đổi ở local

git reset --soft HEAD~1  

Undo commit, không giữ thay đổi ở local

git reset --hard HEAD~1  

Push local commits sang nhánh remote

git push origin master  

Gộp 2 hoặc nhiều commit vào commit cũ hơn của branch

git rebase -i HEAD~2  

ở đây HEAD~2 là gộp thằng commit gần nhất vào thằng commit cũ hơn nó trong branch

Git Conflict

Khi làm việc nhóm, pull, push, merge code, sẽ có trường hợp hai người cùng chỉnh sửa một file, một dòng code, khi đồng bộ sẽ xảy ra conflict.
Khi bạn làm việc với nhiều branch, di chuyển giữa các branch, commit, sửa chung một dòng code, cũng sẽ xảy ra conflict.
Cách giải quyết:

  • cập nhật code mới nhất ở branch chính của repo (ví dụ: master) git pull origin master

  • Trong file bị conflict thì git gom hết nội dung của hai branch lại và chỉ rõ cho ta là bị conflict ở dòng nào, dòng nào thuộc branch nào. Ở trên HEAD tức là cái commit cuối cùng của branch mà mình đang đứng.

  • Công việc của mình bây giờ là chỉnh sửa file này lại theo ý mình muốn, mình giữ lại thay đổi của cả branch nào, xoá cái nào đi.

  • cuối cùng là commit và push lên bình thường.

Related article