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 text
trong 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