Cách sử dụng Git: Hướng dẫn tham khảo
Các group nhà phát triển và người bảo trì phần mềm open-souce thường quản lý các dự án của họ thông qua Git, một hệ thống kiểm soát version phân tán hỗ trợ cộng tác.Git Cheat Sheet
Hướng dẫn kiểu ghi chú này cung cấp một tra cứu nhanh đến các lệnh hữu ích để làm việc và cộng tác trong repository lưu trữ Git. Để cài đặt và cấu hình Git, hãy nhớ đọc “ Cách đóng góp cho nguồn mở: Bắt đầu với Git ”.
Cách sử dụng Hướng dẫn này:
- Hướng dẫn này ở định dạng ghi chú với các đoạn dòng lệnh độc lập.
- Chuyển đến bất kỳ phần nào có liên quan đến nhiệm vụ bạn đang cố gắng hoàn thành.
-  Khi bạn thấy highlighted texttrong các lệnh của hướng dẫn này, hãy nhớ rằng văn bản này nên tham chiếu đến các commit và file trong repository lưu trữ của bạn .
Cài đặt và Khởi tạo
Kiểm tra version Git của bạn bằng lệnh sau, lệnh này cũng sẽ xác nhận Git đã được cài đặt.
- git --version 
Bạn có thể khởi tạo folder  làm việc hiện tại  của bạn  dưới dạng repository  Git với init .
- git init 
Để sao chép repository  Git hiện có được lưu trữ từ xa, bạn sẽ sử dụng git clone với URL của repository  hoặc vị trí  server  (trong trường hợp sau, bạn sẽ sử dụng ssh ).
- git clone https://www.github.com/username/repo-name 
Hiển thị repository từ xa của folder Git hiện tại của bạn.
- git remote 
Để có  kết quả  dài dòng hơn, hãy sử dụng cờ -v .
- git remote -v 
Thêm ngược dòng Git, có thể là một URL hoặc có thể được lưu trữ trên  server  (trong trường hợp sau là kết nối với ssh ).
- git remote add upstream https://www.github.com/username/repo-name 
Dàn dựng
Khi bạn đã sửa đổi một file và đã đánh dấu nó để thực hiện trong lần commit tiếp theo, nó được coi là một file theo giai đoạn.
Kiểm tra trạng thái của repository Git của bạn, bao gồm các file được thêm vào không phải là theo giai đoạn và các file được theo giai đoạn.
- git status 
Để phân chia các file  đã sửa đổi, hãy sử dụng lệnh add , lệnh này bạn có thể chạy nhiều lần trước một lần  commit . Nếu bạn  áp dụng các thay đổi  tiếp theo mà bạn muốn đưa vào lần  commit  tiếp theo, bạn phải chạy add lần nữa.
 Bạn có thể chỉ định file  cụ thể bằng add .
- git add my_script.py 
Với . bạn có thể thêm tất cả các file  trong folder  hiện tại, bao gồm các file  bắt đầu bằng . .
- git add . 
Nếu bạn muốn thêm tất cả các file  trong folder  hiện tại cũng như các file  trong folder  con, bạn có thể sử dụng cờ -all hoặc -A :
- git add -A 
Bạn có thể xóa file  khỏi dàn trong khi vẫn giữ lại các thay đổi trong folder  làm việc  của bạn  bằng cách reset .
- git reset my_script.py 
Commit
Khi bạn đã sắp xếp các bản cập nhật của bạn , bạn đã sẵn sàng commit chúng, điều này sẽ ghi lại những thay đổi bạn đã thực hiện đối với repository .
 Để  commit  các file  theo giai đoạn, bạn sẽ chạy lệnh commit với thông báo  commit  có ý nghĩa  của bạn  để bạn có thể theo dõi các  commit .
- git commit -m "Commit message" 
Bạn có thể cô đọng hệ thống tất cả các file được theo dõi với việc commit chúng trong một bước.
- git commit -am "Commit message" 
Nếu bạn cần sửa đổi thông báo  commit   của bạn , bạn có thể làm như vậy với cờ --amend .
- git commit --amend -m "New commit message" 
Chi nhánh
Một nhánh trong Git là một con trỏ có thể di chuyển đến một trong các commit trong repository lưu trữ, nó cho phép bạn tách biệt công việc và quản lý việc phát triển và tích hợp tính năng. Bạn có thể tìm hiểu thêm về các nhánh bằng cách đọc tài liệu Git .
 Liệt kê tất cả các nhánh hiện tại bằng lệnh rẽ branch . Dấu hoa thị ( * ) sẽ xuất hiện bên cạnh chi nhánh hiện đang hoạt động của bạn.
