-----
2 Cài đặt và cấu hình Git
2.1
Cài đặt Git
Trước khi có thể tìm hiểu và sử dụng Git, bạn cần cài đặt phần
mềm Git vào máy. Để cài đặt Git có nhiều cách, có thể cài đặt như một package,
như một phần mềm (installer) hoặc tải mã nguồn về rồi tự biên dịch.
Phần này hướng dẫn cách cài đặt như một phần mềm, và thực hiện
trên môi trường Windows.
Tải gói cài đặt Git cho Windows tại đây (quá trình tải xuống
máy sẽ được chạy tự động):
Quá trình cài đặt sẽ cài luôn công cụ Git Bash (cửa sổ dòng lệnh)
để nhập lệnh. Ngoài ra, quá trình cài đặt cũng đã cấu hình để cho phép nhập lệnh
cho Git từ cửa sổ Command Prompt (Run\cmd) và PowerShell.
Cũng có thể cài đặt Git bằng phần mềm Github Desktop. Phần mềm
Github Desktop cho phép bạn làm việc với Git ở hai chế độ: dòng lệnh và đồ họa.
Vào đây để tải Github Desktop: https://desktop.github.com/.
Đọc thêm ở đây (tiếng Anh):
Lab 1. Tải và cài đặt Git
Thực hiện tải và cài đặt Git vào máy của bạn.
Sau khi cài đặt Git thành công, chạy lệnh: git --version để kiểm tra phiên bản Git vừa cài đặt. Nếu hệ thống hiển thị được phiên bản là việc cài đặt đã thành công.
Ví dụ:
C:\Users\Maxsys>git --version
git version
2.20.1.windows.1.
Thực hiện lệnh git --version
trên ba môi trường: Git Bash, Command Prompt và PowerShell.
2.2
Cấu hình môi trường làm việc
Tới thời điểm này, bạn đã có phần mềm Git trên máy tính. Giờ sẽ
thực hiện thiết lập môi trường làm việc, chỉ cần thiết lập một lần trên mỗi máy
tính, tuy nhiên, sau này bạn vẫn có thể cập nhật lại. Các thông tin cần cấu
hình gồm: danh tính của bạn, chương trình soạn thảo văn bản.
Để đọc/ghi hoặc cập nhật thông tin cấu hình sử dụng lệnh git config.
Với Git, bạn có thể cấu hình và lưu thông tin ở ba nơi khác
nhau, tương ứng với ba mức cấu hình, gồm: system, global, và local
– system: nếu cấu hình ở mức này, thông tin sẽ được dùng cho
tất cả người dùng và tất cả kho chứa trên hệ thống. Thông tin cấu hình được lưu
tại /etc/gitconfig. Ví dụ trên hệ thống
Windows sẽ là C:\Program
Files\Git\mingw64\etc\gitconfig. Để cấu hình, cần thêm tham số --system cho lệnh git config. Ví dụ: $ git
config --system user.name "Van Teo". Cần phải có quyền quản trị hệ
thống mới thực hiện được mức cấu hình này.
– global: nếu cấu hình ở mức này, thông tin sẽ được dùng cho
duy nhất tài khoản đang đăng nhập và cho tất cả các kho chứa mà bạn đang làm việc
trên hệ thống. Thông tin cấu hình được lưu tại ~/.gitconfig. Ví dụ trên hệ thống Windows, user đang đăng nhập là tentaikhoan, thì thông tin sẽ được lưu tại
C:\Users\tentaikhoan\.gitconfig. Để cấu
hình, cần thêm tham số --global cho lệnh
git config. Ví dụ: $ git config --global user.name "Van
Teo". Đây là mức cấu hình hay được sử dụng.
– local: nếu cấu hình ở mức này, thông tin sẽ được dùng cho
duy nhất một kho chứa. Thông tin cấu hình được lưu trong chính kho chứa, tại .git/config. Để cấu hình, sử dụng lệnh git config. Ví dụ: $ git config user.name "Van Teo".
Nếu trên một hệ thống mà cùng lúc cấu hình ở cả ba mức, thì
thông tin ở mức nào có độ ưu tiên cao hơn sẽ được sử dụng. Thứ tự ưu tiên của mức local là cao nhất, sau đó đến global và cuối cùng là system.
Danh tính của bạn
Thông tin đầu tiên cần phải cấu hình trước khi sử dụng Git
là tên và địa chỉ email của bạn. Git sẽ sử dụng hai thông tin này để gắn vào mỗi
lệnh commit (mục đích để biết ai đã thực hiện commit).
Nên cấu hình danh tính của bạn ở mức global, và chỉ làm một
lần. Git sẽ sử dụng thông tin này cho tất cả các thao tác bạn làm trên hệ thống.
Nếu muốn sử dụng tên và email khác cho một dự án riêng, thì thực hiện thêm việc
cấu hình danh tính tại mức local cho chính dự án đó.
Ví dụ,
$ git config --global user.name "Van Teo"
$ git config --global user.email nguyenvanteo@gmail.com
Mở .gitconfig để
kiểm tra thông tin vừa cấu hình:
[user]
name = Van Teo
email =
nguyenvanteo@gmail.com
Chương trình soạn thảo
văn bản
Sau khi đã cấu hình danh tính, bạn cần thực hiện cấu hình để
chỉ cho Git biết khi cần phải mở một chương trình soản thảo văn bản thì sẽ mở
chương trình nào. Nếu không chỉ cho Git biết, nó sẽ tìm và mở một trình soạn thảo
văn bản mặc định trên hệ thống của bạn.
Ví dụ, cấu hình để Git dùng Visual Studio Code khi cần mở
chương trình soạn thảo văn bản:
$ git config --global core.editor code
Ví dụ, cấu hình để Git dùng Notepad khi cần mở chương trình
soạn thảo văn bản:
$ git config --global core.editor notepad
Ví dụ, cấu hình để Git dùng Sublime Text khi cần mở chương
trình soạn thảo văn bản:
$ git config --global core.editor "'C:/Program
Files/Sublime Text 3/sublime_text.exe' -w"
Kiểm tra thông cấu
hình môi trường làm việc
Để kiểm tra các thông tin cấu hình đã cài đặt, sử dụng lệnh git config --list. Có thể có từ khóa xuất
hiện nhiều hơn một lần là do Git đã đọc từ nhiều tập tin cấu hình khác nhau (của
mức system, global và local), trong trường hợp này Git sẽ lấy giá trị xuất hiện
sau cùng để sử dụng (xem lại về thứ tự ưu tiên).
Để kiểm tra cụ thể một thông tin, sử dụng cú pháp sau: git config {key}
Ví dụ:
$ git config user.name
Hiển thị thông tin
giúp đỡ
Muốn hiển thị thông tin trợ giúp khi cấu hình Git, sử dụng một
trong ba lệnh sau (kết quả sẽ hiển thị trong cửa sổ trình duyệt):
– git <verb> --help
– git help <verb>
– man git -<verb>
Ví dụ:
– git config --help
Đọc thêm ở đây (tiếng Anh):
Lab 2. Cấu hình môi trường làm việc
cho Git.
Thực hiện các cấu hình sau (mức global):
– Username: tên của bạn (ví dụ: Teo Nguyen)
– Email: hộp thư của bạn (ví dụ: teo.nguyen@gmail.com)
– Trình soạn thảo văn bản đi kèm với Git: một trình soạn thảo
văn bản (ví dụ: Notepad++, VS code, Sublime Text)
– Sử dụng git config
--list để kiểm tra, đảm bảo các thông tin đã cấu hình là chính xác
– Dùng File Explorer (Windows Explorer) để mở trực tiếp tập
tin cấu hình
2.3
Tạo kho chứa
Trong thuật ngữ của Git, kho chứa (repository hay viết tắt
là repo) là thư mục .git hay .git directory, trong đó chứa cơ sở dữ liệu của Git.
Khi tạo một kho chứa trên máy cục bộ, Git thường tạo luôn ba thành phần (khu vực):
working directory, staging area và .git directory.
Có hai loại kho chứa: kho chứa cục bộ (local repository) và
kho chứa ở xa (remote repository).
– Kho chứa cục bộ: là kho chứa nằm trên chính máy tính của lập
trình viên
– Kho chứa ở xa: là kho chứa nằm trên máy server chuyên dụng.
Ví dụ, các kho chứa trên các server của Github, Gitlab, Bitbucket.
Có hai cách để tạo kho chứa: một là tạo kho chứa từ một thư mục trên máy cục
bộ và hai là sao chép (clone) kho chứa từ server về.
Tạo kho chứa từ một thư mục trên máy
cục bộ
Trên máy cục bộ, cần có sẵn một thư mục (thư mục trống hoặc đã có thư mục
con/tập tin đều được), chuột phải vào thư mục chọn Git Bash Here hoặc mở chương
trình dòng lệnh (ví dụ: Git Bash, Command Prompt hoặc PowerShell), dùng lệnh cd (là viết tắt của change directory) để
di chuyển vào thư mục muốn tạo kho chứa.
Thư mục mặc định khi chạy chương trình Git Bash là C:\Users\tentaikhoan, trong Git Bash, thư mục
này được kí hiệu là ~. Ví dụ: Maxsys@DESKTOP-7LPDOL6
MINGW64 ~
Có thể dùng lệnh ls
hoặc dir để xem các tập tin và thư mục
con của thư mục hiện tại.
Ví dụ: giả sử thư mục có sẵn là D:\myproject, muốn tạo
kho chứa từ thư mục myproject, cần di chuyển vào thư mục myproject.
$ cd d:/myproject
hoặc
$ cd d:\myproject
Đường dẫn thư mục hiện thời là: Maxsys@DESKTOP-7LPDOL6 MINGW64 /d/myproject
Và gõ lệnh,
$ git init
Lệnh này sẽ tạo kho chứa, là một thư mục ẩn có tên .git nằm trong thư mục myproject, thư mục này chứa các tập tin thiết
yếu, quan trọng để vận hành kho chứa (là bộ khung vận hành kho chứa).
Mở D:\myproject\.git để xem nội dung của thư
mục .git. Vì .git là thư mục ẩn nên để
nhìn thấy tập tin này cần vào mục View
của File Explorer, đánh dấu chọn vào mục Hidden items.
Nếu tạo kho chứa thành công, cửa sổ dòng lệnh sẽ xuất thông
báo sau:
Initialized empty Git
repository in D:/myproject/.git/
Maxsys@DESKTOP-7LPDOL6
MINGW64 /d/myproject (master)
Chữ master là tên
nhánh (branch) hiện tại, sẽ tìm hiểu sau.
Tới thời điểm này Git vẫn chưa theo dõi (track) bất kì tập
tin nào trong dự án. Tuy nhiên, bạn đã có thể sử dụng Git để theo dõi các tập
tin và thực hiện commit (lưu phiên bản) lần đầu. Để theo dõi các tập tin sử dụng
lệnh git add, để commit sử dụng lệnh git commit.
Nếu thư mục myproject
chưa có tập tin, bạn cần tạo tập tin (ví dụ: tailieu.txt) trong working
directory (working directory là thư mục myproject,
không tính thư mục .git), sau đó sử dụng
lệnh git status để xem trạng thái của thư mục myproject.
$ git status
On branch master
No commits yet
Untracked files:
(use "git add
<file>..." to include in what will be committed)
tailieu.txt
nothing added to commit but untracked files present (use
"git add" to track)
// thông báo trên cho biết, thư mục
myproject đang có tập tin
tailieu.txt chưa được Git theo dõi
Thực hiện theo dõi tập tin tailieu.txt,
$ git add tailieu.txt
Xem trạng thái thư mục
myproject,
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm
--cached <file>..." to unstage)
new file: tailieu.txt
// thông báo trên cho biết, tập tin tailieu.txt đã được Git
theo dõi và sẵn sàng để commit
Thực hiện commit đầu tiên (initial commit),
$ git commit -m 'Phiên bản đầu tiên của dự án'
[master (root-commit) 4fec01c] Phiên bản đầu tiên của dự án
1 file changed, 0
insertions(+), 0 deletions(-)
create mode 100644
tailieu.txt
Sao chép một kho chứa
từ server
Cách thứ hai để có một kho chứa là sao chép kho chứa từ
server về. Ví dụ, trên các Git server (Github chẳng hạn) đang có kho chứa của một
dự án, và bạn muốn sao chép kho chứa đó về máy của mình.
Lệnh để sao chép là git
clone, với lệnh này, Git sẽ chép gần như toàn bộ nội dung của kho chứa từ
Git server về máy cục bộ. Khi đó, nếu kho chứa trên Git server bị mất, có thể sử
dụng kho chứa trên máy cục bộ để phục hồi lại dữ liệu cho Git server với trạng
thái giống với khi được sao chép về máy cục bộ.
Cú pháp của lệnh git clone:
git clone [url]
Trong đó, url chính là địa chỉ của kho chứa trên Git server.
Ví dụ, muốn sao chép kho chứa có tên langbiang trên Github về
máy cục bộ, thì sử dụng lệnh sau (lưu ý phải có kết nối Internet) :
git clone https://github.com/legiacong/langbiang.git
Màn hình kết quả (trong Git Bash nhớ chuyển về ổ đĩa
D:\ để dễ theo dõi kho chứa kết quả, vì kho chứa sẽ được chép từ Git server về
đây):
Maxsys@DESKTOP-7LPDOL6 MINGW64 /d
$ git clone https://github.com/legiacong/langbiang.git
Cloning into 'langbiang'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
Mở ổ đĩa D:\ sẽ thấy thư mục langbiang, đây là working
directory (không tính thư mục .git) nó được sinh ra từ kho chứa (thư mục .git).
Kho chứa nằm trong thư mục langbiang. Staging area nằm trong thư mục .git. Vậy
là bạn đã sẵn sàng để làm việc trên kho chứa này.
Nếu muốn chép kho chứa từ Git server về máy cục bộ với một
tên mới, sử dụng cú pháp sau (tên mới được đặt ở cuối lệnh):
git clone
https://github.com/legiacong/langbiang.git newlangbiang
Màn hình kết quả,
$ git clone
https://github.com/legiacong/langbiang.git newlangbiang
Cloning into 'newlangbiang'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
Mở ổ đĩa D:\ để xem kết quả.
Ngoài việc sử dụng giao thức HTTPS để sao chép kho chứa (như
ví dụ trên), còn có thể sử dụng giao thức SSH.
Đọc bài viết sau (tiếng Anh):
Nếu không dùng lệnh clone mà thực hiện copy kho chứa giữa
các máy cục bộ thì sao?
[Cloning a repository gives you a copy of that repository
and configures the original repository as a remote.
Copying a repository just gives you a copy of that
repository. (Though you can of course just add the remote definition afterwards
via git remote add.)
Copying a repository copies its .git/config file, and thus
its remotes. Cloning a repository does not copy the config file, and thus the
remotes are not shared. (The repository that was cloned from is set as the origin
remote in the resulting clone.)]
[Clone sẽ bao gồm cả copy kho chứa và thiết lập một liên kết
tới kho chứa ở xa, trong khi copy thì chỉ lấy về được kho chứa mà không tự động
thiết lập liên kết tới kho chứa ở xa (tất nhiên có thể làm việc này bằng tay)
Copy cắt đứt mối liên hệ với bản được copy, clone vẫn xem bản
được clone là bản gốc và vẫn duy trì mối liên hệ - xem thêm phần push/pull]
Lab 3. Tạo kho chứa.
– Tạo một kho chứa
trên máy cục bộ, trong kho chứa tạo tập tin và thực hiện commit
– Sao chép một kho
chứa bất kì từ Github hoặc Gitlab về máy cục bộ
</////02
Cập nhật [26/02/2020]
-----------
Xem thêm: Làm web (04) - Git: thao tác với kho chứa