46 Version control với Git và Github

Chương này trình bày tổng quan về việc sử dụng Git để làm việc nhóm với những người khác. Bạn có thể tìm các hướng dẫn nâng cao hơn ở trong phần Tài nguyên học liệu.

46.1 Git là gì?

Git là một phần mềm kiểm soát phiên bản cho phép theo dõi các thay đổi trong một thư mục. Nó có thể được sử dụng như tùy chọn “track change” trong Word, LibreOffice hoặc Google docs, nhưng dành cho tất cả các loại tệp. Nó là một trong những công cụ mạnh mẽ nhất và được sử dụng nhiều nhất để kiểm soát phiên bản.

Tại sao tôi chưa bao giờ nghe nói về Git? - Trong khi hầu hết những nhà lập trình thường xuyên phải học cách sử dụng phần mềm để kiểm soát phiên bản (Git, Mercurial, Subversion hoặc những phần mềm khác), ít người trong chúng ta xuất thân từ các ngành định lượng được dạy các kỹ năng này. Do đó, hầu hết các nhà dịch tễ học không bao giờ nghe nói về nó trong các nghiên cứu của họ, và phải tìm hiểu nó một cách nhanh chóng.

Chờ đã, tôi có nghe nói về Github, chúng có giống nhau không? - Không hoàn toàn, nhưng bạn thường sử dụng chúng cùng nhau và chúng tôi sẽ hướng dẫn bạn cách thực hiện. Nói ngắn gọn như sau:

  • Git là hệ thống kiểm soát phiên bản, là một phần của phần mềm. Bạn có thể tải phần mềm để sử dụng trên máy tính của mình hoặc để đồng bộ hóa một thư mục với một máy chủ trên web. Theo mặc định, bạn sử dụng terminal để đưa ra hướng dẫn cho Git thông qua các dòng lệnh.

  • Bạn có thể sử dụng ứng dụng người dùng/giao diện Git để không phải gõ lệnh và thực hiện các hành động tương tự (ít nhất là đối với những hành động đơn giản, rất thường dùng).

  • Nếu bạn muốn lưu trữ thư mục của mình trong một host website để cùng làm việc với những người khác, bạn có thể tạo một tài khoản tại Github, Gitlab, Bitbucket hoặc những nền tảng khác.

Vì vậy, bạn có thể sử dụng ứng dụng/giao diện Github Desktop, sử dụng Git trong nền để quản lý các tệp của bạn, cả cục bộ trên máy tính của bạn và từ xa trên máy chủ Github.

46.2 Tại sao lại sử dụng combo Git và Github?

Sử dụng Git để:

  1. Lưu trữ các phiên bản của tài liệu với sự ghi nhận các thay đổi để bạn có thể dễ dàng chuyển lại về bất kỳ trạng thái nào trước đó
  2. Có các nhánh (branches) song song, tức là các phiên bản đang phát triển/“đang làm việc” hoạt động có cấu trúc để tích hợp các thay đổi sau khi đánh giá

Điều này có thể được thực hiện cục bộ trên máy tính của bạn, ngay cả khi bạn không cộng tác với những người khác. Bạn đã bao giờ từng:

  • hối tiếc vì đã xóa một đoạn mã, chỉ để nhận ra hai tháng sau bạn thực sự cần nó?

  • quay lại một dự án đã bị tạm dừng và cố gắng nhớ liệu bạn đã thực hiện một sửa đổi gì đó phức tạp ở một trong những mô hình?

  • có một tệp model_1.R và một tệp khác model_1_test.R và một tệp model_1_not_working.R để thử mọi thứ?

  • có một tệp report.Rmd, tệp report_full.Rmd, tệp report_true_final.Rmd, tệp report_final_20210304.Rmd, tệp report_final_20210402.Rmd và khó chịu với kỹ năng lưu trữ của bạn?

Git sẽ giúp bạn giải quyết tất cả vấn đề trên, và đây cũng là những thứ rất đáng để học.

Tuy nhiên, nó thậm chí còn trở nên mạnh mẽ hơn khi được sử dụng với kho lưu trữ trực tuyến chẳng hạn như Github để hỗ trợ các dự án hợp tác. Điều này tạo điều kiện cho việc:

  • Cộng tác: những người khác có thể đánh giá, nhận xét và chấp nhận/từ chối các thay đổi

  • Chia sẻ mã, dữ liệu và kết quả đầu ra của bạn và mời phản hồi từ công chúng (hoặc riêng tư, với nhóm của bạn) và tránh:

  • “Rất tiếc, tôi đã quên gửi phiên bản cuối cùng và bây giờ bạn cần làm lại tệp mới này trong hai ngày làm việc”

  • Mina, Henry và Oumar đều làm việc cùng lúc trên một script và cần phải hợp nhất các thay đổi của họ theo cách thủ công

  • Hai người cố gắng sửa đổi cùng một tệp trên Dropbox và Sharepoint và điều này tạo ra một lỗi đồng bộ hóa.

Điều này nghe có vẻ phức tạp, tôi không phải là một lập trình viên

Bạn hoàn toàn có thể. Ví dụ về cách sử dụng nâng cao có thể khá đáng sợ. Tuy nhiên, giống với như R, hoặc thậm chí là Excel, bạn không cần phải trở thành một chuyên gia để tận dụng lợi ích của công cụ. Học một số nhỏ các hàm và khái niệm cho phép bạn theo dõi các thay đổi của mình, đồng bộ hóa các tệp của bạn trên kho lưu trữ trực tuyến và cộng tác với đồng nghiệp của bạn với thời gian ngắn.

Do tiến trình học tập, khi bạn cần hoàn thiện một công viêc trong trường hợp khẩn cấp, đó có thể không phải là thời điểm tốt nhất để tìm hiểu các công cụ này. Nhưng việc học có thể đạt được theo từng bước. Một khi bạn có được một vài khái niệm, quy trình làm việc của bạn có thể khá hiệu quả và nhanh chóng. Nếu bạn chưa làm việc trong một dự án cộng tác với mọi người và buộc phải sử dụng qua Git, đó thực sự là thời điểm tốt để có được sự tự tin khi sử dụng Git trước khi bắt tay vào cộng tác với người khác.

46.3 Cài đặt

Cài đặt Git

Git là công cụ phía sau hậu trường trên máy tính của bạn, theo dõi các thay đổi, các nhánh (phiên bản), hợp nhất và hoàn nguyên. Đầu tiên bạn phải cài đặt Git từ đường link sau https://git-scm.com/downloads.

Cài đặt giao diện (tùy chọn nhưng được khuyến nghị)

