-
Notifications
You must be signed in to change notification settings - Fork 0
Hướng dân sử dụng cơ bản Git GitHub
Đầu tiên: Để có kho chứa GitHub bạn cần tạo tài khoản GitHub
- Đăng nhập vào GitHub sau khi bạn đã có tài khoản
- Một số tùy chọn để tạo một repository (repo) mới trên GitHub
- Nhập thông tin về repo như
repository name
,public or private
repo này, ... Cuối cùng là bấmCreate repository
để tạo
Sau khi mình đã tạo xong repo mới, lúc này repo hoàn toàn trống rỗng
Để kết nối repo trên GitHub (remote) với thư mục dự án tại máy tính của bạn (local) có thể làm theo các cách sau
Clone trực tiếp repo vừa tạo về máy
- Mở terminal tại thư mục dự bạn muốn đặt dự án và chạy lệnh
git clone <url>
Lúc này bạn đã clone repo trên GitHub về máy tính của bạn.
- Nếu bạn đã có thử mục dự án, tại thư mục này mở terminal và chạy lệnh
git init
Bây giờ tại thư mục dự án sẽ xuất hiện một file .git
(hiểu đơn giản là file này dùng để liên kết giữa remote và local, nên nếu xóa thì sẽ mất liên kết)
- Kết nối remote và local bằng lệnh
git remote add <remote_name> <url>
git --version
// or
git --v
git config --g user.name "name"
git config --g user.email "email"
git status
- chỉ định tệp cụ thể
git add <file_path>
Ví dụ: Bạn vừa thêm index.html vào dự án thì lệnh sẽ là git add index.html
- Thêm tất cả những thay đổi
git add .
// or
git add --all
git commit -m "nội dung commit"
- Đẩy toàn bộ thay đổi lên remote
git push
- Đẩy branch vào remote
git push -u origin branch_name
- Xóa một branch trên remote
git push -d origin branch_mane
git log
- Kiểm tra các nhánh hiện có ở local
git branch
- Kiểm tra các nhánh hiện có trên remote
git branch -a
- Đổi tên nhánh chính
git branch -M branch_name(main)
- Tạo và chuyển luôn sang nhánh mới - Tạo một nhánh có tên “branch_name” và hợp nhất (merge) nó với nhánh chính.
git checkout -b branch_name
- Xóa một nhánh tại local có tên: "branch_name" (branch đã được hợp nhất (push) vào remote repository)
git branch -d branch name
- Xóa một nhánh tại local có tên: "branch_name" (branch đã commit nhưng chưa hợp nhất vào remote repository)
git branch -D branch_name
- Chuyển nhánh
git checkout branch_name
git fetch origin
Điều này cho phép Cập Nhật
để xem những thay đổi trên GitHub của bạn. Khi thực hiện Fetch thì những nội dung ở local không bị thay đổi gì.
- Trước tiên bạn cần di chuyển về branch cần hợp nhất (ví dụ là branch_name1) (sử dụng lệnh checkout)
git checkout branch_name1
- Hợp nhất (ví dụ nhánh chỉ định hợp nhất là branch_name2)
git merge branch_name2
Điều này có nghĩa bạn vừa thực hiện hợp nhất nhánh branch_name2 vào nhánh branch_name1
- Kéo tất cả các thay đổi từ branch_name về local
git pull
- Kéo tất cả các thay đổi từ main về local
git pull origin main
- Kéo tất cả các thay đổi từ remote vào branch bạn đang làm việc
git pull origin
Lệnh pull
là sự kết hợp giữa lệnh fetch
và merge
- Di chuyển về nhánh nhận sự hợp nhất (ví dụ là nhánh branch_name1)
git checkout branch_name1
- Hợp nhất (ví dụ nhánh chỉ định hợp nhất là branch_name2)
git rebase branch_name2
So sánh giữa Merge
và Rebase
Thuộc tính | Merge | Rebase |
---|---|---|
Cách hoạt động | Tạo merge commit mới | Di chuyển commit lên đầu nhánh mục tiêu |
Lịch sử | Phân nhánh và có merge commit | Gọn gàng, tuyến tính |
Dễ theo dõi | Dễ thấy quá trình hợp nhất | Gọn nhưng khó thấy các nhánh ban đầu |
Xung đột | Dễ xử lý hơn | Có thể khó khăn nếu xung đột nhiều |
Khi nào dùng? | Khi làm việc nhóm, muốn giữ lịch sử đầy đủ | Khi muốn làm sạch lịch sử cá nhân |
Tóm lại:
- Merge: Chỉ lấy nội dung commit cuối cùng của hai nhánh, tích hợp tạo thành commit mới. Các commit trước đó được giữ nguyên không thay đổi.
- Rebase: Lấy code từ branch_name2, từ những commit ở branch_name2 tích hợp đồng thời tái tạo lại commit mới ở branch_name1 (Các commit đã tồn tại bị bỏ đi).
- Tạo commit đảo ngược commit có commit_id được chọn
git revert <commit_id>
- Xoá toàn bộ các commit trước đó, đưa branch về trạng thái của commit_id được chọn
git reset -hard <commit_id>
- Đưa branch về trạng thái của commit_id được chọn. Giữ nguyên tất cả thay đổi của file và các thay đổi ở stage. (Được khuyến khích sử dụng)
git reset -sort <commit_id>
- Bỏ thay đổi trong tracked files (file đã được theo dõi bởi Git)
git restore --source=HEAD --staged --worktree .
hoặc
git checkout -- .
Chỉ định một file cụ thể
git restore <file-path>
hoặc
git checkout -- <file_path>
Điều này sẽ khôi phục file về trạng thái cuối cùng trong commit gần nhất (HEAD), tất cả thay đổi trong các file đã sửa sẽ bị loại bỏ.
- Bỏ staged changes (những file đã được
git add
)
git restore --staged .
Chỉ định một file cụ thể
git restore --staged <file_path>
Điều này chỉ loại bỏ trạng thái staged, các thay đổi vẫn tồn trại trong working directory.
- Bỏ toàn bộ thay đổi trong cả staged và working directory
git reset --hard
Điều này sẽ khôi phục repo về trạng thái commit gần nhất (HEAD). Mọi thay đổi trong cả staged và working directory sẽ bị xóa hoàn toàn.
Lưu ý: Khi sử dụng git reset --hard
sẽ xóa không thể khôi phục
những thay đổi chưa được commit, vì vậy hãy cân nhắc kỹ trước khi thực hiện.
- Bỏ các file untracked (file chưa được add vào Git)
git clean -f
Chỉ định một file cụ thể
git clean -f <file_path>
Điều này sẽ xóa các file chưa được git theo dõi trong working directory. Bạn cũng có các tùy chọn thêm như -d
(xóa cả các thư mục untracked) và -n
(hiển thị những gì sẽ bị xóa mà không thực sự xóa).
Commands | Descriptions |
---|---|
git --version or git --v
|
Kiểm tra phiên bản git |
git config --g user.name "name" git config --g user.email "email"
|
Định cấu hình |
git status |
Kiểm tra trạng thái kho lưu trữ |
git add <file_path> |
Thêm tệp thay đổi để thực hiện commit |
git add . or git add --add
|
Thêm tất cả những thay đổi để thực hiện commit |
git commit -m "nội dung commit" |
Commit những thay đổi đã thêm |
git push |
Đẩy toàn bộ thay đổi lên remote |
git push -u origin branch_name |
Đẩy branch vào remote |
git push -d origin branch_name |
Xóa một branch trên remote |
git log |
Xem lịch sử làm việc với git |
git branch |
Kiểm tra các nhánh hiện có ở local |
git branch -a |
Kiểm tra các nhánh hiện có trên remote |
git branch -M branch_name(main) |
Đổi tên nhánh chính |
git checkout -b branch_name |
Tạo và chuyển luôn sang nhánh mới - Tạo một nhánh có tên “branch_name” và hợp nhất (merge) nó với nhánh chính. |
git branch -d branch name |
Xóa một nhánh tại local có tên: "branch_name" (branch đã được hợp nhất (push) vào remote repository) |
git branch -D branch_name |
Xóa một nhánh tại local có tên: "branch_name" (branch đã commit nhưng chưa hợp nhất vào remote repository) |
git checkout branch_name |
Chuyển nhánh |
git fetch origin |
Cập Nhật để xem những thay đổi trên GitHub của bạn. Khi thực hiện Fetch thì những nội dung ở local không bị thay đổi gì. |
git merge branch_name2 |
Hợp nhất (ví dụ nhánh chỉ định hợp nhất là branch_name2 với nhánh hiện tại) |
git pull |
Kéo tất cả các thay đổi từ branch_name về local |
git pull origin main |
Kéo tất cả các thay đổi từ main về local |
git pull origin |
Kéo tất cả các thay đổi từ remote vào branch bạn đang làm việc |
git rebase branch_name2 |
Hợp nhất (ví dụ nhánh chỉ định hợp nhất là branch_name2 với nhánh hiện tại) (Lưu ý: Lấy code từ branch_name2, từ những commit ở branch_name2 tích hợp đồng thời tái tạo lại commit mới ở branch_name1 (Các commit đã tồn tại bị bỏ đi) |
git revert <commit_id> |
Tạo commit đảo ngược commit có commit_id được chọn |
git reset -hard <commit_id> |
Xoá toàn bộ các commit trước đó, đưa branch về trạng thái của commit_id được chọn |
git reset -sort <commit_id> |
Đưa branch về trạng thái của commit_id được chọn. Giữ nguyên tất cả thay đổi của file và các thay đổi ở stage. (Được khuyến khích sử dụng) |
git restore --source=HEAD --staged --worktree . or git checkout -- .
|
Bỏ toàn bộ thay đổi trong tracked files (file đã được theo dõi bởi Git) |
git restore <file-path> or git checkout -- <file_path>
|
Bỏ thay đổi file được chỉ định trong tracked files (file đã được theo dõi bởi Git) |
git restore --staged . |
Bỏ staged changes (những file đã được git add) |
git restore --staged <file_path> |
Bỏ staged changes file được chỉ định (file đã được git add) |
git reset --hard |
Bỏ toàn bộ thay đổi trong cả staged và working directory |
git clean -f |
Bỏ các file untracked (file chưa được add vào Git) |
git clean -f <file_path> |
Bỏ file untracked được chỉ định (file chưa được add vào Git) |
- GitHub Desktop
- Sourcetree
- Fork
- Các IDE cũng đều có tích hợp sẵn git như JetBrain Rider, VisualStudio, VSCode,... Tất cả các công cụ trên đều là những ứng dụng Git GUI để giúp cho người dùng tương tác dễ dàng với Git hơn.