Git: Thiết lập một kho lưu trữ


Các khóa học qua video:
Lập trình C Java SQL Server PHP HTML5-CSS3-JavaScript
Thiết lập một kho lưu trữ

Hướng dẫn này cung cấp tổng quan về cách thiết lập kho lưu trữ (repo) trong kiểm soát phiên bản Git. Tài nguyên này sẽ hướng dẫn bạn thông qua việc khởi tạo kho lưu trữ Git cho một dự án mới hoặc hiện có. Bao gồm bên dưới là các ví dụ về quy trình làm việc của các kho lưu trữ được tạo cục bộ và nhân bản từ các kho lưu trữ từ xa. Hướng dẫn này giả định sự quen thuộc cơ bản với giao diện dòng lệnh.

Các điểm cấp cao mà hướng dẫn này sẽ đề cập là:

  • Đang khởi tạo repo Git mới
  • Nhân bản một repo Git hiện có
  • Cam kết phiên bản sửa đổi của tệp cho repo
  • Định cấu hình repo Git để cộng tác từ xa
  • Các lệnh điều khiển phiên bản Git phổ biến

Đến cuối mô-đun này, bạn sẽ có thể tạo repo Git, sử dụng các lệnh Git thông thường, cam kết một tệp đã sửa đổi, xem lịch sử dự án của bạn và định cấu hình kết nối với dịch vụ lưu trữ Git (Bitbucket).

Kho Git là gì?

Một kho Git là một lưu trữ ảo của dự án của bạn. Nó cho phép bạn lưu các phiên bản mã mà bạn có thể truy cập khi cần. 

Đang khởi tạo một kho lưu trữ mới: git init

Để tạo một repo mới, bạn sẽ sử dụng git initlệnh. git initlà lệnh một lần bạn sử dụng trong quá trình thiết lập ban đầu của một repo mới. Thực hiện lệnh này sẽ tạo một .gitthư mục con mới trong thư mục làm việc hiện tại của bạn. Điều này cũng sẽ tạo ra một nhánh chủ mới. 

Phiên bản dự án hiện có với kho git mới

Ví dụ này giả sử bạn đã có một thư mục dự án hiện có mà bạn muốn tạo một repo bên trong. Trước tiên, bạn sẽ cdvào thư mục dự án gốc và sau đó thực hiện git initlệnh.

cd /path/to/your/existing/code
git init

Chỉ git initvào một thư mục dự án hiện có sẽ thực hiện cùng một thiết lập khởi tạo như đã đề cập ở trên, nhưng nằm trong thư mục dự án đó.

git init <project directory>

Truy cập trang git init  để có tài nguyên chi tiết hơn git init.

Nhân bản một kho lưu trữ hiện có: git clone

Nếu một dự án đã được thiết lập trong một kho lưu trữ trung tâm, lệnh clone là cách phổ biến nhất để người dùng có được bản sao phát triển cục bộ. Giống như git init, nhân bản nói chung là một hoạt động một lần. Khi nhà phát triển đã có được một bản sao hoạt động , tất cả các hoạt động kiểm soát phiên bản được quản lý thông qua kho lưu trữ cục bộ của họ.

git clone <repo url>

git cloneđược sử dụng để tạo một bản sao hoặc bản sao của kho lưu trữ từ xa. Bạn vượt qua git clonemột URL kho lưu trữ. Git hỗ trợ một vài giao thức mạng khác nhau và các định dạng URL tương ứng. Trong ví dụ này, chúng tôi sẽ sử dụng giao thức Git SSH. URL Git SSH theo mẫu:git@HOSTNAME:USERNAME/REPONAME.git

Một ví dụ URL Git SSH sẽ là: git@bitbucket.org:rhyolight/javascript-data-store.gittrong đó các giá trị mẫu khớp với nhau:

  • HOSTNAME: bitbucket.org
  • USERNAME: rhyolight
  • REPONAME: javascript-data-store

Khi được thực thi, phiên bản mới nhất của các tệp repo từ xa trên nhánh chính sẽ được kéo xuống và thêm vào một thư mục mới. Thư mục mới sẽ được đặt tên theo REPONAME trong trường hợp này javascript-data-store. Thư mục sẽ chứa toàn bộ lịch sử của kho lưu trữ từ xa và một nhánh chính mới được tạo.