Git có ngôn ngữ lệnh riêng, có thể được nhập vào terminal. Tuy nhiên, có nhiều phần mềm/giao diện và với tư cách không phải là một lập trình viên, trong quá trình sử dụng hàng ngày, bạn sẽ hiếm khi cần tương tác trực tiếp với Git và giao diện người dùng thường cung cấp các công cụ trực quan đẹp mắt để sửa đổi tệp hoặc các nhánh.

Có nhiều tùy chọn, trên tất cả các hệ điều hành, từ thân thiện với người mới bắt đầu đến những tùy chọn phức tạp hơn. Các tùy chọn tốt cho người mới bắt đầu bao gồm cửa sổ RStudio Git và Github Desktop, mà chúng tôi sẽ giới thiệu trong chương này. Các tùy chọn trung gian (tiện ích hơn nhưng phức tạp hơn) bao gồm Source Tree, Gitkracken, Smart Git và những tùy chọn khác.

Giải thích ngắn gọn về Git clients ở đây.

Lưu ý: vì thực tế tất cả các giao diện đều sử dụng Git nội bộ, bạn có thể thử một số trong đó, chuyển từ dạng này sang dạng khác trong một dự án nhất định, sử dụng console đối với một hành động mà giao diện của bạn không hỗ trợ hoặc thậm chí thực hiện bất kỳ hành động nào trực tuyến trên Github.

Như đã lưu ý bên dưới, đôi khi bạn có thể phải viết các lệnh Git trong termial chẳng hạn như cửa sổ Ternmial trong RStudio (một tab liền kề với R Console) hoặc terminal của Git Bash.

Tài khoản Github

Đăng ký tài khoản miễn phí tại github.com.

Bạn có thể được đề nghị thiết lập xác thực hai yếu tố với một ứng dụng trên điện thoại của bạn. Đọc thêm trong tài liệu trợ giúp của Github .

Nếu bạn sử dụng Github Desktop, bạn có thể nhập thông tin đăng nhập Gitub của mình sau khi cài đặt các bước sau. Nếu bạn không biết, thông tin đăng nhập sẽ được hỏi sau khi bạn cố gắng clone một dự án từ Github.

46.4 Thuật ngữ, khái niệm và các hàm cơ bản

Giống như khi học R, bạn cần nhớ một chút thuật ngữ để hiểu Git. Đây là những điều cơ bản giúp bạn làm việc / hướng dẫn tương tác. Ở phần tiếp theo, chúng tôi sẽ chỉ ra cách sử dụng các giao diện, nhưng tốt hơn là bạn nên có một số thuật ngữ và khái niệm trong đầu, để xây dựng mô hình tinh thần của bạn, và vì bạn sẽ cần chúng khi sử dụng các giao diện.

Kho lưu trữ (Repository)

Kho lưu trữ Git (“repo”) là một thư mục chứa tất cả các thư mục con và tệp cho dự án của bạn (dữ liệu, mã code, hình ảnh, v.v.) và lịch sử sửa đổi của chúng. Khi bạn bắt đầu theo dõi những thay đổi trong kho lưu trữ, Git sẽ tạo một thư mục ẩn chứa tất cả các thông tin theo dõi. Một kho lưu trữ Git điển hình là thư mục Dự án R của bạn (xem thêm chương Dự án R để biết thêm chi tiết).

Chúng tôi sẽ hướng dẫn bạn cách tạo (initialize) một kho lưu trữ Git từ Github, Github Desktop hoặc Rstudio trong phần tiếp theo của chương này.

Commits

Một commit là một ảnh chụp nhanh của dự án tại một thời điểm xác định. Khi bạn thực hiện một thay đổi đối với dự án, bạn sẽ tạo một commit mới để theo dõi những thay đổi (the delta) được thực hiện đối với các tập tin của bạn. Ví dụ: bạn đã chỉnh sửa một vài dòng lệnh và cập nhật bộ dữ liệu liên quan. Sau khi các thay đổi của bạn được lưu, bạn có đóng gói các thay đổi cùng nhau tạo thành một “commit”.

Mỗi commit có một ID duy nhất (một hash). Đối với mục tiêu kiểm soát phiên bản, bạn có thể khôi phục dự án của mình theo thời gian dựa trên các commit, vì vậy tốt nhất là bạn nên tạo các commit tương đối nhỏ và mạch lạc. Bạn cũng sẽ đính kèm một bản tóm tắt mô tả về những thay đổi được gọi là “commit message”.

Tổ chức các thay đổi (Staged change)? Tổ chức các thay đổi nghĩa là thêm chúng vào một staging area - khu vực sân khẩu để chuẩn bị cho lần commit tiếp theo. Ý tưởng là bạn có thể quyết định rõ ràng những thay đổi nào sẽ bao gồm trong một commit cụ thể. Ví dụ, nếu bạn đã làm việc với mô hình trong một script và sau đó làm việc với một biểu đồ trong một script khác, sẽ hợp lý nếu có hai commit khác nhau (sẽ dễ dàng hơn trong trường hợp bạn muốn khôi phục các thay đổi trên biểu đồ nhưng không phải trên mô hình).

Branches

Một nhánh (branch) đại diện cho một con đường độc lập chứa các thay đổi trong kho lưu trữ (repo) của bạn. Nó là một phiên bản song song của các tệp dự án của bạn.

Các nhánh rất hữu ích để thử nghiệm các thay đổi trước khi chúng được tích hợp vào nhánh chính (main branch), thường là phiên bản chính/cuối cùng/“live” của dự án của bạn. Khi bạn hoàn thành việc thử nghiệm trên một nhánh, bạn có thể hợp nhất những thay đổi đó vào nhánh chính của bạn, hoặc xóa những thay đổi không thành công.

Lưu ý: bạn không cần phải cộng tác với người khác để sử dụng các nhánh, cũng như không cần phải có một kho lưu trữ trực tuyến từ xa.

Kho lưu trữ cục bộ và từ xa

Clone (Nhân bản) là tạo một bản sao của kho lưu trữ Git ở một nơi khác.

Ví dụ: bạn có thể clone một kho lưu trữ trực tuyến từ Github xuống máy tính của bạn hoặc bắt đầu với một kho lưu trữ cục bộ (local repository) và clone nó trực tuyến lên Github.

Khi bạn đã clone một kho lưu trữ, các tệp dự án tồn tại ở hai nơi:

  • kho lưu trữ CỤC BỘ (LOCAL) trên máy tính của bạn. Đây là nơi bạn thực hiện các thay đổi thực tế đối với các tệp/code.

  • TỪ XA (REMOTE), kho lưu trữ trực tuyến: các phiên bản của tệp dự án trên kho lưu trữ Github (hoặc trên bất kỳ nền tảng nào khác).

