Git cơ bản

Giới thiệu

Khi lập trình việc bạn xóa một đoạn code nào đó và viết lại theo theo nhu yếu mới là chuyện thường hay xảy ra. Nhưng nếu sau đó bạn lại nhận được nhu yếu là không đổi khác nữa và hồi sinh lại như bắt đầu thì phải làm thế nào đây vì đoạn code mà bạn viết đã bị xóa rồi. Làm sao để hoàn toàn có thể phục sinh lại như bắt đầu đây ? Tới lúc này nếu như bạn có ứng dụng quản trị mã code thì bạn hoàn toàn có thể phục sinh lại phiên bản trước khi bạn chỉnh sửa. Có thể nói ứng dụng quản trị mã nguồn ( Version Control System – VCS ) là vô cùng thiết yếu cho lập trình viên .

Cơ bản về VCS?

Hiện nay có nhiều ứng dụng quản trị mã nguồn nhưng đa phần chia làm hai nhánh chính là

1. CVCS

Hệ thống quản lý phiên bản tập trung (Centralized Version Control System)

/git-co-ban/centralizedvcs.png
VCS tập trung

Tất cả mã nguồn và sự thay đổi sẽ được lưu trữ lại một nơi gọi là máy chủ và các máy trạm sẽ kết nối với máy chủ để sao chép và lấy mã nguồn. Nếu như máy chủ bị trục trặc, hư hỏng thì toàn bộ mã nguồn cũng bị mất nếu nhưng không có sao lưu dữ liệu lại ví dụ như:

  • Concurrent Version System (CVS) – tiếng việt là “hệ thống các phiên bản đồng thời”
  • Subversion – cũng dùng quản lý phiên bản mã nguồn khác nhau trong quá trình phát triển

2. DVCS

Hệ thống quản lý phiên bản phân tán (Distributed Version Control System)

/git-co-ban/distributedvcs.png
VCS phân tán

So với cách quản lý phiên bản tập trung khi tất cả mã nguồn và sự thay đổi chỉ được lưu một nơi là máy chủ thì trong hệ thống phân tán các máy trạm, máy khách không chỉ kiểm tra phiên bản mới nhất của tập tin mà sao chép toàn bộ mã nguồn. Như vậy nếu máy chủ ngừng hoạt động thì bạn hoàn toàn có thể lấy mã nguồn từ bất kỳ máy trạm nào để phục hồi toàn bộ hệ thống ví dụ như:

Bạn đang đọc: Git cơ bản

  • Mercurial – là phiên bản quản lý mã nguồn phân tán, đa nền dành cho lập trình viên
  • Bazaar
  • Git
    Nhưng Git là một trong những phần mềm phổ biến nhất vì ngoài việc là mã nguồn mở, dễ sử dụng, làm việc nhanh chóng thì Git còn có cộng đồng người sử dụng đông đảo để tư vấn, hỏi đáp, gỡ lỗi trong quá trình sử dụng.

Câu chuyện của Git?

Git là một hệ thống quản lý phiên bản phân tán (Distributed Version Control System) ra đời vào năm 2005 bởi Linus Torvald với mục đích quản lý mã nguồn của hệ điều hành Linux. Sau đó thì Git được phổ biến ra cộng đồng và được đón nhận và sử dụng rộng rãi cho tới ngày nay.

Lợi ích của Git

  • Lưu trữ lại được các phiên bản khác nhau của mã nguồn phần mềm
  • Khôi phục lại mã nguồn từ phiên bản bất kỳ
  • Dễ dàng so sánh giữa các phiên bản
  • Hỗ trợ nhiều người cùng làm việc trên một bộ mã nguồn hiệu quả
  • Kiểm tra thay đổi và biết được ai là người thay đổi
  • Phục hồi được các tập tin đã mất, có thể đưa về các phiên bản cũ, không lo bị mất code
  • Dễ dàng thử nghiệm mở rộng tính năng của dự án mà không làm ảnh hưởng đến phiên bản chính