Để biết thêm tài liệu về git clonecách sử dụng và các định dạng URL Git được hỗ trợ, hãy truy cập  Trang git clone .

Lưu các thay đổi vào kho lưu trữ: git add và git commit

Bây giờ bạn có một kho lưu trữ được nhân bản hoặc khởi tạo, bạn có thể cam kết thay đổi phiên bản tệp cho nó. Ví dụ sau đây giả định rằng bạn đã thiết lập một dự án tại /path/to/project. Các bước được thực hiện trong ví dụ này là:

  • Thay đổi thư mục thành /path/to/project
  • Tạo một tệp mới CommitTest.txtvới nội dung ~ "nội dung kiểm tra cho hướng dẫn git" ~
  • git thêm CommitTest.txtvào khu vực tổ chức kho lưu trữ
  • Tạo một cam kết mới với một thông báo mô tả những gì công việc đã được thực hiện trong cam kết
cd /path/to/project
echo "test content for git tutorial" >> CommitTest.txt
git add CommitTest.txt
git commit -m "added CommitTest.txt to the repo"

Sau khi thực hiện ví dụ này, repo của bạn bây giờ sẽ CommitTest.txtđược thêm vào lịch sử và sẽ theo dõi các bản cập nhật trong tương lai của tệp.

Ví dụ này đã giới thiệu hai lệnh git bổ sung: addvà commit. Đây là một ví dụ rất hạn chế, nhưng cả hai lệnh được trình bày sâu hơn trên các trang git add và git commit . Một trường hợp sử dụng phổ biến khác git addlà --alltùy chọn. Việc thực thi git add --allsẽ lấy bất kỳ tệp đã thay đổi và không bị theo dõi nào trong repo và thêm chúng vào repo và cập nhật cây làm việc của repo.

Cộng tác repo-repo: git đẩy

Điều quan trọng là phải hiểu rằng ý tưởng của Git về một bản sao làm việc của YouTube rất khác với bản sao làm việc mà bạn nhận được bằng cách kiểm tra mã nguồn từ kho lưu trữ SVN. Không giống như SVN, Git không phân biệt giữa các bản sao đang hoạt động và kho lưu trữ trung tâm, tất cả chúng đều là kho lưu trữ Gitchính thức .

Điều này làm cho việc cộng tác với Git về cơ bản khác với SVN. Trong khi SVN phụ thuộc vào mối quan hệ giữa kho lưu trữ trung tâm và bản sao làm việc, mô hình cộng tác của Git dựa trên tương tác giữa kho với kho. Thay vì kiểm tra một bản sao đang hoạt động vào kho lưu trữ trung tâm của SVN, bạn đẩy hoặc kéo các cam kết từ kho này sang kho khác.

Tất nhiên, không có gì ngăn cản bạn đưa ra ý nghĩa đặc biệt của Git repos. Ví dụ: bằng cách chỉ định một repo Git là kho lưu trữ trung tâm của trực tuyến, có thể sao chép quy trình làm việc tập trung bằng Git. Điều này được thực hiện thông qua các quy ước thay vì được gắn kết vào chính VCS.

Kho lưu trữ trần so với nhân bản

Nếu bạn đã sử dụng git clonetrong phần "Khởi tạo kho lưu trữ mới" trước đó để thiết lập kho lưu trữ cục bộ, kho lưu trữ của bạn đã được định cấu hình để cộng tác từ xa. git clonesẽ tự động định cấu hình repo của bạn bằng một điều khiển từ xa được trỏ đến URL Git mà bạn đã nhân bản nó từ đó. Điều này có nghĩa là một khi bạn thay đổi tệp và cam kết chúng, bạn có thể git pushthay đổi tệp lưu trữ từ xa.