Để đồng bộ hóa các kho này, chúng ta sẽ sử dụng nhiều hàm hơn. Thật vậy, không giống như Sharepoint, Dropbox hoặc các phần mềm đồng bộ hóa khác, Git không thực hiện tự động cập nhật kho lưu trữ cục bộ của bạn dựa trên những gì có trên cloud, hoặc ngược lại. Tuy nhiên, bạn có thể chọn thời điểm và cách thức đồng bộ hóa.

  • git fetch tải xuống các thay đổi mới từ kho lưu trữ từ xa nhưng không làm thay đổi kho lưu trữ cục bộ của bạn. Hãy coi như nó giống như việc kiểm tra trạng thái của kho lưu trữ từ xa.

  • git pull tải xuống các thay đổi mới từ kho lưu trữ từ xa và cập nhật kho lưu trữ cục bộ của bạn.

  • Khi bạn đã thực hiện một hoặc một số commit cục bộ, bạn có thể git push để đẩy các commit đến kho lưu trữ từ xa. Điều này giúp gửi các thay đổi của bạn tới Github để người khác có thể xem và kéo về (pull) nếu họ muốn.

46.5 Bắt đầu: tạo một kho lưu trữ mới

Có nhiều cách để tạo kho lưu trữ mới. Bạn có thể làm điều đó từ R console, từ Github, hoặc thông qua giao diện người dùng.

Hai cách tiếp cận thường dùng để tạo một kho lưu trữ là:

  • Tạo một Dự án R mới từ kho lưu trữ Github hiện có hoặc mới (ưu tiên cho người mới bắt đầu), hoặc
  • Tạo kho lưu trữ Github cho một dự án R hiện có

Các tệp khởi động

Khi bạn tạo một kho lưu trữ mới, bạn có thể tùy chọn tạo tất cả các tệp bên dưới hoặc bạn có thể thêm chúng vào kho lưu trữ của mình ở giai đoạn sau. Chúng thường nằm trong thư mục “gốc” của kho lưu trữ.

  • Tệp README là tệp mà người khác có thể đọc để hiểu tại sao dự án của bạn tồn tại và những điều họ nên biết để sử dụng nó. Tệp này ban đầu sẽ trống, nhưng bạn có thể hoàn thiện nó sau đó.

  • Tệp .gitignore là tệp văn bản trong đó mỗi dòng sẽ chứa các thư mục hoặc tệp mà Git nên bỏ qua (không theo dõi các thay đổi). Đọc thêm về điều này và xem các ví dụ tại đây.

  • Bạn có thể chọn license cho dự án của mình, để những người khác biết họ có thể sử dụng hoặc tái lập dự án của bạn trong những điều kiện nào. Để biết thêm thông tin, hãy xem Creative Commons licenses.

Tạo một kho lưu trữ mới trong Github

Để tạo một kho lưu trữ mới, hãy đăng nhập vào Github và tìm một nút màu xanh lục để tạo một kho lưu trữ mới. Một kho lưu trữ trống được tạo ra và có thể được clone xuống máy tính của bạn (xem phần tiếp theo để biết thêm chi tiết).

Bạn phải chọn nếu bạn muốn kho lưu trữ của mình ở dạng công khai (hiển thị với mọi người trên internet) hoặc riêng tư (chỉ hiển thị với những người trong sự cho phép của bạn). Điều này có ý nghĩa quan trọng nếu dữ liệu của bạn nhạy cảm. Nếu kho lưu trữ của bạn là riêng tư, bạn sẽ gặp phải một số giới hạn trong các trường hợp đặc biệt, chẳng hạn như nếu bạn đang sử dụng actions trong Github để tự động chạy code trên cloud.

Clone từ kho lưu trữ Github

Bạn có thể clone một kho lưu trữ Github có sẵn để tạo một dự án R mới cục bộ trên máy tính của bạn.

Kho lưu trữ Github có thể là một kho lưu trữ đã tồn tại và chứa nội dung, hoặc có thể là một kho lưu trữ trống mà bạn vừa tạo. Trong trường hợp thứ hai, về cơ bản bạn đang tạo một repo Github và dự án R cục bộ trên máy tính của bạn cùng một lúc (xem hướng dẫn ở trên)

Lưu ý: nếu bạn không có quyền đóng góp trên kho lưu trữ Github, trước tiên bạn có thể fork kho lưu trữ đó vào hồ sơ riêng của bạn, và sau đó tiếp tục với các hành động khác. Forking được giải thích ở phần cuối của chương này nhưng chúng tôi khuyên bạn nên đọc các phần khác trước.

Bước 1: Điều hướng trong Github đến kho lưu trữ, nhấp vào nút màu xanh lá cây “Code” và sao chép HTTPS clone URL (xem hình ảnh minh họa bên dưới)

Bước tiếp theo có thể được thực hiện trong bất kỳ giao diện người dùng nào. Chúng tôi sẽ minh họa bằng Rstudio và Github desktop.

Trong Rstudio

Trong RStudio, để bắt đầu một dự án R mới, bạn cần nhấp vào File > New Project > Version Control > Git

  • Khi được yêu cầu nhập “Repository URL”, hãy dán URL HTTPS từ Github 
  • Gán cho dự án R một cái tên ngắn gọn, đầy đủ thông tin
  • Chọn nơi Dự án R mới sẽ được lưu cục bộ trên máy tính của bạn
  • Chọn “Open in new session” và nhấp vào mục “Create project”

Bạn hiện đang trong một dự án RStudio mới, cục bộ trên máy tính của bạn, là một bản sao của kho lưu trữ online trên Github. Dự án cục bộ này và kho lưu trữ Github hiện đã được liên kết.

Trong Github Desktop

  • Nhấn vào File > Clone a repository

  • Chọn tab URL

  • Dán đường dẫn HTTPS URL từ Github vào hộp đầu tiên

  • Chọn thư mục mà bạn muốn lưu kho lưu trữ cục bộ của mình

  • Nhấn vào “CLONE”

Tạo một Github repo mới từ dự án R đã có sẵn

Một kịch bản khác là bạn có một dự án R đã tồn tại với các nội dung và bạn muốn tạo một kho lưu trữ Github cho nó.

  1. Tạo một kho lưu trữ Github mới, trống cho dự án (Xem hướng dẫn ở trên)
  2. Clone cục bộ kho lưu trữ này (Xem hướng dẫn về HTTPS ở trên)
  3. Sao chép tất cả nội dung từ dự án R đã có từ trước của bạn (mã, dữ liệu, v.v.) vào kho lưu trữ trống, cục bộ, mới này (ví dụ: sử dụng sao chép và dán).
  4. Mở dự án mới của bạn trong RStudio và chuyển đến cửa sổ Git. Các tệp mới sẽ được đăng ký dưới dạng tệp có thay đổi, và hiện được theo dõi bởi Git. Do đó, bạn có thể đóng gói những thay đổi này dưới dạng một commitpush chúng lên Github. Sau khi được push, kho lưu trữ trên Github của bạn sẽ theo dõi sự thay đổi của tất cả các tệp.

