You are on page 1of 6

Lệnh git cơ bản

- Khởi tạo 1 git repository 1 project mới hoặc đã có trong thư mục gốc của dự án:
$ git init

- Liệt kê tất cả các branch (nhánh):


$ git branch

- Thêm thay đổi đến stage/index trong thư mục làm việc:
$ git add readme.txt

- Commit nghĩa là một action để Git lưu lại một snapshot của các sự thay đổi trong
thư mục làm việc. Và các tập tin, thư mục được thay đổi đã phải nằm trong Staging
Area. Mỗi lần commit nó sẽ được lưu lại lịch sử chỉnh sửa của code kèm theo tên
và địa chỉ email của người commit. Ngoài ra trong Git bạn cũng có thể khôi phục
lại tập tin trong lịch sử commit của nó để chia cho một branch khác, vì vậy bạn sẽ
dễ dàng khôi phục lại các thay đổi trước đó:

$ git commit -m "Them readme.txt vao du an"

- Tạo một branch mới nhưng đứng nguyên ở branch hiện tại:
$ git branch develop

- Tạo một branch mới và chuyển qua branch mới:


$ git checkout -b develop1

- Chuyển sang branch khác:


$ git checkout develop

- Để check trạng thái của những thay đổi trong 1 branch:


$ git status

- Check log
$ git log
- Thêm các thay đổi từ nhánh develop1 sang nhánh hiện tại đang đứng (develop).
$ git merge develop1

- Xóa một branch, toàn bộ dữ liệu trên branch đó phải đã được merge vào master,
không thì bạn sẽ nhận được báo lỗi:
$ git branch -d develop1

- Xóa branch mà dữ diệu branch muốn xóa chưa được merge vào master. Trường
hợp này toàn bộ các commit lên branch này sẽ bị mất
$ git branch -D develop1

Git
Git là một hệ thống quản lý phiên bản phân tán (Distributed Version Control
System – DVCS), nó là một trong những hệ thống quản lý phiên bản phân tán phổ
biến nhất hiện nay. Git cung cấp cho mỗi lập trình viên kho lưu trữ (repository)
riêng chứa toàn bộ lịch sử thay đổi.
VCS là viết tắt của Version Control System là hệ thống kiểm soát các phiên bản
phân tán mã nguồn mở. Các VCS sẽ lưu trữ tất cả các file trong toàn bộ dự án và
ghi lại toàn bộ lịch sử thay đổi của file. Mỗi sự thay đổi được lưu lại sẽ được và
thành một version (phiên bản).
VCS nghĩa là hệ thống giúp lập trình viên có thể lưu trữ nhiều phiên bản khác nhau
của một mã nguồn được nhân bản (clone) từ một kho chứa mã nguồn (repository),
mỗi thay đổi vào mã nguồn trên local sẽ có thể ủy thác (commit) rồi đưa lên server
nơi đặt kho chứa chính.
Git coi thông tin được lưu trữ là một tập hợp các snapshot – ảnh chụp toàn bộ nội
dung tất cả các file tại thời điểm.
Mỗi khi bạn “commit”, Git sẽ “chụp” và tạo ra một snapshot cùng một tham chiếu
tới snapshot đó. Để hiệu quả, nếu các tệp không thay đổi, Git sẽ không lưu trữ lại
file — chỉ là một liên kết đến tệp giống file trước đó mà nó đã lưu trữ. Git nghĩ về
dữ liệu của nó giống như dưới đây:
Repository quản lý lịch sử
Repository là nơi sẽ ghi lại trạng thái của thư mục và file. Trạng thái được lưu lại đang
được chứa như là lịch sử thay đổi của nội dung. Bằng việc đặt thư mục muốn quản lý
lịch sử thay đổi dưới sự quản lý của repository, có thể ghi chép lại lịch sử thay đổi của
thư mục và file trong thư mục đó.

Remote repository và local repository


Đầu tiên, repository của Git được phân thành 2 loại là remote repository và local
repository.

 Remote repository: Là repository để chia sẻ giữa nhiều người và


