Bản dịch tiếng Việt của cuốn sách có tựa là “Pro Git” nhằm giúp cộng đồng người Việt tham khảo thuận lợi, không nhằm mục đích thương mại thuộc về tác giả Scott Chacon và Ben Straub. Chương hai: Cơ bản về Git.

Nếu cần đọc một chương để bắt đầu với Git thì chính tại đây là một lựa chọn. Đa số những vấn đề, câu lệnh, tương tác được đề cập trong chương này sẽ được áp dụng xuyên suốt thời gian dùng Git – từ việc tạo, kích hoạt repo đến cách stage và commit các thay đổi, hay lấy dữ liệu từ một remote về máy!

Tạo một git repository.
Thường có hai cách để có được một repo:

    • hoặc kích hoạt một folder ban đầu không có chức năng VSC thành một repo,
    • hoặc clone một repo từ trên mạng về máy,

Bạn sẽ có được một repo trên ổ đĩa tính của bạn, gọi là local.
Lưu ý rằng, local không đồng nghĩa với folder mà bạn đang tương tác. Bạn có thể chỉnh sửa tệp trong folder, sau đó phải commit các thay đổi vào local rồi mới có thể đăng lên remote. Local thường là vô hình, nên nhiều người cho local là chính folder được kích hoạt trên ổ đĩa tính.
Kích hoạt repo trong một thư mục đã tồn tại
Bạn có lẽ đã có một thư mục song chưa thể điều khiển do thiếu kích hoạt tính năng VCS. Với Git, bạn cần vào thư mục đó trước:

$ cd /d/dir2/project-masged
Thực tế, có thể dùng lệnh cd <duong-den-folder-bat-ki> để dịch chuyển vị trí bất kì. Ngược lại, dùng cd ../ để lùi đến folder đằng trước. 
Nếu không dùng git bash mà một command line khác, bạn sẽ gặp một số vấn đề khi di chuyển từ ổ đĩa này sang ổ đĩa khác. Trường hợp đó, đầu tiên phải nhảy qua ổ đĩa khác với cd /d d:/ với “d:/” chỉ là tên ổ đĩa khác đó (trong bash mình dùng /d/ hoặc d:/, nhưng trong cmd thì dùng d:/ thôi nhé), sau đó nhập đường dẫn còn lại cd dir2/project-masged

 

Sau khi đã vào thư mục cần kích hoạt, dùng:
$ git init

Lệnh này tạo một thư mục phụ bên trong (thường bị ẩn đi), tên là “.git”, lưu trữ mọi tệp cần thiết cho repo của bạn – là khung xương cho repo. Hiện giờ chưa tệp nào được theo dõi cả (theo dõi là gì?). Nếu tò mò thì bạn có thể nhấp vào đây để tìm hiểu trong thư mục “.git” có những gì.

Trường hợp khác nếu trong thư mục bạn đã có tệp rồi nhưng chưa được theo dõi, bạn nên bắt đầu bật tính năng VCS để theo dõi những thay đổi của tệp và commit lần đầu. Để thực hiện, dùng git add để chọn những tệp cần được theo dõi, rồi dùng git commit để commit những thay đổi đó
$ git add .
$ git commit -m ‘Day la mot commit’
Trong đó: ở lệnh nhất, dấu “.” là để chỉ tất cả tệp trong thư mục chung của repo. Ở lệnh thứ hai, sau câu thêm phần -m ‘Day la mot commit’ là để bình luận cho lần commit đó (về sau chúng tôi sẽ giải thích thêm). Tạm thời chúng ta đã có một repo, trong đó mọi tệp bên trong đã được theo dõi và chúng ta còn commit chúng nữa.

Clone một repo có sẵn