Xem phần quy trình làm việc Github bên dưới để biết chi tiết về quy trình này.

Bây giờ, nó trông như thế nào?

Trong RStudio

Khi bạn đã clone kho lưu trữ Github sang một dự án R mới, bây giờ bạn sẽ thấy trong RStudio có một tab “Git”. Tab này xuất hiện bên cạnh cửa sổ RStudio Environment của bạn:

Lưu ý các nút được khoanh tròn trong hình trên, vì chúng sẽ được giới thiệu dưới đây (từ trái sang phải):

  • Nút để commit những tệp có thay đổi đã được lưu tới nhánh cục bộ “local branch” (sẽ mở ra một cửa sổ mới)
  • Mũi lên màu xanh lam hướng lên để pull (cập nhật phiên bản của nhánh cục bộ với bất kỳ các thay đổi được thực hiện trên phiên bản từ xa/Github của nhánh đó)
  • Mũi tên màu xanh lục hướng xuống push (gửi bất kỳ các commits/thay đổi nào trong phiên bản cục bộ lên phiên bản từ xa/Github của nhánh đó)
  • Tab Git trong RStudio
  • Nút để tạo một nhánh MỚI bằng cách sử dụng bất kỳ nhánh cục bộ nào được hiển thị bên phải làm cơ sở. Bạn hầu như luôn muốn tách khỏi nhánh chính (sau khi bạn pull lần đầu tiên để cập nhật nhánh chính)
  • Nhánh bạn hiện đang làm việc
  • Những thay đổi bạn đã thực hiện đối với code hoặc các tệp khác sẽ xuất hiện bên dưới

Trong Github Desktop

Github Desktop là một ứng dụng độc lập trong máy tính cho phép bạn quản lý tất cả các kho lưu trữ của bạn. Khi bạn mở nó, giao diện của nó cho phép bạn chọn kho lưu trữ bạn muốn làm việc và sau đó thực hiện các thao tác Git cơ bản tại đây.

46.6 Quy trình làm việc với Git + Github

Tổng quan về quy trình

Khi bạn đã hoàn tất các bước thiết lập (được mô tả ở trên), bạn sẽ có một Github repo được kết nối (cloned) với một dự án R cục bộ. Nhánh chính (được tạo theo mặc định) còn được gọi là phiên bản “live” của tất cả các tệp tin. Khi bạn muốn sửa đổi, một thực hành tốt đó là tạo một nhánh mới từ nhánh chính (giống như “Tạo một bản sao”). Đây là quy trình làm việc điển hình trong Git vì việc tạo một nhánh là dễ dàng và nhanh chóng.

Quy trình làm việc điển hình như sau:

  1. Đảm bảo rằng kho lưu trữ cục bộ của bạn được cập nhật, hãy cập nhật nó nếu nó chưa phải bản mới nhất

  2. Chuyển đến nhánh mà bạn đã làm việc trước đây hoặc tạo một nhánh làm việc mới để thử một số thứ

  3. Làm việc với các tệp trực tiếp trên máy tính của bạn, tạo một hoặc nhiều commit với nhánh làm việc này

  4. Cập nhật phiên bản từ xa của nhánh làm việc với các thay đổi của bạn (push)

  5. Khi bạn hài lòng với nhánh làm việc này, bạn có thể hợp nhất phiên bản trực tuyến vào nhánh “chính” trực tuyến để chuyển tiếp các thay đổi

Các thành viên khác trong nhóm có thể đang làm điều tương tự với các nhánh của riêng họ, hoặc cũng có thể đóng góp các commits vào nhánh làm việc của bạn.

Chúng ta sẽ đi qua một cách chi tiết hơn từng bước của quá trình trên ở phần sau. Đây là một giản đồ mà chúng tôi đã phát triển - nó ở định dạng bảng hai chiều vì vậy nó sẽ giúp các nhà dịch tễ học dễ dàng hiểu được.

Dây là một sơ đồ khác.

Lưu ý: cho đến gần đây, thuật ngữ nhánh “master” vẫn được sử dụng, nhưng bây giờ thuật ngữ này được gọi là nhánh “main (chính)”.

Nguồn hình ảnh

46.7 Tạo một nhánh mới

Khi bạn chọn một nhánh để làm việc, Git đặt lại trạng thái thư mục làm việc của bạn trở lại lần cuối cùng bạn ở trên nhánh này.

Trong cửa sổ Rstudio Git

Đảm bảo bạn đang ở trong nhánh “chính”, sau đó nhấp vào biểu tượng màu tím để tạo một nhánh mới (xem hình trên).

  • Bạn sẽ được yêu cầu đặt tên nhánh của mình trong một từ (có thể sử dụng dấu gạch dưới nếu cần).
  • Bạn sẽ thấy rằng bạn vẫn đang ở trong cùng một dự án R, nhưng bạn không còn làm việc trên nhánh “chính” nữa.
  • Sau khi được tạo, nhánh mới cũng sẽ xuất hiện trên trang web Github dưới dạng một nhánh.

Bạn có thể xem các nhánh tại cửa sổ Git trong Rstudio bằng cách nhấp vào “History”

Trong Github Desktop

Quy trình tương tự bên trên, bạn được yêu cầu đặt tên cho nhánh làm việc của mình. Sau đó, bạn sẽ được yeu cầu “Publish your branch to Github - Xuất bản nhánh làm việc của bạn lên Github” để làm cho nhánh mới cũng xuất hiện trong kho lưu trữ từ xa.

Trong console

Điều thực sự đang xảy ra ẩn phía sau là bạn tạo ra một nhánh với lệnh git branch, sau đó chuyển đến nhánh đó bằng lệnh git checkout (vd: nói cho Git biết rằng các commit tiếp theo của bạn sẽ xảy ra trên nhánh đó). Từ kho lưu trữ git của bạn, hãy gõ:

git branch my-new-branch  # Create the new branch branch
git checkout my-new-branch # Go to the branch
git checkout -b my-new-branch # Both at once (shortcut)

Để biết thêm thông tin về cách sử dụng bảng console, hãy xem phần Lệnh Git ở cuối.

46.8 Commit các thay đổi

Giờ đây, bạn có thể chỉnh sửa code, thêm tệp mới, cập nhật bộ dữ liệu, v.v.