Workflow Git

Bạn có thể tham khảo quy trình làm việc của Git cơ bản như trong sơ đồ bên dưới

/git-co-ban/git-workflow.png
Workflow của Git

Theo như sơ đồ thì ta hoàn toàn có thể hiểu đơn thuần cách Git thao tác là có hai môi trường tự nhiên local là dưới máy trạm, máy tính của từng lập trình viên và Remote là sever nơi chứa mã nguồn .

local

Trong thiên nhiên và môi trường local thì ta có 3 thiên nhiên và môi trường đa phần là

  • Working directory là môi trường làm việc của lập trình viên
  • Stagging area là khu vực mà lập trình viên lưu những thay đổi của mã nguồn
  • Local repo là thư mục thư mục chứa mã nguồn bao gồm những thay đổi

Remote

Là thiên nhiên và môi trường sever là nơi chứa mã nguồn và hàng loạt sự đổi khác từ lập trình viên của mã nguồn .

Ghi chú

Giữa local và remote sẽ có một chính sách tiếp xúc để thao tác đồng điệu và giải quyết và xử lý những xung đột trong mã nguồn mà tất cả chúng ta sẽ tìm hiểu và khám phá rõ hơn ở phần sau
Khi thao tác với môi trường tự nhiên local và remote thì ta có một số ít khái niệm cơ bản như sau :

  • Respository là kho lưu trữ mã nguồn và các thay đổi trong mã nguồn
    • Local repo là nơi lưu trữ mã nguồn trên máy tính của lập trình viên, mỗi máy tính là một repo
    • Remote repo là nơi lưu trữ mã nguồn trên máy chủ, có thể truy cập từ bất kỳ đâu

      Bổ sung

      • dữ liệu ở local repo có thể được đẩy lên (push) remote để lưu trữ chung
      • dữ liệu ở remote repo có thể được nhân bản (clone) về bất kỳ local repo nào và mang theo tất cả những thay đổi của mã nguồn cho tới lúc được nhân bản về
  • Commit: Mỗi lần thay đổi mã nguồn trên local repo mà lập trình viên thấy cần thiết phải lưu lại thì sẽ tiến hành commit tức là tạo ra một bản lưu toàn bộ mã nguồn và sự thay đổi. Sau khi commit xong thì lập trình viên có thể phục hồi lại mã nguồn theo phiên trước và trước trước đó nữa. Việc này tạo nên sự an tâm rất lớn khi làm việc vì sẽ không lo sợ bị mất mã nguồn.

Chi tiết hơn workflow với các khái niệm trong Git

Để bổ sung thêm workflow của Git thì chúng ta có thêm hình phía dưới

/git-co-ban/remote.jpg
remote repo trong lập trình

Trong hình này thì ta có minh họa rõ ràng hơn quy trình thao tác giữa lập trình viên A ( Developer A ), và lập trình viên B với remote repo .

Ghi chú

Ta hoàn toàn có thể giả sử là remote repo này được tạo ra bởi trưởng nhóm và đã đưa mã nguồn bắt đầu lên remote repo .
Lập trình viên A muốn thao tác thì sẽ setup ứng dụng Git lên máy, xong rồi thì sẽ nhân bản ( clone ) bộ mã nguồn về máy tính của anh ta với mà nguồn và hàng loạt đổi khác cho tới thời gian mà anh ta nhân bản mã nguồn từ remote repo về máy .
Lập trình viên A sẽ thao tác với mã nguồn trên máy tính cá thể của anh ta, thực thi đổi khác, thêm sửa xóa dữ liệu và mỗi lần anh ta thấy cần phải lưu lại việc làm của mình thì anh ta phải thực thi triển khai commit sự đổi khác mã nguồn và khi đó thì phiên bản mà anh ta đã commit sẽ được lưu lại bảo đảm an toàn trong Git .
Giả sử trong quy trình thao tác mà anh ta muốn kiểm tra xem mã nguồn trên remote repo có bị biến hóa so với lần trước anh ta nhân bản hay không thì anh ta hoàn toàn có thể dùng lệnh fetch và pull để thực thi lấy mã nguồn mới nhất .
Sau khi commit lại tài liệu trên máy tính thành công xuất sắc lập trình viên A hoàn toàn có thể đẩy ( push ) tài liệu từ local repo của anh ta lên remote repo .
Tương tự cho lập trình viên B cũng sẽ dùng những lệnh tương tự như để thao tác .

