Git, cho người mới bắt đầu

Tìm hiểu những kiến thức cơ bản về Git trong 12 phút.

Nếu chưa quen với việc viết mã, có thể bạn sẽ muốn tìm hiểu về Git!

Git là một phần mềm kiểm soát phiên bản phân tán, về cơ bản, Git cho phép nhiều người làm việc song song và lưu lại lịch sử của tất cả các thay đổi được thực hiện. Điều này đảm bảo không có xung đột mã cũng như cho phép các nhà phát triển khả năng hoàn nguyên các tệp hoặc toàn bộ dự án về phiên bản trước của họ.

Git có thể theo dõi những thay đổi đã được thực hiện, ai đã thực hiện thay đổi đó, thay đổi được thực hiện khi nào và lý do tại sao. Có phải rất tuyệt vời? Chưa hết, Git hoàn toàn miễn phí!

Trong bài viết này, tôi sẽ giúp bạn hiểu cách điều hướng trong Git. Sau khi bạn hiểu rõ về Git, nó sẽ khá dễ dàng để sử dụng. Đây là sơ lược về các chủ đề:

  1. Cài đặt Git
  2. Tạo kho lưu trữ Git cục bộ
  3. Commit các tệp vào kho lưu trữ cục bộ
  4. Xem lại tất cả các commit đã thực hiện
  5. Bỏ qua các tệp trong commit
  6. Các nhánh Git
  7. Tạo một kho lưu trữ từ xa để chia sẻ với những người khác
  8. Di chuyển mã giữa kho lưu trữ cục bộ và từ xa
  9. Nội dung bổ sung! Gắn thẻ

Cài đặt Git

Nếu bạn chưa có Git trên máy tính của mình, hãy làm theo hướng dẫn trong liên kết bên dưới để cài đặt.

https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

Nếu bạn không chắc liệu mình đã cài đặt hay chưa, hãy nhập thông tin sau vào thiết bị đầu cuối của mình để kiểm tra.

Lưu ý: Để sử dụng Git, người dùng Mac sẽ sử dụng thiết bị đầu cuối để tương tác. Đối với người dùng Windows, nó sẽ là dấu nhắc lệnh.

Tạo kho lưu trữ Git cục bộ

Nếu bạn đang bắt đầu mới với một dự án hoàn toàn mới, bạn sẽ cần tạo một kho lưu trữ Git cục bộ. Đây là nơi các tệp và điểm kiểm tra các thay đổi của bạn sẽ được lưu trữ để kiểm soát việc lập phiên bản.

Trước khi chúng ta khởi tạo kho lưu trữ cục bộ, hãy tạo một thư mục trên Máy tính của bạn để làm ví dụ và đặt tên cho nó là “git-demo-example”.

Bây giờ, hãy mở terminal (hoặc Command Prompt), sao chép các lệnh bên dưới, dòng 1 sẽ điều hướng đến thư mục bạn vừa tạo và dòng 2 sẽ tạo kho lưu trữ cục bộ của chúng ta.

Chính nó! Bạn đã tạo kho lưu trữ cục bộ đầu tiên của mình nằm trong thư mục git-demo-example.

Tiếp theo, hãy đặt một số tệp bất kì vào thư mục. Tạo một tệp có tên là fruit.py trong thư mục git-demo-example và sao chép đoạn mã sau vào tệp. Lưu ý: Nếu bạn chưa cài đặt Python, bạn có thể tạo tệp .txt thay vì tệp .py.

Lưu tài liệu và thoát. Tạo thêm một tệp có tên veggies.py trong cùng một thư mục và sao chép đoạn mã sau vào tệp.

Bây giờ, bạn có hai tệp trong thư mục git-demo-example.

Commit các tệp vào kho lưu trữ cục bộ

Đến thời điểm này, những gì chúng ta đã làm là tạo một kho lưu trữ cục bộ và thêm hai tệp vào thư mục làm việc (thư mục git-demo-example). Chúng ta sẽ phải thêm các tệp vào kho lưu trữ cục bộ để có thể bắt đầu theo dõi các tệp và các thay đổi mà chúng ta thực hiện. Quá trình thêm tệp vào kho lưu trữ cục bộ này được gọi là committing.

Đây là một quá trình gồm hai bước để commit mã vào kho lưu trữ cục bộ. Trước tiên, bạn cần thêm tệp vào staging area, sau đó commit. Bước bổ sung này trong quy trình cho phép bạn kiểm soát những tệp bạn thực sự muốn commit với kho lưu trữ cục bộ cũng như cho phép bạn thay đổi ý định nếu vô tình chọn sai tệp ban đầu.