Mọi thay đổi của bạn đều được theo dõi, sau khi tệp tương ứng được lưu. Các tệp đã thay đổi sẽ xuất hiện trong tab RStudio Git, trong Github Desktop hoặc sử dụng lệnh git status trong terminal (xem bên dưới).

Bất cứ khi nào bạn thực hiện các thay đổi quan trọng (ví dụ: thêm hoặc cập nhật một phần của code), bạn hãy tạm dừng việc thay đổi và commit những thay đổi đó. Hãy tưởng tượng mỗi một commit là một “lô (batch)” của các thay đổi cùng hướng tới một mục đích chung. Bạn sẽ luôn có thể tiếp tục sửa đổi tệp sau khi đã commit các thay đổi trên đó.

Lời khuyên về cách commit: nói chung, tốt hơn là bạn nên tạo các commit nhỏ để có thể dễ dàng khôi phục các chỉnh sửa nếu có vấn đề phát sinh, sau đó commit chúng cùng nhau. Để làm được điều này, bạn sẽ cần phải commit thường xuyên. Khi mới bắt đầu, bạn có thể sẽ quên commit thường xuyên, nhưng sau đó thói quen commit thường xuyên bắt đầu xuất hiện.

Trong Rstudio

Ví dụ dưới đây cho thấy rằng, kể từ lần commit cuối cùng, tập lệnh R Markdown “collab.Rmd” đã thay đổi, và một số hình ảnh PNG đã được thêm vào.

Bạn có thể tự hỏi những hình vuông màu vàng, xanh lam, xanh lá cây và đỏ bên cạnh tên tệp có ý nghĩa gì. Đây là ảnh chụp nhanh từ RStudio cheatsheet trong đó giải thích ý nghĩa của chúng. Lưu ý rằng các thay đổi với màu vàng “?” có thể hoặc là staged, commited và pushed.

  • Nhấn vào nút “Commit” trong cửa sổ Git, nút này sẽ mở ra một cửa sổ mới (hiển thị bên dưới)

  • Nhấp vào tên tệp trong hộp phía trên bên trái

  • Xem lại những thay đổi bạn đã thực hiện đối với tệp đó (được đánh dấu màu xanh lá cây hoặc đỏ)

  • “Trình bày - Stage” các tệp, sẽ bao gồm những thay đổi có trong commit. Bạn có thể thực hiện việc này bằng cách chọn hộp bên cạnh tên tệp. Ngoài ra, bạn có thể đánh dấu nhiều tên tệp và sau đó nhấp vào “Stage”

  • Viết một thông điệp commit mô tả ngắn gọn những thay đổi (bắt buộc)

  • Ấn vào nút “Commit”. Một hộp thoại xuất hiện cho biết lệnh commit được thực hiện thành công hoặc một thông báo về thực hiện lỗi.

Giờ đây, bạn có thể thực hiện nhiều thay đổi hơn và nhiều lần commit hơn, bao nhiêu lần tùy ý

Trong Github Desktop

Bạn có thể xem danh sách các tệp đã được thay đổi ở bên trái. Nếu như bạn chọn một tệp văn bản, bạn sẽ thấy một bản tóm tắt về các sửa đổi đã được thực hiện trong ngăn bên phải (chế độ xem sẽ không hoạt động trên các tệp phức tạp hơn như .docs hoặc .xlsx).

Để stage các thay đổi, chỉ cần đánh dấu vào ô nhỏ gần tên tệp. Khi bạn đã chọn các tệp bạn muốn thêm vào lần commit này, hãy đặt một cái tên cho commit và mô tả (tùy chọn) và sau đó nhấp vào nút commit.

Trong console

Hai hàm thực sự thực hiện các thao tác trên là git add để chọn/stage tệp và git commit để thực hiện commit.

git status # see the changes 

git add new_pages/collaboration.Rmd  # select files to commit (= stage the changes)

git commit -m "Describe commit from Github Desktop" # commit the changes with a message

git log  # view information on past commits

Thêm vào một commit trước đó

Điều gì sẽ xảy ra nếu bạn đã commit một số thay đổi, tiếp tục làm việc và nhận ra rằng bạn đã thực hiện các thay đổi mà lẽ ra “thuộc về” lần commit trước đó (theo ý kiến của bạn). Đừng sợ! Bạn có thể nối những thay đổi này vào lần commit trước đó của mình.

Trong Rstudio, nó sẽ khá rõ ràng vì có một hộp kiểm “Thêm vào commit trước - Amend previous commit” trên cùng dòng với nút COMMIT.

Vì một số lý do không rõ ràng, chức năng này không có sẵn trong Github Desktop, nhưng vẫn có cách (khó hiểu về mặt khái niệm nhưng dễ dàng). Nếu bạn đã commit nhưng chưa đẩy các thay đổi của bạn lên nhánh chính, nút “UNDO” xuất hiện ngay dưới nút COMMIT. Nhấp vào nó và nó sẽ khôi phục commit của bạn (nhưng vẫn giữ các staged files và thông điệp commit). Lưu các thay đổi của bạn, thêm tệp mới vào commit nếu cần và commit lại.

Trong cửa số console:

git add [YOUR FILES] # Stage your new changes

git commit --amend  # Amend the previous commit

git commit --amend -m "An updated commit message"  # Amend the previous commit AND update the commit message

Lưu ý: hãy suy nghĩ trước khi sửa đổi các commit đã được công khai và chia sẻ với các cộng tác viên của bạn.

46.9 Pull và push các thay đổi lên Github

“PULL trước, PUSH sau”

Một thực hành tốt đố là fetchpull trước khi bạn bắt đầu làm việc dự án của bạn, để cập nhật phiên bản nhánh trên máy tính của bạn với bất kỳ thay đổi nào đã được thực hiện trên nhanh đó ở phiên bản từ xa/Github.

Đừng ngần ngại PULL thường xuyên. Luôn nhớ pull trước khi push.

Khi các thay đổi của bạn được thực hiện và được commit, cũng như bạn hài lòng với chúng, bạn có thể push (đẩy) commit của mình lên sang phiên bản từ xa/Github nhánh làm việc của bạn.

Kiểm tra và lặp lại trong khi bạn đang làm việc trên kho lưu trữ.

Lưu ý: việc khôi phục các thay đổi đã được commit nhưng chưa push lên Github (tức là vẫn còn ở local) dễ dàng hơn nhiều so với các commit đã được push lên kho lưu trữ từ xa (và có thể đã được ai đó pull xuống), vì vậy tốt nhất là bạn nên push những thay đổi khi bạn hoàn thành nó và giới thiệu về các thay đổi mà bạn đã thực hiện.

Trong Rstudio