Nếu bạn muốn tải về máy bản sao của một repo – vì, ví dụ, bạn muốn thay đổi, đóng góp vào repo đó – thì câu lệnh bạn cần là git clone. Nếu bạn từng dùng những hệ thống VCS khác như Subversion, bạn sẽ để ý rằng câu từ là “clone” chứ không phải “checkout”. Có một sự khác nhau rõ ràng, vì thay vì chỉ tải từng tệp, Git tải thêm mọi dữ liệu từ máy chủ – thường thì bao gồm mọi phiên bản trong lịch sử của các tệp. Dữ liệu ấy đầy đủ đến mức, cả trong trường hợp dữ liệu máy chủ bị lỗi và mất, bạn có thể dùng bất cứ bản sao nào đã tải về trong bất kì client nào để phục hồi trạng thái dữ liệu trên ổ đĩa chủ (trừ một số dữ liệu bên máy chủ như các hooks, xem thêm ở đây).

Để clone một repo về máy (tải một bản sao của repo), dùng git clone <url>. Ví dụ như bạn muốn sao chép về máy libgit2, dùng:

$ git clone https://github.com/libgit2/libgit2

Như thế bạn sẽ tạo một thư mục tên libgit2, kích hoạt thư mục .git bên trong đó, nhặt mọi dữ liệu của repo trên ổ đĩa chủ, rồi đưa repo về phiên bản mới nhất. Bạn có thể vào thư mục mới đó để kiểm tra thấy các tệp của dự án đã xuất hiện và sẵn sàng chỉnh sửa.

Trường hợp bạn muốn đặt tên khác cho thư mục, bạn có thể thêm điều kiện vào câu lệnh vừa rồi:
$ git clone https://github.com/libgit2/libgit2 mylibgit

Câu lệnh này cũng đem lại kết quả tương tự, nhưng lần này thư mục mang tên “mylibgit”.
Nói về phần <url>, Git có một số giao thức truyền tải khác nhau. Ở trên chúng ta dùng giao thức https://, mặc dù những giao thức khác như git:// hay user@server:duong/dan/toi/repo.git, bạn cũng có thể bắt gặp. Những trường hợp đó dùng giao thức truyền tải SSH. Một lần nữa, bạn có thể ghé Dùng git trên ổ đĩa chủ (chưa dịch) để biết về các lựa chọn của máy chủ trong việc truy cập Git và điểm yếu, mạnh của từng lựa chọn ấy.

 Hình 5. Cửa sổ Environment Variables.

Ví dụ, mình lưu một biến tên CAFFE_ROOT, chứa đường dẫn đến folder “D:\dir2\caffe”.

Như đã khai báo biến, ta có thể gọi biến trong command line:

 

 

 

 

 

 

 

Ở System Variables, kéo xuống thì bạn bắt gặp PATH. Đây là biến mà các command line nhìn vào mà tìm soát tương quan. Nằm ở khúc đầu là đường link dẫn đến folder của python (tạo vào lúc chạy installation), nơi các command line tìm ra được python.exe:

Hình 8. Cửa sổ chỉnh (liệt kê dữ liệu) một environment variable.

Bằng chứng:Hình 9 và 10. Đường dẫn đến thư mục chứa python.exe và đường dẫn tương tự được dùng khi dùng python -h.

Lưu ý rằng ngoài System Variables thì còn có User variables for TEN-CUA-NGUOI-DUNG. Đây là những cài biến tự đặt của user trước khi đến với các biến mặc định của hệ thống. Các command line sẽ kiểm các biến này trước. Để đảm bảo an toàn tránh gây lỗi, hãy chỉnh sửa bên User Variables for TEN-CUA-NGUOI-DUNG trước.

Thêm ví dụ:

+ HOME (C:/User/TEN-CUA-NGUOI-DUNG/): Nơi cài đặt thư viện, phần mềm cá nhân.

+ PATH: Shortcut đến một số chương trình, trong đó có python.exe.

+ PYTHONPATH: Đường dẫn đến thư viện của Python.

Nói chung, như khai báo biến trong code, bạn có thể nhấp vào New và tạo một biến riêng, lưu trữ đường dẫn đến những thư mục quan trọng nào đó hay một số hằng số, câu từ mà bạn thường xuyên dùng. Điều này có thể áp dụng thêm nữa trong việc lập trình với shell nói chung, vốn thường xuyên đòi hỏi nhiều biến ghi nhớ.

Hình 11. Ví dụ về dùng biến trong một tệp .sh. Lưu ý cách dùng kí hiệu ‘$’.

Leave a Reply

Your email address will not be published. Required fields are marked *