Nếu bạn đã từng git inittạo một repo mới, bạn sẽ không có repo từ xa để đẩy các thay đổi sang. Một mô hình phổ biến khi khởi tạo một repo mới là đến một dịch vụ Git được lưu trữ như Bitbucket và tạo một repo ở đó. Dịch vụ sẽ cung cấp URL Git mà sau đó bạn có thể thêm vào kho Git cục bộ của mình và git pushvào kho lưu trữ được lưu trữ. Khi bạn đã tạo một repo từ xa với dịch vụ bạn chọn, bạn sẽ cần cập nhật repo cục bộ của mình bằng một ánh xạ. Chúng tôi thảo luận về quy trình này trong hướng dẫn Cấu hình & Thiết lập bên dưới.

Nếu bạn muốn lưu trữ repo từ xa của riêng mình, bạn sẽ cần thiết lập "Kho lưu trữ trần". Cả hai git initvà git clonechấp nhận một --barecuộc tranh cãi. Trường hợp sử dụng phổ biến nhất cho repo trần là tạo kho lưu trữ Git trung tâm từ xa

Cấu hình & thiết lập: git config

Khi bạn có thiết lập repo từ xa, bạn sẽ cần thêm url repo từ xa vào cục bộ của mình git configvà đặt nhánh ngược dòng cho các nhánh cục bộ của bạn. Các git remotelệnh cung cấp tiện ích như vậy.

git remote add <remote_name> <remote_repo_url>

Lệnh này sẽ ánh xạ kho lưu trữ từ xa tại <remote_repo_url>một ref trong repo cục bộ của bạn bên dưới <remote_name>. Khi bạn đã ánh xạ repo từ xa, bạn có thể đẩy các nhánh cục bộ đến nó.

git push -u <remote_name> <local_branch_name>

Lệnh này sẽ đẩy nhánh repo cục bộ xuống <local_branc_name>tới repo từ xa tại <remote_name>.

Để xem chi tiết hơn git remote, xem Git remote page.

Ngoài việc định cấu hình URL repo từ xa, bạn cũng có thể cần đặt các tùy chọn cấu hình Git toàn cầu như tên người dùng hoặc email. Các git configlệnh cho phép bạn cấu hình cài đặt Git của bạn (hoặc một kho lưu trữ cá nhân) từ dòng lệnh. Lệnh này có thể định nghĩa mọi thứ từ thông tin người dùng, đến sở thích, đến hành vi của kho lưu trữ. Một số tùy chọn cấu hình phổ biến được liệt kê dưới đây.

Git lưu trữ các tùy chọn cấu hình trong ba tệp riêng biệt, cho phép bạn phạm vi tùy chọn cho các kho riêng lẻ (cục bộ), người dùng (Toàn cầu) hoặc toàn bộ hệ thống (hệ thống):

  • Địa phương: <repo>/.git/config- Cài đặt dành riêng cho kho lưu trữ.
  • Toàn cầu: /.gitconfig- Cài đặt dành riêng cho người dùng. Đây là nơi các tùy chọn được đặt với cờ --global được lưu trữ.
  • Hệ thống: $(prefix)/etc/gitconfig- Cài đặt toàn hệ thống.

Xác định tên tác giả sẽ được sử dụng cho tất cả các xác nhận trong kho lưu trữ hiện tại. Thông thường, bạn sẽ muốn sử dụng --globalcờ để đặt tùy chọn cấu hình cho người dùng hiện tại.

git config --global user.name <name>

Xác định tên tác giả sẽ được sử dụng cho tất cả các cam kết của người dùng hiện tại.

Thêm --localtùy chọn hoặc không vượt qua tùy chọn cấp cấu hình, sẽ đặt tùy chọn user.namecho kho lưu trữ cục bộ hiện tại.

git config --local user.email <email>

Xác định email tác giả sẽ được sử dụng cho tất cả các cam kết của người dùng hiện tại.

git config --global alias.<alias-name> <git-command>

Tạo một lối tắt cho lệnh Git. Đây là một tiện ích mạnh mẽ để tạo các phím tắt tùy chỉnh cho các lệnh git thường được sử dụng. Một ví dụ đơn giản sẽ là:

git config --global alias.ci commit

Điều này tạo ra một cilệnh mà bạn có thể thực hiện như một phím tắt đến git commit. Để tìm hiểu thêm về bí danh git truy cập git configtrang .