PULL - Đầu tiên, ấn vào biểu tượng “Pull” (mũi tên hướng xuống) để fetch và pull cùng một lúc.

PUSH - Ấn vào icon màu xanh “Push” (mũi tên hướng lên). Bạn có thể được yêu cầu nhập tên người dùng và mật khẩu Github của bạn. Trong lần đầu tiên được hỏi, bạn có thể cần nhập hai dòng lệnh Git sau vào Terminal:

  • git config –global user.email “ (Địa chỉ email Github của bạn), và
  • git config –global user.name “Tên đăng nhập Github của bạn”

Để tìm hiểu thêm về cách nhập các lệnh này, hãy xem phần bên dưới về các lệnh Git.

MẸO: Bị yêu cầu cung cấp mật khẩu quá nhiều? Xem các chương 10 & 11 trong hướng dẫn này để kết nối với kho lưu trữ bằng khóa SSH (phức tạp hơn)

Trong Github Desktop

Nhấp vào nút “Fetch origin” để kiểm tra xem có commit mới nào trên kho lưu trữ từ xa hay không.

Nếu Git tìm thấy các commit mới trên kho lưu trữ từ xa, nút commit sẽ thay đổi thành nút “Push”. Bởi vì cùng một nút được sử dụng để push và pull, bạn không thể push các thay đổi của mình nếu bạn không pull trước đó.

Bạn có thể chuyển đến tab “History” (gần tab “Changes”) để xem tất cả các commits (của bạn và những người khác). Đây là một cách tốt để tự làm quen với những gì những người cộng tác với bạn đã làm. Bạn có thể đọc các thông điệp commit, các mô tả nếu có và so sánh code của hai tệp bằng cách sử dụng cửa sổ diff.

Khi tất cả các thay đổi từ xa đã được pull và ít nhất một thay đổi cục bộ đã được commit, bạn có thể push bằng cách nhấp trên cùng một nút.

Console

Không có gì ngạc nhiên, các lệnh là fetch, pullpush.

git fetch  # are there new commits in the remote directory?
git pull   # Bring remote commits into your local branch
git push   # Puch local commits of this branch to the remote branch

Tôi muốn pull nhưng tôi cũng có các chỉnh sửa trong local

Điều này đôi khi có thể xảy ra: khi bạn đã thực hiện một số thay đổi trên kho lưu trữ cục bộ của mình, nhưng kho lưu trữ từ xa có các commit mà bạn đã không pull.

Git sẽ từ chối pull vì nó có thể ghi đè các thay đổi của bạn. Có một số chiến lược để giữ các thay đổi của bạn, được mô tả tốt trong trang Happy Git with R, trong đó có hai điểm chính sau:

  • commit các thay đổi của bạn, fetch các thay đổi từ xa, pull chúng xuống, giải quyết các xung đột nếu có (xem phần bên dưới) và push mọi thứ lên

  • stash các thay đổi của bạn, tức là lưu trữ chúng sang một bên, sau đó pull và unstash (khôi phục), sau đó commit, giải quyết các xung đột và push.

Nếu các tệp có thay đổi từ remote và hay đổi bởi local không trùng lặp, Git có thể tự động giải quyết các xung đột.

Trong Github Desktop, việc này có thể được thực hiện với các nút bấm. Để stash, hãy truy cập Branch > Stash all changes.

46.10 Hợp nhất nhánh vào Nhánh chính

Nếu bạn đã thực hiện xong các thay đổi, bạn có thể bắt đầu quá trình hợp nhất những thay đổi đó vào nhánh chính. Tùy thuộc vào tình huống của bạn, việc này có thể nhanh hoặc bạn có thể cần sự xem xét và phê duyệt của các thành viên trong nhóm.

Hợp nhất cục bộ bằng Github Desktop

Bạn có thể hợp nhất các nhánh bằng Github Desktop. Đầu tiên, hãy truy cập (checkout) nhánh sẽ là nơi tiếp nhận các commit, nói cách khác, nhánh bạn muốn cập nhật. Sau đó vào menu và lựa chọn Branch > Merge into current branch. Một hộp thoại sẽ cho phép bạn chọn nhánh bạn muốn nhập vào.

Trong console

Đầu tiên hãy quay lại nhánh sẽ nhận các thay đổi. Nó thường là nhánh có tên master, nhưng nó cũng có thể là một nhánh khác. Sau đó hợp nhất nhánh làm việc của bạn vào master.

git checkout master  # Go back to master (or to the branch you want to move your )
git merge this_fancy_new_branch

Trang này trình bày một ví dụ nâng cao hơn về phân nhánh và giải thích sơ bộ về cơ chế của nó.

Trong Github: gửi một pull requests

Mặc dù hoàn toàn có thể hợp nhất hai nhánh một cách cục bộ, hoặc không thông báo cho bất kỳ ai, thì việc hợp nhất có thể được thảo luận hoặc kiểm tra bởi một số người trước khi được tích hợp vào nhánh master. Để giúp đỡ quá trình này, Github cung cấp một số tính năng thảo luận cho việc hợp nhất có tên là: pull request.

Một pull request (một “PR”) là một yêu cầu hợp nhất một nhánh vào một nhánh khác (nói cách khác, một yêu cầu nhánh làm việc của bạn được pull vào nhánh “chính”). Một pull request thường bao gồm nhiều lần commit. Một pull request thường bắt đầu một cuộc thảo luận và quá trình review trước khi nó được chấp nhận và được hợp nhất vào nhánh chính. Ví dụ, bạn có thể đọc các cuộc thảo luận về pull request trên trang github của package dplyr.

Bạn có thể gửi một pull request (PR) trực tiếp từ trang web (như minh họa bên dưới) hoặc từ Github Desktop.

  • Đi tới kho lưu trữ Github (trực tuyến)
  • Xem tab “Pull Requests” và ấn vào nút “New pull request”
  • Chọn nhánh cần hợp nhất từ menu thả xuống để hợp nhất vào nhánh chính
  • Viết chi tiết bình luận cho Pull Request và ấn vào “Create Pull Request”.

Trong ảnh dưới đây, nhánh “forest” được chọn để hợp nhất vào nhánh “chính” (main):

Bây giờ bạn đã có thể xem một pull request (ảnh minh họa bên dưới):

  • Kiểm tra tab “Files changed” để xem nhánh “chính” sẽ thay đổi như thế nào nếu được hợp nhất.
  • Ở phía bên phải, bạn có thể yêu cầu một thành viên trong nhóm review bằng cách gắn thẻ (tag) ID Github của họ. Nếu bạn muốn, bạn có thể thiết lập các cài đặt cho repository để yêu cầu một ai đó chấp thuận trước khi hợp nhất vào nhánh chính.
  • Khi pull request được chấp thuận, nút “Merge pull request” sẽ được active. Hãy ấn vào đó.
  • Khi hợp nhất thành công, xóa nhánh của bạn như được giải thích bên dưới.

