Bạn hiểu được bao nhiêu phần về Git? Đâu là những vấn đề cơ bản bạn phải nắm chắc nếu muốn chinh phục câu lệnh này? Hãy cùng tìm hiểu tại bài viết dưới đây nhé!
Mục lục
- 1 Một số vấn đề trong Git
- 1.1 Thế nào là repository, branch?
- 1.2 Làm thế nào để xoá một branch ở phía local, làm thế nào để xoá một branch remote?
- 1.3 Xoá local branch và remote branch lưu ở local
- 1.4 Xoá remote branch
- 1.5 Làm thế nào để push một branch ở local lên remote dưới một cái tên khác?
- 1.6 Thế nào là git rebase? Phân biệt rebase với merge?
- 1.7 Thế nào là git stash?
- 1.8 Làm thế nào xoá bỏ trạng thái của một vài commit gần đây?
- 1.9 Làm thế nào để gộp một vài commit thành 1 commit duy nhất?
- 1.10 Phân biệt git reset, git reset –hard, git reset –soft
Một số vấn đề trong Git
Bấy nhiêu vấn đề dưới đây sẽ là bấy nhiêu điều các bạn cần phải hiểu về Git nếu muốn chinh phục câu lệnh này!
Thế nào là repository, branch?
Repository được hiểu là một kho chứa toàn bộ project bao gồm thông tin chi tiết, source code, lịch sử thay đổi và nội dung thay đổi của từng cá nhân đến project. Dữ liệu của repository được lưu trong thư mục .git. Nếu như bạn muốn theo dõi một dự án cũ trong Git, việc đầu tiên là bạn cần ở trong thư mục của project đó và gõ lệnh: $ git init Hoặc bạn có thể tạo một bản sao của một repository có sẵn bằng lệnh: $ git clone [url].
Branch được hiểu là nhánh của repository, mỗi nhánh hoạt động riêng biệt và không ảnh hưởng đến các nhánh khác. Tuy nhiên tuỳ thuộc nhu cầu của người dùng, việc gộp các nhánh lại có thể thưc hiện được bằng thao tác merge.
Làm thế nào để xoá một branch ở phía local, làm thế nào để xoá một branch remote?
Trước tiên, ta cần hiểu remote và local là gì. Remote nghĩa là lưu trữ từ xa, còn local là lưu trữ cục bộ.
- Remote repository được lưu ở server sẽ lưu trữ những remote branch. Ta có thể kiểm tra danh sách những remote branch hiện có bằng lệnh: $ git branch -r
- Local repository được lưu tại máy cá nhân sẽ lưu trữ những local branch. Tương tự, việc kiểm tra những local branch hiện có cũng được thực hiện như sau: $ git branch Sự khác biệt đến từ -r hay –remote để thể hiện là thao tác đang thực hiện với remote branch. Tuy nhiên thao tác xoá ở đây sẽ nói đến việc xoá local branch, remote branch lưu ở local và remote branch. Cụ thể:
Xoá local branch và remote branch lưu ở local
Thao tác này được thực hiện khi đang ở branch khác.
- Nếu đã được merge với branch hiện tại và push lên remote nếu liên kết với remote branch: $ git branch -d <branch_name> $ git branch -d -r <branch_name>
- Xoá thẳng tay không cần lý do: $ git branch -D <branch_name> $ git branch -D -r <branch_name>
Xoá remote branch
Quá trình này được thực hiện khi đang ở branch cùng tên với remote branch muốn xoá. $ git push <remote_name> -d <branch_name>
Làm thế nào để push một branch ở local lên remote dưới một cái tên khác?
Bình thường, việc push một branch ở local lên remote branch được thực hiện bằng cách: $ git push <remote_name> <branch_name> Tuy nhiên việc push dưới một tên khác sẽ có khác biệt, cụ thể: $ git push <remote_name> <local_branch_name>:<remote_branch_name>
Thế nào là git rebase? Phân biệt rebase với merge?
Rebase là việc tích hợp các thay đổi từ nhánh này vào nhánh khác. Trong Git, có 2 cách để thực hiện công việc này đó là rebase và merge.
Với Rebase:
$ git checkout <branch_name> $ git rebase <rebase_branch_name>
- Lấy code từ rebase_branch_name sau đó từ những commit ở đó tạo ra những commit tương tự lên branch_name. Thực hiện rebase thì các commit đã tồn tại bị bỏ đi và tái tạo lại các commit tương tự nhưng thực ra là khác biệt. Điều này làm lịch sử commit ở local và remote khác nhau.
- Đặc điểm: các commit của nhánh được tạo mới sẽ nằm liền mạch, và các commit của rebase-branch sẽ là các commit mới nhất.
Với merge:
$ git checkout <branch_name> $ git merge <branch_2_name>
- git dùng 2 bản commit cuối cùng của từng nhánh rồi tích hợp lại với nhau tạo thành 1 commit mới theo kiểu hình thoi. Thực hiện merge thì các commit đã tồn tại không bị thay đổi, chỉ tạo ra 1 commit mới tích hợp của 2 commit mới nhất.
- Đặc điểm: các commit của 2 nhánh được sắp xếp theo thời gian tạo commit.
Thế nào là git stash?
Việc đang làm dở ở branch này và muốn chuyển sang branch khác xảy ra thường xuyên, tuy nhiên bạn muốn lưu lại thay đổi mà chưa commit thì git stash sẽ giúp bạn. Các bạn chỉ cần thực hiện câu lệnh: $ git stash save # hoặc chỉ cần “git stash”. Hãy thử kiểm tra bằng cách git status, điều này sẽ giúp việc chuyển sang branch khác được chấp nhận. Ngoài ra, có 1 số tuỳ chọn như:
- Xem lại lịch sử thay đổi: $ git stash list
- Xem lại lịch sử thay đổi cùng nội dung của nó: $ git stash list -p
- Xem lại lịch sử thay đổi: $ git stash list
- Xem lại lịch sử thay đổi cụ thể của lần 1: $ git stash show stash@{1}
- Apply thay đổi của lần 1: $ git stash apply stash@{1}
- Xoá thay đổi: $ git stash drop stash@{1}
- Xoá toàn bộ: $ git stash clear
Làm thế nào xoá bỏ trạng thái của một vài commit gần đây?
Có 2 cách để thực hiện công việc này:
- Cách 1: Sử dụng git revert $ git revert <commit_id> Lệnh này tạo commit đảo ngược commit có commit_id đã chọn, commit chỉ định bị xoá bỏ, các commit mới hơn vẫn được giữ nguyên.
- Cách 2: Sử dụng git reset –hard $ git reset –hard <commit_id> Lệnh này sẽ xoá toàn bộ các commit trước đó và đưa branch về trạng thái của commit có commit_id đã chọn.
Làm thế nào để gộp một vài commit thành 1 commit duy nhất?
Để gộp nhiều commit thành 1 commit duy nhất, ta có thể sử dụng câu lệnh: $ git rebase -i <id_commit_end> Ta có các lựa chọn pick|squash|fixup các commit trước khi save.
Phân biệt git reset, git reset –hard, git reset –soft
$ git reset <commit_id> Sử dụng câu lệnh git reset <commit_id> khi ta muốn di chuyển HEAD đến commit reset và giữ nguyên tất cả thay đổi của file đến vị trị hiện tại. Tuy nhiên sẽ loại bỏ thay đổi khỏi stage.
$ git reset –hard <commit_id> khi di chuyển HEAD đến commit reset sẽ loại bỏ tất cả thay đổi của file sau commit reset.
$ git reset –soft <commit_id> được khuyến khích sử dụng khi muốn di chuyển HEAD đến commit reset do có ưu điểm là sẽ giữ nguyên tất cả thay đổi của file và các thay đổi ở stage.
Bạn đã hiểu được bao nhiêu vấn đề trong Git? Nếu còn những trăn trở khác về câu lệnh này, hãy đón đọc những bài viết sắp tới nhé! Chúc các bạn học tập tốt tại FPT Mạng cá cược bóng đá Hà Nội!
Bộ môn Công nghệ thông tin
Cao đẳng FPT Mạng cá cược bóng đá Hà Nội