-----
3.5.6 Truy cập và kéo dữ liệu về
Sau khi thực hiện gắn local repo với remote repo, bạn có thể
truy cập tới remote repo để thực hiện các thao tác liên quan đến remote repo.
Để truy cập và kéo dữ liệu về, sử dụng lệnh sau,
$ git fetch [remote
name]
Lệnh trên sẽ truy cập vào remote repo, thực hiện so sánh
local repo và remote repo, lấy về các dữ liệu trên remote repo có mà local repo
chưa có. Sau lệnh này, bạn đã có các tham chiếu tới toàn bộ các nhánh của
remote repo, từ đó bạn có thể thực hiện tích hợp và kiểm tra khi cần thiết.
Nếu local repo được tạo ra bằng cách clone từ remote repo,
thì Git đã ngầm gắn hai repo với nhau, khi đó tên rút gọn của remote repo sẽ là
origin. Nghĩa là bạn không cần phải thực hiện lệnh $ git remote add mà có thể
truy cập luôn tới remote repo và thực hiện các thao tác khác. Ví dụ, sau khi
clone về, lên remote repo thêm thông tin gì đó, rồi commit, và thực hiện lệnh
sau:
$ git fetch origin
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/legiacong/langbiang
c2aa729..a89362e master
-> origin/master
Lưu ý: lệnh $ git fetch chỉ kéo dữ liệu từ remote repo về
nhưng không tích hợp dữ liệu đó vào local repo. Bạn phải thực hiện lệnh tích hợp
(merge) thủ công.
Nếu trên local repo đã được thiết lập một nhánh để theo dõi
những thay đổi từ một nhánh ở xa thì bạn có thể sử dụng lệnh $ git pull để truy
cập vào nhánh ở xa, lấy về dữ liệu và tự động tích hợp vào nhánh local tương ứng.
Lệnh clone đã tự động gắn nhánh master của local repo (local master branch) với
nhánh master của remote repo (remote master branch).
Thông thường, khi chạy lệnh $ git pull, Git sẽ lấy dữ liệu từ
remote repo mà bạn đã clone về và tích hợp vào kho chứa hiện thời, nơi mà bạn
đang làm việc. Ví dụ,
Maxsys@DESKTOP-7LPDOL6 MINGW64 /e/langbiang (master)
$ git pull
Updating c2aa729..a89362e
Fast-forward
testdesktop.txt | 3 ++-
1 file changed, 2
insertions(+), 1 deletion(-)
3.5.7 Đẩy lên remote repo
Sau khi bạn thực hiện clone một remote repo từ server về
máy, lập trình xong một chức năng, thực hiện commit tại máy local, giờ muốn gửi
kết quả đó về server để chia sẻ với các thành viên khác trong nhóm, bạn sẽ thực
hiện việc này bằng lệnh sau,
$ git push [tên máy chủ] [tên nhánh]
Ví dụ, lệnh sau sẽ đẩy nhánh master của local repo lên nhánh
master của remote repo (server có tên ngắn gọn là origin),
$ git push origin master
Đọc thêm về push tại đây: https://git-scm.com/docs/git-push
[git push origin
master
Find a ref that matches master in the source repository
(most likely, it would find refs/heads/master), and update the same ref (e.g.
refs/heads/master) in origin repository with it. If master did not exist
remotely, it would be created.]
Lưu ý: lệnh này sẽ không làm việc nếu bạn thực hiện clone từ
một remote repo mà bạn không có quyền ghi (write), hoặc đã có một ai khác thực
hiện lệnh push dữ liệu lên remote repo tính từ thời điểm bạn clone về máy.
Nếu bạn và một thành viên khác thực hiện clone về cùng lúc,
nhưng thành viên kia đã push lên trước bạn, thì bạn phải thực hiện pull kho chứa
ở xa về, merge vào local repo, rồi mới được phép đẩy lên. Điều này để đảm bảo
tính đồng nhất thông tin.
3.5.8 Xem thông tin remote repo
Để xem thêm các thông tin của remote repo, sử dụng lệnh sau,
$ git remote show [remote repo]
Ví dụ sau sẽ xem thông tin của remote repo có tên là origin,
Maxsys@DESKTOP-7LPDOL6 MINGW64 /e/langbiang (master)
$ git remote show origin
* remote origin
Fetch URL:
https://github.com/legiacong/langbiang.git
Push URL:
https://github.com/legiacong/langbiang.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured
for 'git pull':
master merges with
remote master
Local ref configured for
'git push':
master pushes to master
(up to date)
Lệnh $ git remote show [remote repo] hiển thị một số thông
tin sau:
– URL của remote repo. Ví dụ, Fetch URL: https://github.com/legiacong/langbiang.git;
Push URL: https://github.com/legiacong/langbiang.git
– Các nhánh (branch) đang được theo dõi (tracked). Ví dụ:
master tracked
– Nếu bạn đang ở nhánh master (trên local repo), bạn chạy lệnh
git pull, Git sẽ tự động trộn (merge) nhánh master trên remote repo vào nhánh
master trên local repo (master merges with remote master)
– Hiển thị các nhánh mà local repo đã kéo về từ remote repo
– Cho biết các nhánh sẽ được push khi bạn chạy lệnh git
push. Ví dụ master pushes to master
– Các nhánh ở remote repo có mà local repo chưa có
– Các nhánh mà bạn có, nhưng đã bị gỡ bỏ trên remote repo
– Danh sách các nhánh local và remote sẽ được tự động trộn với
nhau khi chạy lệnh $ git pull
Ví dụ,
$ git remote show origin
* remote origin
URL:
https://github.com/my-org/complex-project
Fetch URL:
https://github.com/my-org/complex-project
Push URL:
https://github.com/my-org/complex-project
HEAD branch: master
Remote branches:
master tracked
dev-branch tracked
markdown-strip tracked
issue-43 new (next fetch will
store in remotes/origin)
issue-45 new (next fetch will
store in remotes/origin)
refs/remotes/origin/issue-11
stale (use 'git remote prune' to remove)
Local branches configured
for 'git pull':
dev-branch merges with
remote dev-branch
master merges with remote master
Local refs configured for
'git push':
dev-branch pushes to dev-branch (up to date)
markdown-strip pushes to markdown-strip (up to date)
master pushes to master (up to date)
3.5.9 Đổi tên và gỡ tham chiếu đến kho chứa ở xa
Để đổi tên (tên dạng rút gọn) một tham chiếu đến kho chứa ở xa, sử dụng lệnh sau,
$ git remote rename tencu tenmoi
Lệnh này cũng đồng thời thay đổi tên tham chiếu tới các
nhánh tương ứng, ví dụ tên tham chiếu đang là tencu/master sẽ được đổi thành
tenmoi/master.
Để gỡ bỏ một tham chiếu đến kho chứa ở xa (ví dụ thay đổi
server, người đó không còn cộng tác trong dự án nữa), sử dụng lệnh,
$ git remote remove tenkhochua
hoặc,
$ git remote rm tenkhochua
Lệnh này cũng đồng thời gỡ bỏ tham chiếu tới các nhánh
tương ứng.
Lab 25. Thực hiện một số thao tác
liên quan đến kho chứa ở xa.
Yêu cầu:
– Làm nhóm ít nhất 2 người
– Ghi lại kết quả thực hiện của mỗi lệnh
– Tạo một kho chứa ở xa trên Github hoặc Gitlab.
– Một thành viên đẩy local repo lên remote repo
– Các thành viên còn lại clone về máy
– Mỗi thành viên tạo một tham chiếu tới kho chứa ở xa với
tên là nvteo
– Mỗi thành viên thêm một tập tin mã nguồn vào local repo, thêm
nội dung cho một tập tin có sẵn, commit, sau đó đẩy lên remote repo bằng tên
origin
– Mỗi thành viên thêm một tập tin mã nguồn khác vào local
repo, thêm nội dung cho một tập tin có sẵn, commit, sau đó đẩy lên remote repo
bằng tên nvteo
– Mỗi thành viên lại kéo hết các tập tin mã nguồn của nhóm
mình về local repo, xem lịch sử commit của các thành viên trong nhóm
– Mỗi thành viên đổi lại tên tham chiếu nvteo thành “họ tên”
của mình
– Mỗi thành viên gỡ bỏ tham chiếu tới remote có tên là “họ
tên” của mình
Cập nhật [08/10/2019]
-----------
Xem thêm: Làm web (10) - Git: đánh dấu