Git là một công cụ kiểm soát source code trên các kho lưu trữ trên thiết bị (local repository) và kho lưu trữ trên mạng (remote repository), hỗ trợ một dự án được lập trình song song bởi nhiều lập trình viên (developer). Và có nhiều dev sử dụng các tool để giúp cho việc đẩy code lên remote repository và kéo code về từ remote repository trở nên dễ dàng hơn. Nhưng hôm nay, em muốn tập trung vào mặt khác – các câu lệnh (command), để giúp cho các dev trông có vẻ “chuyên nghiệp” hơn phần nào. Cùng xem nhé!
Bài viết có hơi vui vui, mong mọi người không tiếp nhận được sự vui này đừng gạch đá nặng tay em rén lắm ạ 🙁
git config
Cùng set username và email của mình trong main configuration file nhé.
git config –global user.name
git config –global user.email
Cái này chỉ để check username và email thôi nhé
git config –global user.name=”Username”
git config –global user.email=”Email”
Cái này mới là set username và email nè
git init
Giờ thì khởi tạo 1 git repo 1 project mới (hoặc có thể anh chị em đã có)
git init
Cái này nhập trong thư mục gốc của dự án nhé
git clone
Clone cái project này từ remote repo về local repo nào
git clone [clone git url]
Cái này là lấy link trên phần clone của các nền tảng lưu trữ remote repo nhé
git branch (part 1)
Tại sao lại chia phần thì cuối bài em sẽ tiết lộ nhé 🙂 Tiếp tục nào, khi mà clone code về rồi thì xem qua mình đang ở nhánh nào nhé (dù ai cũng biết đang ở nhánh master hoặc main tuỳ theo setup của project). Nhưng còn các nhánh trên remote thì sao nhỉ?
git branch
Cái này chỉ xem các nhánh trên local thôi nhé, nhưng mà vừa clone về thì chỉ có một mà thôi 🙂
git branch -r
Cái này thì xem được các nhánh trên remote repo nè 🙂
git branch -a
Cái này đủ nhất 🙂 Xem được hết luôn từ local tới remote 🙂
Check xong thì tạo nhánh bắt đầu code đi ha.
git checkout -b branch-name
Cái này tạo branch mới, tuỳ thuộc các team mình làm việc sẽ có các rules cho việc đặt tên này đó nhé.
git status
Sau khi code một hồi mệt bở hơi tai (hoặc là code có một tẹo để luyện command 🙂 ) thì mình sẽ tới phần check trạng thái của những file đã thay đổi trong thư mục làm việc này (tức là thay đổi trên cả cái project nãy clone về ý ạ).
git status
Gõ cái này lên command thì cái nào màu xanh là anh chị em đã add để chuẩn bị commit code đó ạ, còn đỏ thì chưa nha. Nếu muốn xem kỹ hơn thì xuống phần dưới nha mọi người.
git diff (Phần dưới 🙂 )
Nếu ở trên mà mọi người chưa check được kỹ các thay đổi thì xuống phần này giúp em nha mọi người.
git diff
Command có gần này thôi, nhưng mà nó lên cho mọi người một list các chỉnh sửa trên các files luôn ạ.
git add
Check chỉnh đúng sai code thay đổi ổn áp rồi thì sang cái này nha mọi người, sang cái này phát là đi một đường luôn đó ạ.
git add [file name]
Cái này để add từng file tới stage/index trong thư mục làm việc. Nhưng em hay dùng cái dưới hơn, tại mình check ở trên hết rồi mà.
git add .
Cái này thì add hết sạch sành sanh luôn không thiếu một file vừa chỉnh sửa nào cả 🙂 Nhanh luôn ạ 🙂
git commit
Add xong thì commit lên thôi ha.
git commit -m “Mọi người điền cái message vào đây giúp Bảnh nha mọi người, điền xong cái đóng ngoặc enter là nó lưu hết lịch sử chỉnh sửa của code kèm username và email của của mình – người commit luôn đó ạ. Cái message này mọi người ghi chi tiết thì sau track lại dễ tìm dễ nhớ hơn rất nhiều đó ạ.”
Message thay lời em muốn nói rồi đó mọi người 🙂
git push
Giờ đến việc sung sướng nhất nào mọi người. Cùng push code lên thôi.
git push [remote] [branch]
Cái remote này thường là origin còn branch là tên nhánh, nhưng hiện mình chỉ đẩy lên nhánh của mình thôi thì em có một option khác cho tên branch hiện tại của mình là từ HEAD ạ, vì HEAD của git, tức nhánh hiện tại, đang là nơi mình nhắm tới để push, nên em hay làm thế này cho đỡ bị gõ nhầm tên nhánh, xoá đi sửa mệt lắm 🙂
git fetch
Này là để lấy những thay đổi mới nhất trên các branch trên remote repo nha mọi người.
git fetch -a
Mọi người hóng phần này đúng không ạ 🙂 Nhưng mà em để hết ở trên rồi 🙂 Mọi người tiếp tục phần dưới nha.
git branch (part 2)
Part 1 mà không có part 2 như bún đậu mà thiếu mắm tôm ạ, nên hôm nay em xin lên cho anh chị em một cực phẩm, một cực phẩm thật sự đó ạ. Đó là…
git checkout [branch]
git checkout kèm tên nhánh ạ. Vângg, và đó là git checkout kèm tên nhánh. Mọi người có thể checkout thoải mái, checkout vô hạn số lần mà không cần quan tâm gì cảaaaa. Mà nếu mọi người có checkout phải cái nhánh nào đang không có trên remote hay local, mong mọi người quay lại part 1 xem cách tạo branch mới ngay cho emmmm. Giá cho một lần checkout này là 48k đồng, nhưng hôm nay em lên cho mọi người một cái giá cho những ai comment và like nhanh nhất ở dưới này. Bao nhiêu ạ? Bao nhiêu ạ?… 0 đồng, là miễn phí luôn đó ạaaa, mọi người like và comment nhanh tay giúp emmm.
git pull
Thôi vui quá mất hay mọi người ạ 🙂 Giờ thì checkout xong rồi, ta cùng pull code của nhánh đó về thôi.
git pull [origin] [branch]
Gần giống git push đúng không ạ. Nghe bảo hai thằng này cùng cha khác ông nội. Tiếp nào.
git merge
Giờ mọi người muốn merge code hai branch vào nhau đúng không ạ? Em lại có luôn con hàng nóng hổi đây:
git merge branch-name
Cái này như anh chị em nào hay xem truyện thì nó như kiểu hai thằng hợp thể ý ạ, chỗ này mà sinh conflict thì fix rồi quay lại bước git add nha mọi người. Nếu không lỗi gì cả thì mọi người push lên luôn giùm em nha. Cả phần git pull cũng như này luôn 🙂
git reset
Cái này thất chương bí truyền nha mọi người 🙂
git reset HEAD file_name
Cái này chỉ reset có một file đã bị đưa vào staging area mà muốn bỏ, nói nôm na ra là đưa file đó về trạng thái của lần commit cuối cùng ấy ạ. Nhưng mà mỗi một file này chưa đủ sảng khoái mọi người ạ.
git reset –hard [remote]/[branch]
Ui chu choa! Cái này thì anh chị em tỉnh người luôn ạ 🙂 Quay ngược thời gian cả một nhánh cơ mà 🙂 Ác luôn ạ 🙂 Nhưng cái này cũng chỉ đưa nó về lần commit gần nhất thôi. Dưới em còn một siêu phẩm hơn 🙂
git reset –hard [commit-code]
Cái này thì em xin phép không phải bàn 🙂 Anh chị em hoá chúa tể thời gian luôn cũng được ạ 🙂 Em không có ý kiến gì đâu ạ 🙂
git stash
Chào các Nô-bi-ta, Xu-ka, Xê-kô, Chai-en và Đê-khi, Đô-rê-mon Bảnh xin cho anh chị em một công cụ ngưng đọng thời gian code đây ạ.
git stash
Đồng hồ ngưng đọng thời gian git stash, khi mọi người gõ lệnh này vào, mọi người lưu được hết các thay đổi trên local repo của mình, các file đã thay đổi cũng được reset về như chưa có chuyện gì xảy ra (nếu commit trước đó của file này bình thường 🙂 ). Mọi người có thể đi hái hoa, bắt bướm, hát hò, nhảy múa hay làm bất kì việc gì mình thích 🙂 Và rồi sau khi đã xong, ta cùng xuống cái dưới.
git stash pop
Khi đã xong những việc vui vẻ không liên quan tới nhánh, hãy cùng quay lại nhánh và git stash pop để ngày làm việc “trầm cảm” này lại tiếp tục nào 🙂 Những thay đổi mà ta đã stash ở trên bỗng chốc quay trở lại như chưa hề có gì xảy ra. Và đó là cách vận hành của Đồng hồ ngưng đọng thời gian git stash ạ.
Trên đây em làm mấy cái cơ bản thôi ạ, và nó theo luồng làm việc thông thường của em với happy case nên chưa động đến mấy cái nâng cao. Vậy nên mong mọi người đừng nói tại sao không làm mấy lệnh khoai hơn ạ 🙁 Có khoai hơn thì mong mọi người góp ý và ủng hộ em phần này để em ra phần sau bánh cuốn hơn ạ. Bảnh xin cảm ơn tất cả mọi người ạ.