git config --system core.editor <editor>

Xác định trình soạn thảo văn bản được sử dụng bởi các lệnh như git commitđối với tất cả người dùng trên máy hiện tại. Đối <editor>số phải là lệnh khởi chạy trình soạn thảo mong muốn (ví dụ: vi). Ví dụ này giới thiệu --systemtùy chọn. Các --systemtùy chọn sẽ thiết lập cấu hình cho toàn bộ hệ thống, nghĩa là tất cả người sử dụng và các hợp đồng mua trên một máy. Để biết thêm thông tin chi tiết về các mức cấu hình, hãy truy cập trang git config .

git config --global --edit

Mở tệp cấu hình toàn cầu trong trình chỉnh sửa văn bản để chỉnh sửa thủ công. Có thể tìm thấy hướng dẫn chuyên sâu về cách định cấu hình trình soạn thảo văn bản cho git để sử dụng trên trang cấu hình Git .

Thảo luận

Tất cả các tùy chọn cấu hình được lưu trữ trong các tệp văn bản gốc, vì vậy git configlệnh thực sự chỉ là một giao diện dòng lệnh thuận tiện. Thông thường, bạn sẽ chỉ cần định cấu hình cài đặt Git trong lần đầu tiên bạn bắt đầu làm việc trên máy phát triển mới và trong hầu hết mọi trường hợp, bạn sẽ muốn sử dụng --globalcờ. Một ngoại lệ quan trọng là ghi đè địa chỉ email của tác giả. Bạn có thể muốn đặt địa chỉ email cá nhân của mình cho các kho lưu trữ cá nhân và nguồn mở và địa chỉ email chuyên nghiệp của bạn cho các kho lưu trữ liên quan đến công việc.

Git lưu trữ các tùy chọn cấu hình trong ba tệp riêng biệt, cho phép bạn phạm vi tùy chọn cho từng kho lưu trữ, người dùng hoặc toàn bộ hệ thống:

  • <repo>/.git/config - Cài đặt dành riêng cho kho lưu trữ.
  • ~/.gitconfig- Cài đặt dành riêng cho người dùng. Đây là nơi các tùy chọn được đặt với cờ --global được lưu trữ.
  • $(prefix)/etc/gitconfig - Cài đặt toàn hệ thống.

Khi các tùy chọn trong các tệp này xung đột, cài đặt cục bộ sẽ ghi đè cài đặt người dùng, ghi đè toàn hệ thống. Nếu bạn mở bất kỳ tệp nào trong số này, bạn sẽ thấy một cái gì đó như sau:

[user] name = John Smith email = john@example.com [alias] st = status co = checkout br = branch up = rebase ci = commit [core] editor = vim

Bạn có thể tự chỉnh sửa các giá trị này thành hiệu ứng chính xác như git config.

Thí dụ

Điều đầu tiên bạn sẽ muốn làm sau khi cài đặt Git là cho nó biết tên / email của bạn và tùy chỉnh một số cài đặt mặc định. Một cấu hình ban đầu điển hình có thể trông giống như sau:

Nói cho Git biết bạn là ai git config

git --global user.name "John Smith" git config --global user.email john@example.com

Chọn trình soạn thảo văn bản yêu thích của bạn

git config --global core.editor vim

Thêm một số bí danh giống như SVN

git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.up rebase
git config --global alias.ci commit

Điều này sẽ tạo ra các ~ /.gitconfigtập tin từ phần trước. Hãy nhìn sâu hơn vào git config trên trang git config .

Tóm lược

Ở đây chúng tôi đã giới thiệu cách tạo một kho lưu trữ git bằng hai phương thức: git init và git clone . Hướng dẫn này có thể được áp dụng để quản lý mã nguồn phần mềm hoặc nội dung khác cần được phiên bản. Git add , git commit , git đẩy và git remote cũng được giới thiệu và sử dụng ở mức cao. 


Các khóa học qua video:
Lập trình C Java SQL Server PHP HTML5-CSS3-JavaScript
« Prev: Git: Đẩy code lên GitHub sử dụng Visual Studio Code
» Next: Git: Lưu các thay đổi
Copied !!!