Quay trở lại bài tạo repository, mình có hướng dẫn bạn cách tạo một repository trên dịch vụ Github và Clone nó về máy. Như vậy, cái Github là một máy chủ repository từ xa nên mình sẽ gọi nó là Remote Repository, nghĩa là repository này không nằm trên máy tính của bạn.
Và ở phần đó, bạn có thấy mình kêu các bạn gửi dữ liệu lên repository bằng cách dùng lệnh
git push origin master
sau khi commit không? Cái master
là tên branch mà mình sẽ không nói ở bài này, nhưng cái origin
trong đoạn đó chính là tên remote repository. Mặc định khi clone một repository thì nó tự đặt tên là origin
.
Để kiểm tra tên remote, bạn có thể gõ lệnh
git remote -v
.$ git remote -v
origin https://github.com/thachphamblog/hoc-git.git (fetch)
origin https://github.com/thachphamblog/hoc-git.git (push)
Trong đó bạn có thể thấy cái repository mình đã clone đều được đặt tên là
origin
, và mỗi repository bạn có hai đều có hai hành động là fetch (lấy dữ liệu về từ server) và push (gửi dữ liệu lên server).
Nhìn lại đoạn lệnh
git push origin master
ở trên, điều đó có nghĩa là bạn gửi tất cả các thay đổi trên mã nguồn ở máy bạn lên remote tên là origin
với branch master
.Đổi tên remote
Nếu bạn không thích tên
origin
thì có thể đổi tên nó lại nó bằng tên khác cho dễ quản lý nếu như bạn có nhiều remote trong một dự án với lệnh git remote rename tên_cũ tên_mới
. Ví dụ mình cần đổi từorigin
sang thach
thì sẽ đổi như sau:$ git remote rename origin thach $ git remote -v thach https://github.com/thachphamblog/hoc-git.git (fetch) thach https://github.com/thachphamblog/hoc-git.git (push)
Bây giờ khi commit hay push bạn có thể gõ
git push thach master
để gửi mã nguồn lên remote repository này.Thêm một remote
Trường hợp bạn cần thêm một cái remote để lấy dữ liệu khi cần thì có thể sử dụng lệnh
git remote add tên_remote URL
. Ví dụ mình cần remote một repository và đặt tên nó là inuit thì sẽ viết như sau:$ git remote add unuit https://github.com/thachpham92/inuit.css-web-template $ git remote -v thach https://github.com/thachphamblog/hoc-git (fetch) thach https://github.com/thachphamblog/hoc-git (push) inuit https://github.com/thachpham92/inuit.css-web-template (fetch) inuit https://github.com/thachpham92/inuit.css-web-template (push)
Sau đó nếu bạn muốn lấy dữ liệu từ cái
inuit
kia về thì chỉ cần sử dụng lệnh git fetch inuit
.$ git fetch inuit
warning: no common commits
remote: Counting objects: 94, done.
remote: Total 94 (delta 0), reused 0 (delta 0), pack
Unpacking objects: 100% (94/94), done.
From https://github.com/thachpham92/inuit.css-web-te
* [new branch] master -> inuit/master
Lưu ý là lệnh
git fetch
nó chỉ lấy về và lưu vào database của Git trên máy chứ không được gộp vào repository của bạn. Để gộp vào bạn có thể gõ thêm lệnh git merge inuit
, trong đó inuit
là tên remote.
Còn nếu bạn muốn nó lấy về trực tiếp mà không cần gộp thì sử dụng lệnh
git pull tên_remote
, tuy nhiên mình khuyến khích bạn nên gộp vào branch khi cần và nhớ cẩn thận trong việc gộp, tốt nhất nên tạo thư mục mới trong thư mục làm việc của bạn rồi vào đó mà lấy về.
Sự khác nhau giữaclone
, fetch
và pull
Có thể bây giờ bạn đã biết được 3 lệnh để lấy dữ liệu về từ repository đó là git clone, git fetch và git pull. Nhưng cả ba loại đều là lấy dữ liệu, thế sự khác nhau của nó là gì?
git clone
Lệnh này sẽ sao chép toàn bộ dữ liệu trên repository và sao chép luôn các thiết lập về repository, tức là nó sẽ tự động tạo một master branch trên máy tính của bạn. Lệnh này chỉ nên sử dụng khi bạn cần tạo mới một Git mới trên máy tính với toàn bộ dữ liệu và thiết lập của một remote repository.
git pull
Lệnh này sẽ tự động lấy toàn bộ dữ liệu từ remote repository và gộp vào cái branch hiện tại bạn đang làm việc.
git fetch
Lệnh này sẽ lấy toàn bộ dữ liệu từ remote repository nhưng sẽ cho phép bạn gộp thủ công vào một branch nào đó trên thư mục Git ở máy tính.
Tạm thời bạn nên hiểu thế, ở bài branch bạn sẽ hiểu sâu hơn.
Các loại giao thức của Remote Repository
Chúng ta không chỉ kết nối với một remote repository qua giao thức HTTP hay HTTPS mà còn có thể chọn nhiều giao thức khác, dưới đây là một vài giao thức remote repository.
Local Repository
Giao thức này nghĩa là bạn kết nối tới một repository nào đó trên chính máy tính của bạn và URL của giao thức sẽ có dạng
/path/repository/
.HTTP Repository
Giao thức thông dụng nhất cũng như dễ hiểu nhất, thường được sử dụng nếu bạn dùng các dịch vụ remote repository như Github hay Assembla, nó sẽ bao gồm định dạng
http://domain.com/repository.git
hoặchttps://domain.com/repository.git.
SSH Repository
Giao thức này thường được dùng trên các nhu cầu tạo một server repository riêng và kết nối thông qua giao thức SSH. Đường dẫn của giao thức này sẽ có dạng là
user@server:/path/repository.git
. Ở phần cuối serie mình sẽ hướng dẫn bạn cách tạo một repository server riêng và nó là lựa chọn rất tốt nếu bạn làm việc nhóm mà không cần phụ thuộc vào các dịch vụ như Github hay Assembla.
Không có nhận xét nào:
Đăng nhận xét