Tóm lại Git workflow là

quy trình thao tác của Git là bảo vệ sự đồng nhất thống nhất giữa remote repo và những local repo còn lại từ những lập trình viên trải qua những lệnh thao tác mà Git phân phối .

Giải thích các thuật ngữ cơ bản của Git

  1. Master
    là nhánh chính của dự án của bạn. Thông thường nó bao gồm toàn bộ những mã nguồn và sự thay đổi
  2. Branch
    là (nhánh) đại diện cho các phiên bản cụ thể tách ra từ dự án chính. Mặc định khi tạo nhánh mới thì nhánh đó sẽ chứa toàn bộ mã nguồn và những thay đổi của nhánh chính (master)
  3. Commit
    Đại diện cho phiên bản mà bạn muốn lưu trữ lại những thay đổi vào Git so với phiên bản trước đó
  4. Checkout
    sử dụng lệnh git checkout [tên nhánh] để chuyển đổi giữa các nhánh.
  5. Fetch
    Lệnh git fetch kiểm tra và tải xuống tất cả các tệp branch vào local repo. Sử dụng để lưu những thay đổi mới nhất của remote repo vào local repo của bạn. Nó có thể tìm và nạp vào nhiều branch cùng một lúc
  6. Fork
    tạo một bản sao của remote repo. Chúng ta có thể dùng fork để thử nghiệm các thay đổi mà không làm ảnh hưởng đến dự án chính
  7. Head
    commit ở đầu của một branch gọi là head. Nó đại diện cho commit mới nhất của local repo
  8. Index
    Bất cứ khi nào lập trình viên thực hiện việc thay đổi, thêm, sửa xóa một file thì nó vẫn nằm trong chỉ mục cho đến khi nó sẵn sàng được commit các thay đổi. Nó như là khu vực làm việc (stagging) cho Git. Ta có thể sử dụng lệnh git status để xem nội dung của khu vực index này
  9. Merge
    Lệnh git merge kết hợp với các yêu cầu kéo (pull) để thêm các thay đổi từ nhánh này sang nhánh khác
  10. Origin
    là phiên bản mặc định của repo. Nó cũng đóng vai trò là bí danh để liên lạc với master
    lệnh git push origin master để đẩy các thay đổi đã được commit ở local repo lên remote repo ở nhánh master
  11. Pull lệnh git pull thường được sử dụng để thêm các thay đổi vào nhánh chính master
  12. Push lệnh git push thường được sử dụng để đẩy những cập nhật đã được commit từ local repo lên remote repo
  13. Rebase lệnh git rebase cho phép phân tách, di chuyển hoặc thoát khỏi các commit. Nó cũng được sử dụng để kết hợp hai nhánh khác nhau
  14. Stash lệnh git stash sẽ loại bỏ các thay đổi khỏi khu vực index (stagging) và xóa stashes chúng đi sau
  15. Tags cung cấp cho bạn một cách để theo dõi các commit quan trọng. Các tag nhẹ đơn giản chỉ đóng vai trò là con trỏ trong khi các tags chú thích được lưu trữ dưới dạng đối tượng đầy đủ thông tin.
  16. Upstream trong ngữ cảnh của Git thì upstream đề cập đến nơi mà bạn push các thay đổi từ local repo. Thường là nhánh chính master

    Xem thêm thông tin

    Bạn hoàn toàn có thể tìm hiểu thêm thêm tại Git docs để biết thêm chi tiết cụ thể