Giải quyết xung đột

Khi hai người cùng thay đổi code trên cùng một (hoặc nhiều) dòng, thì xung đột khi hợp nhất sẽ xảy ra. Thực tế là Git sẽ từ chối việc đưa ra quyết định phiên bản nào sẽ được giữ, nhưng nó cho phép bạn tìm kiếm nơi xảy ra xung đột. ĐỪNG HOẢNG LẠN. Hầu hết các trường hợp khá dễ dàng để giải quyết.

Ví dụ, trên Github:

Sau khi việc hợp nhất nhắc nhở về có xung đột, hãy mở tệp trong trình chỉnh sửa ưa thích của bạn. Xung đột sẽ được đánh dấu bằng một chuỗi các ký tự như sau:

Đoạn văn bản nằm giữa <<<<<<< HEAD======= đến từ local repository của bạn, và đoạn văn bản nằm giữa =======>>>>>>> đến từ một nhánh khác (có thể là bản gốc, master hoặc bất kỳ nhánh nào theo lựa chọn của bạn).

Bạn phải quyết định phiên bản nào của code bạn muốn giữ (hoặc thậm chí viết một phiên bản thứ ba, bao gồm các thay đổi từ cả hai phía), xóa phần còn lại và loại bỏ tất cả các ký tự đánh dấu mà Git đã thêm vào (<<<<<<< HEAD, =======, >>>>>>> origin/master/your_branch_name).

Sau đó, lưu tệp, stage và commit nó: Đây là commit để tạo phiên bản hợp nhất “chính thức”. Đừng quên push sau đó.

Nếu bạn và những người cộng tác với bạn thường xuyên pull và push, thì các xung đột lớn hiếm khi xảy ra.

Lưu ý: Nếu bạn tự tin tương tác với console, có nhiều lựa chọn hợp nhất nâng cao (ví dụ: bỏ qua khoảng trống, cho người cộng tác quyền ưu tiên, v.v.).

Xóa nhánh của bạn

Khi một nhánh đã được hợp nhất vào master và bạn không cần đến nó nữa, bạn có thể xóa nó.

46.10.0.1 Github + Rstudio

Đi tới thư mục lưu trữ trên Github và nhấn nút để xem toàn bộ các nhánh hiện có (cạnh mũi tên trỏ xuống để lựa chọn nhánh). Bây giờ tìm nhánh của bạn và nhấn biểu tượng thúng rác bên cạnh nó. Đọc thêm về cách xóa một nhánh tại đây.

Hãy chắc chắn là bạn cũng đã xóa nhánh trong máy tính của mình bởi vì quá trình này không được diễn ra một cách tự động.

  • Trong RStudio, hãy chắc chắn bạn đang ở nhánh chính (Main branch)
  • Chuyển sang cửa sổ “Terminal” của RStudio (bên cạnh cửa sổR console), và gõ: git branch -d branch_name, trong đó “branch_name” là tên của nhánh mà bạn muốn xóa
  • Refresh lại cửa sổ Git và nhánh đó sẽ biến mất

46.10.0.2 Trong Github Desktop

Đơn giản chỉ cần checkout tới nhánh bạn muốn xóa, và đi tới menu Branch > Delete.

Forking

Bạn có thể fork một dự án nếu bạn muốn đóng góp cho nó nhưng không có quyền để thực hiện, hoặc chỉ là bạn muốn chỉnh sửa cho mục đích sử dụng cá nhân. Một mô tả ngắn về forking có thể xem tại đây.

Trong Github, nhấp vào nút “Fork”:

Thao tác này sẽ clone kho lưu trữ gốc, nhưng được lưu trong hồ sơ của bạn. Do đó, bây giờ có hai phiển bản của kho lưu trữ trong Github: phiên bản gốc mà bạn không thể chỉnh sửa, và phiên bản clone trong hồ sơ của bạn.

Sau đó, bạn có thể tiếp tục clone phiên bản trực tuyến xuống máy tính của bạn, sử dụng bất kỳ phương pháp nào đã được mô tả bên trên. Tiếp theo, bạn có thể tạo một nhánh mới, tạo các thay đổi, commit và push chúng lên kho lưu trữ từ xa của bạn.

Khi bạn hài lòng với các kết quả, bạn có thể tạo một Pull Request từ Github hoặc Github Desktop để bắt đầu một cuộc thảo luận với chủ sở hữu/người bảo trì của kho lưu trữ gốc.

Nếu bạn muốn lấy những commits mới hơn từ kho lưu trữ gốc thì sao?

hãy tưởng tượng ai đó đã tạo một thay đổi quan trọng trong kho lưu trữ gốc, và bạn muốn thêm những thay đổi đó vào kho lưu trữ của mình. Điều này là khả thi để đồng bộ hóa kho lưu trữ bạn đã fork với kho lưu trữ gốc. Nó yêu cầu sử dụng terminal, nhưng không quá phức tạp. Bạn chỉ cần nhớ rằng: - upstream (thượng nguồn) = kho lưu trữ gốc, là cái mà bạn không thể chỉnh sửa - origin (bản gốc) = phiên bản kho lưu trữ trong hồ sơ Github của bạn

Bạn có thể đọc tutorial này hoặc theo dõi các bước dưới đây:

Đầu tiên, gõ vào Git terminal (bên trong repo của bạn):

git remote -v

Nếu bạn chưa từng cấu hình upstream repository (kho lưu trữ gốc), bạn sẽ thấy hai dòng, bắt đầu bởi từ origin. Chúng hiển thị kho lưu trữ từ xa để fetchpush các điểm vào. Hãy nhớ, origin là biệt danh thường dùng cho phiên bản kho lưu trữ của chính bạn trên Github. Ví dụ:

Bây giờ, thêm một kho lưu trữ từ xa:

git remote add upstream https://github.com/appliedepi/epirhandbook_eng.git

Địa chỉ ở đây là địa chỉ mà Github tạo ra khi bạn clone một repository (xem mục về cloning). Bây giờ bạn sẽ có bốn điểm từ xa:

Quá trình thiết lập đã xong. Bất cứ khi nào bạn muốn lấy các sự thay đổi từ kho lưu trữ gốc (upstream), bạn chỉ cần đi tới (checkout) nhánh bạn muốn cập nhật và gõ:

git fetch upstream # Get the new commits from the remote repository
git checkout the_branch_you_want_to_update
git merge upstream/the_branch_you_want_to_update  # Merge the upstream branch into your branch.
git push # Update your own version of the remote repo

