Làm web (08) - Git: thêm remote repo

Bài học trước: Làm web (07) - Git: hủy bỏ & remote repo
-----

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: Tổng hợp các bài viết về Làm web
Xem thêm: Làm web (09) - Git: thao tác với remote repo (tt)