bố trí trên server chuyên dụng.
 Local repository: Là repository bố trí trên máy của bản thân mình,
dành cho một người dùng sử dụng.
Do repository phân thành 2 loại là local và remote nên với những công việc bình
thường thì có thể sử dụng local repository và thực hiện trên toàn bộ máy sẵn có. Khi
muốn công khai nội dung công việc mà bản thân đã làm trên local repository, thì sẽ
upload lên remote repository rồi công khai. Thêm nữa, thông qua remote repository
cũng có thể lấy về nội dung công việc của người khác.
Commit sẽ ghi lại thay đổi
Để ghi lại việc thêm/ thay đổi file hay thư mục vào repository thì sẽ thực hiện thao tác
gọi là Commit.

Khi thực hiện commit, trong repository sẽ tạo ra commit (hoặc revision) đã ghi lại sự
khác biệt từ trạng thái đã commit lần trước đến trạng thái hiện tại.

Commit này đang được chứa tại repository trong trạng thái đã nối tiếp với nhau theo
thứ tự thời gian như trong hình dưới đây. Bằng việc lần theo commit này từ trạng thái
mới nhất thì có thể hiểu được lịch sử thay đổi trong quá khứ hoặc nội dung thay đổi đó.

Những thay đổi mang ý nghĩa khác nhau chẳng hạn như thêm chức năng hay sửa lỗi
thì hãy cố gắng chia ra rồi commit. Để sau này khi xem lịch sử và tìm kiếm một nội
dung thay đổi định sẵn sẽ dễ dàng hơn.
Working Tree và Index
Trên Git, những thư mục được đặt trong sự quản lý của Git mà mọi người đang thực
hiện công việc trong thực tế được gọi là working tree.

Và trên Git, giữa repository và working tree tồn tại một nơi gọi là index. Index là nơi để
chuẩn bị cho việc commit lên repository.

Trên Git, khi đã thực hiện commit thì trạng thái sẽ không được ghi trực tiếp trong
repository từ working tree, mà sẽ ghi trạng thái đã được thiết lập của index được xây
dựng ở giữa đó. Vì thế, để ghi lại trạng thái của file bằng commit thì trước hết cần đăng
ký file trong index.

Với việc chèn index vào giữa như thế này, có thể thực hiện commit không bao gồm
những file không cần thiết trong working tree, hay có thể đăng ký chỉ một phần thay đổi
của file trong index rồi commit.

Bất cứ khi nào bạn thêm, xóa hoặc thay đổi một file, nó vẫn nằm trong chỉ mục cho đến
khi bạn sẵn sàng commit các thay đổi. Nó như là khu vực tổ chức (stagging area) cho
Git. Sử dụng lệnh git status để xem nội dung của index của bạn.

Những thay đổi được tô sáng bằng màu xanh lá cây đã sẵn sàng để được commit trong
khi những thay đổi màu đỏ thì chưa.

Giải quyết xung đột khi merge


Khi thực hiện merge, Git sẽ tích hợp tự động những chỗ thay đổi. Tuy nhiên, cũng có
trường hợp không thể tích hợp tự động được.
Đó là trường hợp đã thay đổi ở nơi giống nhau trong file trên remote repository và local
repository. Trường hợp này, vì nó không thể tự phán đoán được lấy thay đổi từ bên
nào nên sẽ phát sinh lỗi.

Những nơi phát sinh xung đột, Git sẽ chỉnh sửa nội dung file giống như sơ đồ bên dưới,
nên cần phải chỉnh sửa bằng tay.

Phần phía trên mà đã được chia ra bằng == là local repository, phía dưới được hiển thị
là nội dung chỉnh sửa của remote repository

Giống như sơ đồ tiếp theo, sau khi chỉnh sửa tất cả chỗ xung đột, nếu như tiến hành
commit thì commit đã tích hợp thay đổi sẽ được tạo ra.

You might also like