Cài đặt Git

Bạn cứ lên trang download của Git tại đây và tải bản Git phù hợp cho hệ điều hành của bạn. Sau đó bạn tiến hành cài đặt Git bình thường.
Để biết bạn đã cài đặt Git thành công hay chưa thì bạn mở command prompt (trên window) hoặc khi đang ở trong folder bất kỳ thì click chuột phải và chọn Git Bash here sau đó gõ lệnh git version. Nếu kết quả trả về phiên bản thì bạn đã cài thành công

Các lệnh cơ bản trong Git

  1. git config dùng để thiết lập người dùng git bao gồm username và email. Để kiểm tra cấu hình username và email ta có thể dùng lệnh git config --global user.name và lệnh git config --global user.email. Để thiết lập người dùng thì ta dùng lệnh git config --glocal user.name "username"git config --global user.email "username@email.com". Vậy là bạn đã thiết lập xong người dùng trong Git.
  2. git init dùng để khởi tạo một git local repo cho dự án mới hoặc hiện tại. Ta đứng tại thư mục gốc của dự án và mở Git Bash hoặc command prompt lên và gõ lệnh git init thì phần mềm Git sẽ tạo một folder ẩn có tên .git ở ngay trong folder gốc của local repo (dự án). Và bắt đầu từ đây Git sẽ theo dõi toàn bộ sự thay đổi mã nguồn trong này.
  3. git clone dùng để nhân bản remote repo về local repo trên máy tính của bạn với lệnh git clone git_clone_url.git . Sau lệnh này thì Git sẽ copy toàn bộ mã nguồn và những thay đổi từ remote repo về local repo của bạn.
  4. git status dùng lệnh git status để kiểm tra trạng thái của dự án bạn đang làm việc và kết quả trả về bạn sẽ thấy được trạng thái.
  5. git add với lệnh git add tên_file thì dùng để thêm thay đổi đến khu vực stagging/index trong dự án

    Mẹo

    Bạn có thể dùng lệnh git add . để thêm toàn bộ những thay đổi vào khu vực stagging/index

  6. git commit là thực hiện hành động để lưu lại toàn bộ thay đổi của mã nguồn dự án từ đầu hoặc từ lần commit trước tới hiện tại. Trước khi commit thì toàn bộ files, thư mục phải được đưa vào stagging/index qua lệnh git add bên trên. Cách dùng là dùng lệnh git commit -m 'lời nhắn ghi chú cho lần commit này'
  7. git push/git pull sau khi bạn commit tất cả thay đổi vào mã nguồn ở local repo rồi thì bạn có thể dùng lệnh git push để đưa code đã thay đổi từ local repo lên remote repo. Hoặc khi bạn muốn lấy tất cả những thay đổi mới nhất từ remote repo thì bạn dùng lệnh git pull để đồng bộ từ remote repo về local repo của bạn. Lệnh cơ bản như sau
    git push hoặc git pull
  8. git branch dùng liên quan tới làm việc với nhánh, như lệnh liệt kê nhánh ở local repo ta có git branch còn nếu muốn xem toàn bộ nhánh cả ở remote repo và local repo thì ta dùng lệnh git branch -a.
    Nếu muốn tạo nhánh mới thì dùng lệnh git branch . Nếu muốn chuyển sang nhánh khác thì dùng lệnh git checkout . Muốn vừa tạo nhánh và chuyển sang nhánh đó luôn thì dùng lệnh git checkout branch
  9. git stash tác dụng lưu thay đổi mà chưa muốn commit ngay lập tức. Cách dùng là khi đang ở trong thư mục dự án thì dùng lệnh git stash.
    1 git merge để hợp nhất hai nhánh lại với nhau. Cách làm là chuyển tới nhánh chính. Sau đó từ nhánh chính thì dùng lệnh git merge
  10. git reset khi bạn đã đưa tập tin, thư mục nào đó vào khu vực stagging/index rồi nhưng giờ lại không muốn commit nó nữa thì ta dùng lệnh này git reset HEAD
  11. git remote làm việc với remote repo với một số lệnh tham khảo như là git remote để xem remote dạng tên remote. Còn lệnh git remote -v để xem remote repo với đầy đủ liên kết tới remote repo.