Nếu có xung đột, bạn sẽ phải giải quyết chúng như đã trình bày ở bên trên.

Tổng kết: forking là cloning, nhưng chỉ trên phía máy chủ của Github. Các hành động còn lại là điển hình của mô quy trình cộng tác(clone, push, pull, commit, merge, gửi pull requests…).

Lưu ý: trong khi forking là một khái niệm, không phải là một lệnh Git, nó cũng tồn tại ở các nền tảng khác, chẳng hạn như Bitbucket.

46.11 Chúng ta đã học được những gì

Bạn đã học được cách:

  • thiết lập Git để theo dõi sự thay đổi trong thư mục của bạn,
  • kết nối kho lưu trữ cục bộ và từ xa,
  • commit các thay đổi,
  • đồng bộ kho lưu trữ cục bộ và từ xa.

Tất cả chúng là khá đầy đủ cho những nhu cầu của một nhà dịch tễ học. Chúng ta thường không cần sử dụng những chức năng nâng cao như những lập trình viên.

Tuy nhiên, nếu bạn muốn (hoặc cần) đi xa hơn, Git cung cấp nhiều tính năng để đơn giản hóa lịch sử commit, khôi phục một hoặc nhiều commits, cherry-pick commits (chỉ lấy một vài commit trong PR), v.v. Một số chúng nghe thực sự rất thần thánh, nhưng không sao vì bạn đã có cơ bản rồi, sẽ dễ dàng để bổ sung kiến thức trên nền tảng đó.

Lưu ý là trong khi cửa sổ Git trong Rstudio và Github Desktop tốt cho những người mới bắt đầu / sử dụng trong các công việc hàng này, thì chúng không cung cấp giao diện cho những hàm Git trung cấp / cao cấp. Các giao diện đầy đủ hơn cho phép bạn phải sử dụng những tính năng nâng cao chỉ với các thao tác chuột (thông thường phải trả phí).

Hãy nhớ là bạn có thể sử dụng bất kỳ công cụ nào tại mọi thời điểm để theo dõi kho lưu trữ của mình, do đó bạn có thể cài đặt một giao diện để thỉnh thoảng sử dụng, hoặc thực hiện những tác vụ không phiỉ biến, trong khi lựa chọn một giao diện đơn giản hầu hết thời gian (vd: sử dụng Github Desktop phần lớn thời gian, và chuyển qua phần mềm SourceTree hoặc Gitbash cho những tác vụ cụ thể).

46.12 Các lệnh Git

Được khuyến khích học

Để học các lệnh Git một cách tương tác, xem trang web này.

Gõ lệnh vào đâu

Bạn gõ lệnh vào Git shell.

Lựa chọn 1 Bạn mở một Terminal mới trong RStudio. Tab này ở bên cạnh R Console. Nếu bạn không thể gõ trên đó, nhấp vào menu thả xuống ở dưới chữ “Terminal” và chọn “New terminal”. Gõ lệnh ở khoảng trống phía sau ký tự dollar “$”.

Lựa chọn 2 Bạn cũng có thể mở một shell (một terminal để gõ lệnh) bằng cách nhấp vào biểu tượng “bánh răng” màu xanh trong cửa sổ Git (bên cạnh cửa sổ RStudio Environment). Chọn “Shell” từ menu thả xuống. Một cửa sổ mới sẽ mở ra nơi mà bạn có thể gõ các lệnh sau ký tự dollar “$”.

Lựa chọn 3 Nháy chuột phải để mở “Git Bash here”, cho phép mở một cửa sổ terminal tương tự, hoặc mở Git Bash từ danh sách ứng dụng của bạn. Các thông tin về Git Bash cho người mới bắt đầu, cách tìm nó và một số lệnh bash bạn sẽ cần.

Một số lệnh mẫu

Sau đây chúng tôi sẽ trình bày một số lệnh git phổ biến. Khi bạn sử dụng chúng, hãy chú ý nhánh nào đang được active (checked-out), bởi vì điều này sẽ quyết định hành động nào được thực hiện!

Trong các lệnh dưới đây, đại diện cho tên nhánh. đại diện cho hash ID của một commit cụ thể. đại diện cho một số. Bạn không cần gõ ký tự < hoặc >.

Lệnh Git Hành động
git branch <name> Tạo một nhánh mới có tên
git checkout <name> Chuyển từ nhánh hiện tại sang nhánh có tên
git checkout -b <name> Lối tắt để tạo nhánh mới chuyển qua nó
git status Xem những thay đổi không được theo dõ
git add <file> Stage một tệp
git commit -m <message> Commit những thay đổi tới nhánh hiện tại kèm một thông điệp
git fetch Fetch các commit từ kho lưu trữ trực tuyến
git pull Pull các commit từ kho lưu trữ trực tuyến tới nhánh hiện tại
git push Push các commits trong local lên thư mục trực tuyến
git switch Cách khác của git checkout
git merge <name> Hợp nhất nhánh có tên vào nhánh hiện tại
git rebase <name> Thêm các commit từ nhánh hiện tại vào nhánh có tên

46.13 Tài nguyên học liệu

Phần lớn chương này lấy thông tin từ trang web “Happy Git with R” viết bởi Jenny Bryan. Có một chuyên mục rất hữu ích trong trang web đó có thể giúp bạn giải quyết những lỗi phổ biến về Git và các lỗi liên quan tới R.

Tài liệu Github.com documentation and start guide.

RStudio “IDE” cheatsheet bao gồm các mẹo về Git với RStudio.

https://ohi-science.org/news/github-going-back-in-time

Lệnh Git cho người mới

Một hướng dẫn tương tác để học các lệnh Git.

https://www.freecodecamp.org/news/an-introduction-to-git-for-absolute-beginners-86fa1d32ff71/: tốt cho việc học những thứ cơ bản để theo dõi các thay đổi trong một thư mục của máy tính của bạn

Lược đồ để hiểu về nhánh: https://speakerdeck.com/alicebartlett/git-for-humans

Hướng dẫn bao gồm các chủ đề cơ bản và nâng cao

https://tutorialzine.com/2016/06/learn-git-in-30-minutes

https://dzone.com/articles/git-tutorial-commands-and-operations-in-git https://swcarpentry.github.io/git-novice/ (khóa ngắn hạn) https://rsjakob.gitbooks.io/git/content/chapter1.html

Sách Pro Git được xem là tài liệu tham khảo chính thức. Trong khi một số chương khá ổn, đa số khá nặng tính kỹ thuật. Nó có thể là một nguồn tốt khi bạn đã sử dụng Git một thời gian và muốn học thêm những kiến thức nâng cao.