Để chỉ thêm một tệp duy nhất vào staging area, bạn có thể sử dụng git add fruit.py.

Để thêm nhiều tệp, sử dụng: git add fruit.py veggies.py.

Nếu bạn có nhiều tệp hoặc không muốn gõ quá nhiều lần tên tệp của mình, bạn có thể sử dụng git add. để thêm tất cả các tệp có trong thư mục..

Tiếp tục thêm cả hai tệp vào staging area bằng cách sử dụng một trong hai tùy chọn được đề cập ở trên. Nếu bạn muốn kiểm tra kỹ những gì có trong staging area, bạn có thể sử dụng git status. Bạn cũng có thể xem hai tệp mới bên dưới và các thay đổi chưa được commit.

Để commit tệp, chúng ta sẽ sử dụng git commit -m “My First commit”. “Commit đầu tiên của tôi” có thể là bất kỳ loại nhận xét nào bạn muốn đưa ra về mã hoặc về những thay đổi đã thực hiện. Chắc chắn bạn nên nhập nội dung nào đó có liên quan, để tương lai bạn có thể nhớ những gì mình đã làm.

Chúng ta vừa thực hiện commit đầu tiên của mình! Bạn đã làm rất tốt!

Tôi vừa phát hiện ra! Trong danh sách các loại rau, chúng ta đã liệt kê bí ngô là một loại rau, nhưng thực ra nó là một loại trái cây! Bạn có biết điều đó không? Hãy sửa lỗi đó. Mở hai tệp chúng ta đã tạo và loại bỏ bí ngô khỏi rau, sau đó thêm nó vào trái cây. Sau khi thực hiện các thay đổi đối với tài liệu đó, hãy tiếp tục và thực hiện một commit khác.

Bạn đã thực hiện hai commit, hãy coi đây là những trạm kiểm soát mà chúng ta có thể hoàn nguyên trở lại bất kỳ lúc nào.

Lời nhắc hữu ích: Hãy nhớ commit thường xuyên! Nó chắc chắn giúp công việc của bạn dễ dàng hơn, rất nhiều!

Xem lại tất cả các commit đã thực hiện

Nếu bạn muốn xem danh sách tất cả các commit mà chúng ta đã thực hiện, bạn có thể sử dụng git log. Nhật ký là nơi bạn sẽ tìm thấy tác giả của commit, ngày commit và thông báo commit cho mọi commit đã được thực hiện.

Nếu bạn đã thực hiện nhiều commit, có thể cuộn qua nhật ký này một lúc. Có thể đáng giá khi sử dụng git log –pretty = oneline, nó sẽ rút gọn các thông điệp commit của bạn thành một dòng.

Có những lệnh thú vị khác mà bạn cũng có thể sử dụng như git log – author = julia nếu bạn muốn xem tất cả các commit do Julia thực hiện.

Nếu bạn tò mò, bài viết này sẽ chỉ cho bạn 10 cách khác nhau để sử dụng công cụ ghi nhật ký.

Bỏ qua các tệp trong commit

Nếu có các tệp mà bạn không bao giờ muốn commit, hãy tạo tệp .gitignore để hỗ trợ giải quyết vấn đề đó. Tệp .gitignore này sẽ cho git biết tệp hoặc mẫu nào nên được bỏ qua để chúng không vô tình bị phân đoạn và commit. Đó là điều thông minh cần làm!

Tạo tệp .gitignore bằng lệnh này trong terminal: touch .gitignore.

Mở .gitignore và thêm tên của các tệp mà bạn không muốn commit. Lưu ý: nếu bạn không thấy .gitignore, có thể nó đã bị ẩn, vì vậy hãy đảm bảo rằng bạn đang xem cả các tệp ẩn.

Đoạn mã dưới đây là một ví dụ về tệp .gitignore trông như thế nào. Dòng đầu tiên và dòng thứ hai là tên của các tệp mà ta có thể có nhưng không muốn đưa vào. Bạn cũng có thể chỉ định các mẫu được so khớp với tên tệp. Ví dụ: picture* sẽ tìm kiếm tất cả các tệp bắt đầu bằng từ picture. Dấu hoa thị ở đây thực chất là một ký tự đại diện khớp với zero hoặc nhiều ký tự khác.

Hãy tiếp tục với commit thứ ba bằng cách thêm tệp .gitignore vào kho lưu trữ cục bộ của bạn.

Các nhánh Git