- git branch 
Tạo một chi nhánh mới. Bạn sẽ vẫn ở trên chi nhánh hiện đang hoạt động của bạn cho đến khi bạn chuyển sang chi nhánh mới.
- git branch new-branch 
Chuyển sang bất kỳ chi nhánh hiện có nào và kiểm tra nó vào folder làm việc hiện tại của bạn.
- git checkout another-branch 
Bạn có thể hợp nhất việc tạo và kiểm tra chi nhánh mới bằng cách sử dụng cờ -b .
- git checkout -b new-branch 
Đổi tên tên chi nhánh của bạn.
- git branch -m current-branch-name new-branch-name 
Hợp nhất lịch sử của chi nhánh đã chỉ định vào lịch sử mà bạn hiện đang làm việc.
- git merge branch-name 
Hủy hợp nhất, trong trường hợp có xung đột.
- git merge --abort 
Bạn cũng có thể chọn một  commit  cụ thể để hợp nhất với cherry-pick với chuỗi tham chiếu đến  commit  cụ thể.
- git cherry-pick f7649d0 
Khi bạn đã hợp nhất một chi nhánh và không cần chi nhánh nữa, bạn có thể xóa nó.
- git branch -d branch-name 
Nếu bạn chưa hợp nhất một nhánh với chính, nhưng chắc chắn bạn muốn xóa nó, bạn có thể buộc xóa một nhánh.
- git branch -D branch-name 
Cộng tác và Cập nhật
 Để  download  các thay đổi từ một repository  khác, chẳng hạn như ngược dòng từ xa, bạn sẽ sử dụng fetch .
- git fetch upstream 
Hợp nhất các  commit  đã tìm nạp.  Lưu ý  một số kho có thể sử dụng master thay vì main .
- git merge upstream/main 
Đẩy hoặc truyền các commit chi nhánh local của bạn đến chi nhánh repository từ xa.
- git push origin main 
Tìm nạp và hợp nhất bất kỳ commit nào từ nhánh theo dõi từ xa.
- git pull 
Kiểm tra
Hiển thị lịch sử commit cho chi nhánh hiện đang hoạt động.
- git log 
Hiển thị các commit đã thay đổi một file cụ thể. Điều này theo sau file dù đổi tên file .
- git log --follow my_script.py 
Hiển thị các  commit  nằm trên một nhánh chứ không phải ở nhánh khác. Điều này sẽ hiển thị các  commit  trên a-branch không nằm trên b-branch .
- git log a-branch..b-branch 
Xem log  tham chiếu ( reflog ) để biết thời điểm các mẹo của các nhánh và các tài liệu tham khảo khác được cập nhật lần cuối trong repository  lưu trữ.
- git reflog 
Hiển thị bất kỳ đối tượng nào trong Git qua chuỗi commit hoặc băm của nó ở định dạng dễ đọc hơn cho con người.
- git show de754f5 
Hiển thị các thay đổi
 Lệnh git diff hiển thị các thay đổi giữa các  commit , các nhánh và hơn thế nữa. Bạn có thể đọc đầy đủ hơn về nó thông qua tài liệu Git .
So sánh các file đã sửa đổi trên khu vực dàn dựng.
- git diff --staged 
Hiển thị sự khác biệt của những gì nằm trong a-branch nhưng không nằm trong b-branch .
- git diff a-branch..b-branch 
Hiển thị sự khác biệt giữa hai commit cụ thể.
- git diff 61ce3e6..e221d9c 
Stashing
 Đôi khi bạn sẽ thấy rằng bạn đã  áp dụng các thay đổi  đối với một số mã, nhưng trước khi hoàn thành, bạn phải bắt đầu làm việc khác. Bạn chưa sẵn sàng thực hiện những thay đổi mà bạn đã thực hiện cho đến nay, nhưng bạn không muốn mất công. Lệnh git stash sẽ cho phép bạn lưu các sửa đổi local  và hoàn nguyên trở lại folder  làm việc phù hợp với  commit  HEAD  mới nhất .
Lưu trữ công việc hiện tại của bạn.
- git stash 
Xem những gì bạn hiện đã lưu trữ.
- git stash list 
Kho lưu trữ của bạn sẽ được đặt tên là stash@{0} , stash@{1} , v.v.
Hiển thị thông tin về một kho cụ thể.
- git stash show stash@{0} 
Để đưa các file  trong repository  hiện tại ra khỏi kho trong khi vẫn giữ lại kho, hãy sử dụng apply .
- git stash apply stash@{0} 
Nếu bạn muốn chuyển các file  ra khỏi repository  và không cần lưu trữ nữa, hãy sử dụng pop .
- git stash pop stash@{0} 
Nếu bạn không còn cần các file  được lưu trong một kho cụ thể, bạn có thể drop repository  đó.
- git stash drop stash@{0} 
Nếu bạn đã lưu nhiều repository  và không còn cần sử dụng bất kỳ mục nào trong số đó, bạn có thể sử dụng clear để xóa chúng.
- git stash clear 
Bỏ qua file
 Nếu bạn muốn giữ các file  trong folder  Git local   của bạn , nhưng không muốn gửi chúng vào dự án, bạn có thể thêm các file  này vào file  .gitignore  của bạn  để chúng không gây ra xung đột.
 Sử dụng editor  chẳng hạn như nano để thêm file  vào file  .gitignore .
