-----
3.5.3 Đẩy dữ liệu từ local repo lên remote repo
Phần này sẽ thực hiện minh họa trên Github.
Sau khi tạo remote repo, bạn đã sẵn sàng để tạo dữ liệu trong
đó. Để tạo dữ liệu cho remote repo, tại cửa sổ giao diện web, mở remote repo, bạn
có thể tạo mới một tập tin hoặc tải các tập tin lên (upload) từ máy cục bộ, sau
đó thực hiện commit (commit trên giao diện web, phân biệt với commit trên local
repo).
Tuy nhiên, có cách làm hay hơn là đẩy (push) toàn bộ dự án từ
local repo lên remote repo.
Các bước cần thực hiện để đẩy dữ liệu từ local repo lên remote
repo,
Cách một:
– Tạo một local repo (đây chính là thư mục chứa toàn bộ dự
án trên máy local, đã được nhúng Git)
– Tạo một remote repo trống (chưa có bất kì commit nào) trên
Github
– Từ máy local, thực hiện đẩy local repo lên remote repo
Lưu ý: tên của local repo và remote repo không nhất thiết phải
trùng nhau.
Cách hai:
– Tạo một remote repo trên Github
– Clone remote repo về máy cục bộ, kết quả của bước này là sẽ
có một local repo
– Chép các tập tin, thư mục của dự án vào local repo, thực
hiện commit trên local repo
– Từ máy local, thực hiện đẩy local repo lên remote repo
Để đẩy local repo lên remote repo, thực hiện hai lệnh sau:
git remote add origin <URL của remote repo> // gắn địa chỉ
của remote repo vào local repo
git push -u origin master // đẩy lên nhánh master của remote repo
Ý nghĩa của tham số -u : (gõ lệnh $ git help push để xem mô
tả của –u)
[-u
--set-upstream
For every branch that is up to date or successfully pushed,
add upstream (tracking) reference, used by argument-less git-pull(1) and other
commands. For more information, see branch.<name>.merge in git-config(1).]
Tham số -u sẽ cập nhật thông tin tại .git/config, mục:
[branch
"master"]
remote = origin
merge = refs/heads/master
Ví dụ,
git remote add origin https://github.com/legiacong/test1.git
git push -u origin master
Lab 22. Thực hiện đẩy local repo lên
remote repo theo các bước sau:
– Tạo một local repo (đây chính là thư mục chứa toàn bộ dự
án trên máy local, đã được nhúng Git)
– Tạo một remote repo trống (chưa có bất kì commit nào) trên
Github, kiểu private
– Từ máy local, thực hiện đẩy local repo lên remote repo
Lab 23. Thực hiện đẩy local repo lên
remote repo theo các bước sau:
– Tạo một remote repo trên Github, kiểu private
– Clone remote repo về máy cục bộ, kết quả của bước này là sẽ
có một local repo
– Chép các tập tin, thư mục của dự án vào local repo, thực
hiện commit
– Từ máy local, thực hiện đẩy local repo lên remote repo
3.5.4 Hiển thị máy chủ ở xa
Với một local repo, để biết kho chứa đã được cấu hình tới các
máy chủ ở xa nào sử dụng lệnh $ git remote. Lệnh này sẽ liệt kê tên của các máy
chủ ở xa (dạng ngắn gọn) được gắn kèm với mỗi local repo. Nếu kho chứa được sao
chép từ một máy chủ, kết quả sẽ hiển thị ít nhất là origin (nơi xuất xứ, gốc),
đây là tên mặc định Git gán cho máy chủ mà bạn sao chép kho chứa về. Nghĩa là,
thao các clone cũng ngầm gắn local repo vào remote repo với tên ngắn gọn là
origin.
Tên kho chứa ở xa (remote repo) thường dài và khó nhớ, ví dụ:
https://github.com/legiacong/test1.git.
Để dễ nhớ và dễ thao tác, Git cho phép bạn đặt cho địa chỉ này một cái tên ngắn
gọn tùy ý. Ví dụ: origin, duan1, duan2, project1, project2.
Khi một local repo đã được push lên remote repo, hoặc local
repo đó được clone từ remote repo về là bạn đã có thể tìm hiểu và thực hành các
nội dung liên quan đến remote repo.
Ví dụ xem local repo đã được gắn tới remote repo nào,
$ git clone https://github.com/legiacong/langbiang.git
Cloning into 'langbiang'...
remote: Enumerating objects: 71, done.
remote: Counting objects: 100% (71/71), done.
remote: Compressing objects: 100% (37/37), done.
remote: Total 71 (delta 24), reused 66 (delta 22), pack-reused 0
Unpacking objects: 100% (71/71), done.
$ cd langbiang
$ git remote
origin
Để hiển thị địa chỉ (URL) của remote repo, sử dụng thêm tham
số -v, ví dụ:
$ git remote -v
origin
https://github.com/legiacong/langbiang.git (fetch)
origin
https://github.com/legiacong/langbiang.git (push)
Cũng có thể xem thông tin trên bằng lệnh $ git config --list
$ git config --list
…
remote.origin.url=https://github.com/legiacong/langbiang.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
Hoặc mở tập tin config
trong thư mục local repo\ .git để xem
các thông tin về remote repo.
[remote
"origin"]
url = https://github.com/legiacong/langbiang.git
fetch =
+refs/heads/*:refs/remotes/origin/*
[branch
"master"]
remote = origin
merge = refs/heads/master
[remote
"lgc"]
url =
https://github.com/conglg/langbiang.git
fetch =
+refs/heads/*:refs/remotes/lgc/*
Nếu local repo có nhiều hơn một remote repo, lệnh $ git
remote -v sẽ hiển thị tất cả. Với mỗi local repo, nếu có nhiều remote repo, bạn
có thể “kéo” các đóng góp của các thành viên khác một cách dễ dàng.
Ví dụ,
$ git remote -v
lgc
https://github.com/conglg/langbiang.git (fetch)
lgc https://github.com/conglg/langbiang.git (push)
origin https://github.com/legiacong/langbiang.git (fetch)
origin
https://github.com/legiacong/langbiang.git (push)
3.5.5 Thêm tham chiếu tới kho chứa ở xa cho local repo
Như ở phần trên đã đề cập, khi thực hiện clone một remote
repo, Git đã ngầm gắn local repo vào remote repo với tên ngắn gọn mặc định là origin.
Tuy nhiên, bạn có thể thực hiện gắn local repo với một remote repo bất kì để
chia sẻ dự án của mình với người khác.
Cú pháp của lệnh
là,
git remote add [shortname] [url]
Trong đó,
– shortname là tên ngắn gọn bạn tự đặt để tiện tham chiếu tới
url của remote repo
– url chính là địa chỉ của remote repo trên Git server nào
đó (ví dụ Github, Gitlab), địa chỉ này lấy từ mục clone trên giao diện web của
remote repo.
Ví dụ,
– Khi vừa clone remote repo về,
$ git remote
origin
– Xem thử origin hiện tại đang trỏ với remote repo ở đâu?
$ git remote -v
origin https://github.com/legiacong/langbiang.git
(fetch)
origin https://github.com/legiacong/langbiang.git
(push)
– Gắn local repo tới thêm một remote repo nữa với tên là
lgcgitlab
$ git remote add lgcgitlab https://gitlab.com/legiacong/langbianggitlab.git
– Kiểm tra kết quả:
$ git remote -v
lgcgitlab
https://gitlab.com/legiacong/langbianggitlab.git (fetch)
lgcgitlab
https://gitlab.com/legiacong/langbianggitlab.git (push)
origin
https://github.com/legiacong/langbiang.git (fetch)
origin
https://github.com/legiacong/langbiang.git (push)
Giờ thì bạn có thể sử dụng lgcgitlab trong các câu lệnh, nó có tác dụng giống như địa chỉ đầy
đủ của remote repo.
Ví dụ để xem trên langbianggitlab có gì mới hơn so với local
repo của bạn, dùng lệnh sau,
$ git fetch lgcgitlab
From https://gitlab.com/legiacong/langbianggitlab
* [new branch] master
-> lgcgitlab/master
Lab 24. Thêm tham chiếu tới kho chứa ở xa cho local repo
Thực hiện các thao tác cần thiết để khi gõ lệnh $ git remote
-v trong local repo thì có kết quả sau. Hãy thay legiacong là tên tài khoản của
bạn, và langbiang là tên remote repo của bạn.
$ git remote -v
lgc
https://github.com/conglg/langbiang.git (fetch)
lgc
https://github.com/conglg/langbiang.git (push)
lgcgitlab
https://gitlab.com/legiacong/langbianggitlab.git (fetch)
lgcgitlab
https://gitlab.com/legiacong/langbianggitlab.git (push)
nvteo
https://github.com/legiacong/langbiang.git (fetch)
nvteo
https://github.com/legiacong/langbiang.git (push)
origin
https://github.com/legiacong/langbiang.git (fetch)
origin
https://github.com/legiacong/langbiang.git (push)
[Gợi ý cách làm]
– Tạo một local repo trên máy cục bộ, tạo vài thư mục, tập
tin (nhớ có nội dung bất kì bên trong tập tin)
– Thực hiện một vài commit trên local repo
– Tạo hai tài khoản trên Github (nếu đã có rồi thì bỏ qua bước
này)
– Lần lượt đăng nhập vào từng tài khoản trên Github, tạo một
remote repo trống trên đó
– Đẩy local repo lên cả hai remote repo vừa tạo lên Github
– Tạo một tài khoản trên Gitlab (nếu đã có rồi thì bỏ qua bước
này)
– Đăng nhập vào tài khoản trên Gitlab, tạo một remote repo
trống trên đó
– Đẩy local repo lên remote repo vừa tạo trên Gitlab
– Thực hiện các lệnh git
remote add [shortname] [url]
– Vào tập tin config trong local repo\.git để kiểm tra kết
quả xem có giống với kết quả của lệnh $ git remote –v không?
</////08
Cập nhật [26/11/2019]
-----------
Xem thêm: Làm web (09) - Git: thao tác với remote repo (tt)