Một điều thực sự thú vị mà bạn có thể làm với Git là tạo các nhánh khác nhau để giữ công việc của mình tách biệt với nhánh chính. Điều này rất hữu ích nếu bạn muốn kiểm tra mã.

Trong thiết bị đầu cuối, nếu nhập git status, bạn có thể thấy rằng bạn đang ở trên nhánh chính.

Theo mặc định, bạn sẽ luôn làm việc với nhánh chính trong Git. Hai commit chúng ta đã thực hiện trước đó đều là trên nhánh chính. Chúng ta có khả năng tạo một nhánh mới (for example test), nơi có thể kiểm tra mã mới mà không làm rối các mã trong nhánh chính.

Trong ví dụ trên, mỗi vòng tròn đại diện cho một commit. Khi chúng ta thực hiện các commit trong nhánh kiểm tra, các điểm kiểm tra đó sẽ được giữ riêng biệt với nhánh chính. Nếu thích mã trong nhánh thử nghiệm, bạn có thể hợp nhất với nhánh chính. Nếu các ý tưởng được triển khai trong nhánh thử nghiệm không thành công, bạn cũng có thể loại bỏ chúng. Khi làm việc với nhiều cộng tác viên, bạn cũng nên tạo nhánh của riêng mình để làm việc.

Hãy tạo một nhánh mới có tên là test.

Để xem mình đang ở nhánh nào, hãy nhập git branch và nhánh bạn đang làm việc sẽ được đánh dấu màu xanh lá cây. Và chúng ta hiện đang làm việc trên nhánh chính.

Sẽ cần phải chuyển từ nhánh chính sang nhánh test nếu bạn muốn commit mã cho nhánh test. Để làm như vậy, hãy sử dụng lệnh sau:

Nếu bạn gõ lại git branch, hãy lưu ý rằng chúng ta đang ở nhánh test.

Hợp nhất các nhánh

Khi chúng ta ở trong nhánh test, hãy sửa đổi tệp fruit.py và commit các thay đổi đối với nhánh test này. Bạn có thể nhận thấy rằng chúng ta có các loại trái cây trùng lặp trong danh sách. Thêm đoạn mã sau vào tệp results.py để có được một bộ duy nhất.

Lưu và thực hiện thay đổi mới.

Nhánh test này chứa hai commit đầu tiên mà chúng ta đã thực hiện trước đó cùng với commit mã mới nhất khi nhánh chính chỉ chứa hai commit đầu tiên từ trước đó. Tuy nhiên, chúng ta cũng có thể hợp nhất nhánh test với nhánh chính để nhánh chính có được mã mới nhất.

Trước khi hợp nhất hai nhánh, bạn có thể xem những gì đã thay đổi giữa các nhánh bằng cách sử dụng git diff test master. Test là nhánh nguồn của bạn và master là nhánh mục tiêu.

Để thực hiện hợp nhất, bạn sẽ phải quay lại nhánh chính và sau đó sử dụng chức năng hợp nhất:

Tạo một kho lưu trữ từ xa để chia sẻ với những người khác

Thật tuyệt khi bạn đã lưu tất cả các thay đổi trong kho lưu trữ cục bộ của mình, nhưng có thể bạn sẽ muốn chia sẻ nó với đồng nghiệp hoặc với mọi người. Lúc này, hãy tạo một kho lưu trữ từ xa và đồng bộ hóa nó với kho lưu trữ cục bộ. Bằng cách đó, bạn có thể đẩy các thay đổi đến vị trí trung tâm nơi người khác có thể truy cập mã của bạn và họ cũng có thể giúp đóng góp.

Có một vài trang web để lưu trữ các dự án Git, nhưng với mục đích của các bài tập này, tôi sẽ sử dụng một trang web có tên là Github.com. Nếu bạn chưa có tài khoản, hãy đăng ký miễn phí trên https://github.com/.

Trên trang chủ, nhấp vào Bắt đầu một dự án và tạo một kho lưu trữ. Tôi sẽ đặt tên nó là “Git-for-Beginners”.

Sau khi bạn thiết lập kho lưu trữ, hãy sao chép url. Như được hiển thị bên dưới, url kho lưu trữ của tôi là https://github.com/julia-git/Git-for-Beginners.git.

Bây giờ, chúng ta cần cho kho lưu trữ cục bộ của mình biết vị trí kho lưu trữ từ xa của chúng ta đang đặt để thiết lập liên kết. Thay thế dòng mã bên dưới bằng url kho lưu trữ của riêng bạn.

Bạn sẽ được yêu cầu nhập tên người dùng và mật khẩu Github để kết nối.