- nano .gitignore 
Để xem các ví dụ về file  .gitignore , bạn có thể xem .gitignore mẫu .gitignore của GitHub.
Rebasing
Một rebase cho phép ta di chuyển các nhánh xung quanh bằng cách thay đổi commit mà chúng dựa trên. Với việc phục hồi, bạn có thể xóa hoặc tạo lại các commit .
 Bạn có thể bắt đầu rebase bằng cách gọi số lượng  commit  bạn đã thực hiện mà bạn muốn rebase ( 5 trong trường hợp bên dưới).
- git rebase -i HEAD~5 
Ngoài ra, bạn có thể rebase dựa trên một chuỗi commit hoặc băm cụ thể.
- git rebase -i 074a4e5 
Khi bạn đã thu gọn hoặc đặt lại từ khóa cho các  commit , bạn có thể hoàn thành cơ sở lại chi nhánh  của bạn  trên đầu version  mới nhất của mã ngược dòng của dự án.  Lưu ý  một số kho có thể sử dụng master thay vì main .
- git rebase upstream/main 
Để tìm hiểu thêm về khôi phục và cập nhật, bạn có thể đọc Cách làm lại căn cứ và cập nhật yêu cầu kéo , cũng có thể áp dụng cho bất kỳ loại commit nào.
Hoàn nguyên và Đặt lại
 Bạn có thể hoàn nguyên các thay đổi mà bạn đã thực hiện trên một  commit  nhất định bằng cách sử dụng revert . Cây làm việc của bạn  cần  phải sạch sẽ để đạt được điều này.
- git revert 1fc6665 
Đôi khi, kể cả sau khi rebase, bạn cần đặt lại cây làm việc của bạn . Bạn có thể đặt lại về một commit cụ thể và xóa tất cả các thay đổi bằng lệnh sau.
- git reset --hard 1fc6665 
Để buộc đẩy  commit  không xung đột đã biết  mới nhất  của bạn vào repository  root , bạn  cần  sử dụng --force .
 Cảnh báo : Lực lượng đẩy đến nhánh chính (đôi khi là master ) thường bị khó chịu trừ khi có lý do thực sự quan trọng để làm điều đó. Sử dụng một cách tiết kiệm khi làm việc trên repository   của bạn  và cố gắng tránh điều này khi bạn đang cộng tác.
- git push --force origin main 
Để xóa các file  và folder  con chưa được theo dõi local  khỏi folder  Git cho một nhánh hoạt động sạch, bạn có thể sử dụng git clean .
- git clean -f -d 
Nếu bạn cần sửa đổi repository local của bạn để nó trông giống như nhánh chính ngược dòng hiện tại (nghĩa là có quá nhiều xung đột), bạn có thể thực hiện khôi phục cài đặt root .
 Lưu ý : Thực hiện lệnh này sẽ làm cho repository  local  của bạn trông giống hệt như ngược dòng. Bất kỳ  commit  nào bạn đã thực hiện nhưng không được đưa vào thượng nguồn sẽ bị hủy bỏ .
- git reset --hard upstream/main 
Kết luận
Hướng dẫn này bao gồm một số lệnh Git phổ biến hơn mà bạn có thể sử dụng khi quản lý repository và cộng tác trên phần mềm.
Bạn có thể tìm hiểu thêm về phần mềm nguồn mở và sự cộng tác trong loạt bài hướng dẫn Giới thiệu về Nguồn mở của ta :
- Cách đóng góp cho nguồn mở: Bắt đầu với Git
- Cách tạo yêu cầu kéo trên GitHub
- Cách Rebase và Cập nhật một yêu cầu kéo
- Cách duy trì các dự án phần mềm nguồn mở
Có nhiều lệnh và biến thể khác mà bạn có thể thấy hữu ích như một phần công việc của bạn với Git. Để tìm hiểu thêm về tất cả các tùy chọn có sẵn của bạn, bạn có thể chạy phần sau để nhận thông tin hữu ích.
- git --help 
Bạn cũng có thể đọc thêm về Git và xem tài liệu của Git từ trang web chính thức của Git .
Các tin liên quan
 

