Một vài tips hay ho khi sử dụng git (sử dụng command-line)
Đối với Backend dev, việc sử dụng command-line tool với git là khá cần thiết vì có thể môi trường làm việc không có sẵn GUI để sử dụng. Đồng thời sử dụng command-line trong nhiều trường hợp mang lại tốc độ tốt hơn so với sử dụng GUI. Vì thế tui cũng hay hướng dẫn mấy dev mới tập quen dần với git command-line
Git CLI có mấy tips khá là fun, giúp việc sử dụng git trở nên linh hoạt và dễ dàng
- Có khi nào bạn muốn commit 1 empty folder lên source code? Việc này là không thể vì git không nhận empty folder. Nhưng tình huống này rất hay xảy ra (trong trường hợp đang base source). Để giải quyết trường hợp này, rất đơn giản, ta tạo 1 file .gitkeep ko có nội dung và cho vào folder đó rồi commit bình thường
- Thi thoảng, khi chúng ta có 1 file trót “commit” lên repo, sau đó mới nhận ra file đó nên được cho vào ignore. Nhưng khi thêm file vào .gitignore thì không thấy nhận??? Vậy phải xử lý như thế nào? Rất đơn giản, bạn cần clear cache của git đi sau đó add lại là ok. Cú pháp
git rm -rf --cached .
git add .
git commit -m "fix ignore"
git checkout develop > git pull origin develop > git checkout -b hotfix_xxxx > git commit -m "message"
Các từdevelop, checkout...
này cứ lặp đi lặp lại. Có cách nào cho đơn giản không? Hãy dùng git alias. Đây là ví dụ sử dụng:
git cod
git ci -m “message”
git co branch
git lg
git sync remote_name
Và đây là nội dung alias tui hay add vào file .gitconfig
[alias]
co = checkout
br = branch
ci = commit
st = status
cod = "checkout develop"
pod = "pull origin develop"
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
sync = !git checkout develop && git pull $1 develop && git push origin develop && :
Vụ git lg
sẽ cho bạn nhìn git log theo dạng branch-tree với color vô cùng dễ nhìn (nhìn như GUI tool luôn):
- Có bao giờ bạn vừa làm việc với git3 của fsoft, vừa làm việc với git server của KH? Làm sao để source code trên máy chỉ cần có 1 bộ source, mà vẫn đảm bảo sync được giữa 2 repo git3 và git private của KH? Đó chính là khái niệm của
git remote
. Chắc ít người để ý đến cái từorigin
khi gõgit fetch origin
haygit push origin master
nhỉ. Mình đã gặp ở khá nhiều dev mới, quen sử dụng GUI và khi cần sync giữa 2 git server khác nhau, các bạn ấy copy source code và push lên. Wtf??? Đầu tiên phải nắm được 1 số khái niệm cơ bản:origin
ở đây hiểu nôm na là 1 cái tên của 1 git server, được đặt ra. Default làorigin
. Tuy nhiên 1 nước không thể có 2 vua, thế nên nếu làm việc với nhiều git server thì sẽ phải dùng các tên khác. Xem ví dụ cho dễ hiểu nhỉ:<br><br>
git remote add origin https://git3.fsoft.com.vn/hotgirlxxx
git remote add git_customer https://github.com/customer_like_girls
Vậy là chúng ta đã có 2 remote server khác nhau cùng nằm trong folder source code. Lúc nào cần kéo code từ remote A sync sang remote B thì ta chỉ cần git pull remoteA rồi push sang remoteB là được. Và như file alias tui làm ở trên thì đang quy ước origin
là remote name của git fsoft, còn xyz
là remote name của git KH. Vậy lúc ae trong team hô “xin em phát anh ơi” thì gõ: git sync xyz
=> Easy game.
Một vài tips hay ho hơn nữa sẽ được cung cấp sau khi bài viết đủ 100 likes hehehe…
1 comment
Bài viết hay, cho cục đá xây nhà này.