Di chuyển mã giữa kho lưu trữ cục bộ và từ xa

Kết nối đã được thiết lập, để di chuyển tất cả mã trong kho lưu trữ cục bộ của bạn sang kho lưu trữ từ xa, hãy sử dụng git push -u origin master.

Với dòng mã này, mọi thứ từ nhánh chính trên kho lưu trữ cục bộ của chúng ta giờ cũng sẽ nằm trong kho lưu trữ từ xa. Nếu bạn muốn đẩy một nhánh khác, chỉ cần thay thế “master” bằng tên của nhánh muốn đẩy.

Nếu quay lại tab trình duyệt của mình, bạn sẽ thấy rằng các mục đã được đẩy thành công vào kho lưu trữ từ xa.

Nếu ai đó đang làm việc trong dự án này và đẩy các thay đổi vào kho lưu trữ từ xa, bạn có thể kéo họ xuống kho lưu trữ cục bộ trên máy tính của bạn. Hãy sử dụng lệnh sau để kéo từ nhánh chính: git pull origin master.

Các lệnh bên dưới là một số trong những điều chúng ta đã học được!

Sao chép kho lưu trữ từ xa

Bây giờ, hãy thử một cái gì đó khác đi. Giả sử rằng bạn không bắt đầu mới trong một dự án, nhưng bạn đang giúp đỡ đồng đội của mình trong dự án của họ. Chúng ta sẽ phải đi đến kho lưu trữ từ xa của họ và sao chép nó vào máy tính của chúng ta để tạo một kho lưu trữ cục bộ. Hãy tiếp tục và sao chép dự án mà tôi đã tạo cho bài viết này bằng cách sử dụng url kho lưu trữ sau: https://github.com/julia-git/Git-for-Beginners.

Về cơ bản, lệnh này sẽ tải kho lưu trữ xuống máy tính cục bộ của bạn và duy trì kết nối giữa hai kho lưu trữ.

Chúc mừng! Bạn đã học tất cả các lệnh cơ bản để điều hướng với Git. Nếu bạn gặp khó khăn và cần trợ giúp để tìm ra lệnh nào sẽ sử dụng như thế nào, bạn luôn có thể sử dụng        git –help.

Chúng ta là con người và chúng ta sẽ mắc sai lầm. Git cung cấp nhiều cách khác nhau để chúng ta có thể hoàn tác những sai lầm đó và khắc phục những rủi ro dù là nhỏ hay lớn.

NỘI DUNG BỔ SUNG!

Gắn thẻ

Bạn có thể gắn thẻ các điểm cụ thể trong lịch sử commit nếu bạn nghĩ nó là quan trọng, ví dụ: phiên bản phát hành phần mềm 1.0, 2.0, v.v.

Lightweight so với Thẻ chú thích

Có hai loại thẻ bạn có thể tạo: lightweight và chú thích.

Lightweight dành cho các mục đích tạm thời vì nó chỉ trỏ đến một commit cụ thể. Các thẻ được chú thích có đầy đủ trên các đối tượng chứa tên, email, ngày tháng, tin nhắn và xác minh danh tính của người gắn thẻ.

Để tạo một lightweight cho phiên bản 1.4:

Để tạo một thẻ chú thích cho phiên bản 1.6:

Bạn có thể thay đổi tên trong phần trích dẫn ở trên bằng bất kì điều gì bạn muốn.

Muốn xem bạn hiện có những thẻ nào? Hãy sử dụng git tag.

Gắn thẻ vào một thời điểm sau đó

Nếu commit hiện tại không phải là những gì mà bạn muốn gắn thẻ, chúng ta có thể xem qua lịch sử commit để tìm một commit khác.

Giả sử rằng commit thứ hai là commit mà chúng ta muốn gắn thẻ. Sao chép toàn bộ hoặc một phần id vào câu lệnh thẻ của bạn. Như được hiển thị trong đoạn mã trên, id chúng ta sẽ sử dụng là 479d92.

Đẩy thẻ đến kho lưu trữ từ xa

Các thẻ sẽ không được đẩy vào kho lưu trữ từ xa trừ khi bạn làm điều đó một cách rõ ràng. Thay thế tên của thẻ bên dưới bằng tên bạn muốn đẩy lên máy chủ.

Xóa thẻ

Nếu bạn muốn xóa một thẻ trong kho lưu trữ cục bộ, hãy làm như sau:

Còn nếu bạn muốn xóa một thẻ trong kho lưu trữ từ xa:

Chúc bạn thành công!

Viết một bình luận