Lưu ý khi làm việc với Git

  • Git cheat sheets dùng để tham khảo lệnh Git khi bạn quên như một số link bên dưới

Rogerdudler
Git docs
Git sheet
Git cheat sheet

  • Nên commit thường xuyên và ghi chú khi commit tách nhỏ commit ra với ghi chú đầy đủ sẽ giúp các thành viên khác có một cái nhìn chi tiết từng thay đổi trong dự án và giải quyết xung đột cũng dễ dàng hơn
  • Test rồi mới commit cần phải test các thay đổi có đúng với yêu cầu và đã hoàn tất hay chưa.
  • Thử nghiệm trên branch khác khi muốn thử nghiệm thì nên tạo branch mới để không ảnh hưởng tới dự án
  • Theo Git workflow của nhóm điều này đảm bảo các thành viên trong nhóm làm việc hiệu quả và theo quy trình. Tránh việc lộn xộn trong team khi mà hợp nhất mã nguồn.

Câu chuyện của Github

Quay trở lại với tấm hình này thì GitHub sẽ đóng vai trò là Remote Repo sẽ là máy chủ nơi mà bạn chứa mã nguồn.
Theo như trích dẫn trên Wikipedia thì

GitHub, Inc. is a provider of Internet hosting for software development and version control using Git. It offers the distributed version control and source code management (SCM) functionality of Git, plus its own features.

Dịch nôm na ra thì là

GitHub là nhà cung cấp dịch vụ lưu trữ trên mạng để phát triển và kiểm soát phiên bản phần mềm sử dụng Git. Công ty cung cấp chức năng kiểm soát phiên bản phân tán và quản lý mã nguồn (SCM) của Git cùng với tính năng riêng của Github.

GitHub năm 2018 đã trở thành công ty con của Microsoft cũng có phiên bản miễn phí cho người dùng không hạn chế tạo repo riêng tư nhưng repo riêng tư bị hạn chế được 2000 phút GitHub Action trong một tháng. Nhưng như vậy cũng là quá đủ cho lập trình viên có thể tạo tài khoản miễn phí trên GitHub rồi.

Sau khi bạn tạo thông tin tài khoản trên Github rồi thì bạn hoàn toàn có thể khởi đầu tạo “ New Repository ” là nơi sẽ chứa hàng loạt mã nguồn của dự án Bất Động Sản .

Sau đó thì thường tại phần code của repository ta sẽ sao chép phần đường dẫn của repository đó với kết thúc là .git và quay lại thư mục dự án. Mở command prompt tại thư mục gốc đó và thêm remote repo vào với lệnh git add remote <đường_dẫn_của_repository_mới_tạo_trên_github>

Xong rồi bạn có thể kiểm tra bằng lệnh git remote -v để kiểm tra chính xác đường dẫn đó luôn.

Vậy là bạn đã tạo xong tài khoản Github, tạo được remote repository trên GitHub và thêm vào thành công remote repo vào dự án ở local repo. Bây giờ thì bạn có thể thực hiện làm việc trên local repo và commit rồi đẩy (push) mã nguồn lên remote repo lưu trên mạng ở Github. Bạn cũng có thể chia sẻ remote repo và làm việc nhóm cùng thành viên khác mà không lo bị mất mã nguồn rồi

Lời nhắn nhủ

Trên đây là hàng loạt bài viết, những bạn cứ nhiệt tình phản hồi, góp ý vào bên dưới nếu có bất kỳ vướng mắc nào nhé .

Source: https://wikifin.net
Category: Blog

Leave a Comment

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *