> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/vi/co-so-tri-thuc/044-github-synchronization.md).

# Đồng bộ hóa GitHub

**Đồng bộ hóa GitHub** là một [tính năng cao cấp](/latex/vi/co-so-tri-thuc/120-overleaf-premium-features.md). Các tính năng cao cấp của Overleaf có sẵn cho người tham gia trong [Overleaf Commons](https://www.overleaf.com/for/universities), thành viên của nhóm [các gói đăng ký](https://www.overleaf.com/for/groups), và chủ sở hữu của các [các gói đăng ký](https://www.overleaf.com/user/subscription/plans).

Tóm tắt

Tính năng Đồng bộ hóa GitHub cho phép bạn liên kết trực tiếp các dự án Overleaf của mình với một kho lưu trữ GitHub đóng vai trò là kho lưu trữ từ xa cho dự án Overleaf của bạn, và cung cấp một cách để đẩy và kéo các thay đổi giữa chúng. Đồng bộ hóa GitHub chỉ có thể được sử dụng trên [Github.com](https://www.github.com) và không thể được dùng để kết nối với các cài đặt GitHub Enterprise khác.

Bạn có thể đồng bộ hóa một dự án Overleaf với một kho lưu trữ GitHub bằng cách либо tạo một dự án Overleaf mới từ một kho lưu trữ GitHub hiện có hoặc bằng cách tạo một kho lưu trữ GitHub mới từ một dự án Overleaf hiện có. Không thể đồng bộ hóa một dự án Overleaf hiện có với một kho lưu trữ Github hiện có.

* Tính năng Đồng bộ hóa GitHub được bật bằng cách liên kết tài khoản GitHub của bạn với tài khoản Overleaf của bạn
* Có thể tạo dự án mới từ các kho lưu trữ GitHub hiện có
* Có thể tạo các kho lưu trữ trên GitHub dựa trên các dự án Overleaf hiện có
* Các dự án và kho lưu trữ đã liên kết được giữ đồng bộ bằng **GitHub** tùy chọn trong **Menu**

### Liên kết tài khoản Overleaf của bạn với tài khoản GitHub của bạn

Để sử dụng tính năng Đồng bộ hóa GitHub, bạn phải liên kết tài khoản Overleaf của mình với tài khoản Github của mình. Bạn có thể thực hiện việc này trong Overleaf của bạn [Cài đặt tài khoản](https://www.overleaf.com/user/settings). Xin lưu ý rằng khả năng của Overleaf để kết nối với một số kho lưu trữ hoặc tổ chức nhất định được liên kết với tài khoản của bạn có thể phụ thuộc vào các cài đặt quyền đã được cấu hình trong GitHub.

### Tạo một dự án Overleaf mới từ một kho lưu trữ GitHub

Từ menu Dự án mới, bạn có thể chọn tùy chọn GitHub. Thao tác này sẽ hiển thị cho bạn một danh sách các kho lưu trữ mà Overleaf có thể nhìn thấy thông qua tài khoản GitHub của bạn, dựa trên các cài đặt quyền GitHub của bạn.

![Tạo mới github.png](/files/0bbb48da7df466a195870d49eba20cf6653100e8)

Một số điều cần lưu ý khi tạo một dự án Overleaf mới từ một kho lưu trữ GitHub hiện có.

* Có các giới hạn về kích thước áp dụng cho các dự án Overleaf, điều này có thể ngăn các kho lưu trữ GitHub lớn hơn được dùng để tạo dự án. Vui lòng xem [trang này](/latex/vi/co-so-tri-thuc/119-overleaf-plan-limits.md) để biết tổng quan về các giới hạn áp dụng cho kích thước và số lượng tệp trong một dự án Overleaf.
* Các dự án Overleaf không hỗ trợ Git submodule hoặc Git LFS.

### Tạo một kho lưu trữ GitHub mới từ một dự án Overleaf

Từ menu Dự án Overleaf, bạn có thể chọn GitHub làm một trong các tùy chọn Đồng bộ hóa. Thao tác này sẽ cung cấp cho bạn một hộp thoại nơi bạn có thể nhập tên của một kho lưu trữ GitHub mới để đồng bộ hóa với dự án Overleaf của bạn.

![Menu dự án github.png](/files/5f89c2c68e786831dd7763e9cff07396fcf53cb7)

### Đồng bộ hóa với GitHub

Việc đồng bộ hóa giữa GitHub và Overleaf không diễn ra tự động, các tùy chọn đồng bộ hóa được hiển thị bằng cách nhấp vào **GitHub** tùy chọn trong **Menu**. Khi đó hộp thoại GitHub sẽ báo nếu có thay đổi mới cần kéo từ GitHub. Bạn sẽ luôn được đưa ra tùy chọn để đẩy các thay đổi lên GitHub (lưu ý: tùy chọn này sẽ được hiển thị ngay cả khi Overleaf và GitHub đều đã được cập nhật).

![hình ảnh hộp thoại GitHub](/files/25d84141e1020b9354a05746c0e5d165abc0340b)

Các commit lên GitHub được tạo khi nút Đẩy các thay đổi Overleaf lên GitHub được nhấp. Khi đó có thể nhập một thông điệp commit tùy chọn.

* Các thay đổi trong lịch sử Overleaf từ GitHub sẽ được hiển thị là do anonymous tạo ra.
* Các thay đổi trong lịch sử GitHub từ Overleaf sẽ được hiển thị là do chủ sở hữu tài khoản GitHub được liên kết tạo ra.

### Giải quyết xung đột gộp

Có thể xảy ra trường hợp khi các thay đổi được thực hiện cả trong Overleaf và trong Github, Git không thể tự động xác định cách gộp chúng. Ví dụ, nếu cộng tác viên của bạn đã thay đổi một dòng trong Overleaf và bạn đã thay đổi cùng dòng đó trong kho lưu trữ Github, Overleaf có thể không thể chọn phiên bản nào để giữ.

Khi điều đó xảy ra, thay vì gộp vào nhánh chính của bạn, chúng tôi sẽ đẩy một nhánh mới lên kho lưu trữ của bạn. Nhánh này sẽ có một tên mô tả (bao gồm ngày và giờ tạo nhánh), và chứa phiên bản của tài liệu trong Overleaf. Khi bạn cố gắng đồng bộ hóa với GitHub, một thông báo sẽ được hiển thị cho biết rằng cần giải quyết một xung đột gộp.

![Hộp thoại xung đột gộp GitHub](/files/8c800b6cd9e4687846342ed8588f8f9bd3e2da42)

Để đồng bộ lại, bạn cần gộp nhánh Overleaf vào nhánh chính (mặc định) của mình. Bạn có thể làm điều này trên máy tính của mình bằng cách kéo cả hai nhánh và gộp bằng git hoặc bất kỳ công cụ nào khác, sau đó đẩy kết quả trở lại Github. Hoặc bạn có thể gộp trực tiếp trên Github bằng cách tạo một pull request từ nhánh Overleaf và sử dụng tính năng giải quyết xung đột của họ. Cả hai cách tiếp cận đều được giải thích trong [tài liệu Github](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts).

### Truy cập các kho lưu trữ trong các tổ chức GitHub của bạn

Bạn có thể đồng bộ hóa các dự án Overleaf với các kho lưu trữ được liên kết với tài khoản GitHub của bạn, và cũng có thể đồng bộ hóa với các dự án trong các tổ chức GitHub mà bạn là thành viên. Để đồng bộ hóa với các kho lưu trữ trong các tổ chức GitHub liên kết của bạn, các tổ chức đó phải cấp quyền để ứng dụng OAuth của Overleaf được truy cập.

* Nếu bạn là thành viên của tổ chức, bạn có thể làm theo các bước được mô tả [ở đây](https://help.github.com/articles/requesting-organization-approval-for-oauth-apps/) để yêu cầu quyền truy cập cho ứng dụng Overleaf vào tổ chức của bạn.
* Nếu bạn là chủ sở hữu tổ chức, bạn có thể làm theo các bước được mô tả [ở đây](https://help.github.com/articles/approving-oauth-apps-for-your-organization/) để phê duyệt ứng dụng Overleaf cho tổ chức.

### Giới hạn tệp của Đồng bộ hóa GitHub

Các dự án Overleaf phải tuân theo các giới hạn kích thước riêng lẻ, cũng như giới hạn về tổng số tệp trong một dự án như đã nêu [ở đây](/latex/vi/co-so-tri-thuc/119-overleaf-plan-limits.md). Mặc dù bản thân Git có thể xử lý một commit duy nhất thay đổi hàng nghìn tệp, API GitHub được dùng bởi tính năng Đồng bộ hóa GitHub của Overleaf cũng áp đặt các giới hạn về số lượng tệp có thể được đẩy hoặc kéo. Khuyến nghị giới hạn số lượng tệp trong một commit riêng lẻ dưới 100 tệp, và tổng kích thước dự án nhỏ hơn 100 MB nếu sử dụng đồng bộ GitHub. Các dự án vượt quá các kích thước này có thể vẫn hoạt động, nhưng chúng tôi khuyến nghị ở trong các giới hạn này để tránh các sự cố đồng bộ hóa tiềm ẩn.

### Ngắt kết nối một dự án khỏi một kho lưu trữ

Mặc dù có thể tạo nhiều dự án từ một kho lưu trữ GitHub hiện có duy nhất, **không thể thay đổi kho lưu trữ được liên kết với một dự án nhất định**. Khi một dự án đã được liên kết với một kho lưu trữ, nó không thể được hủy liên kết và dùng để tạo một kho lưu trữ mới. Nếu bạn cần tạo một kho lưu trữ mới từ một dự án cụ thể, bạn phải tạo một bản sao mới của dự án, rồi sau đó tạo kho lưu trữ mới từ bản sao đó.

### Các hạn chế đã biết

**Các nhánh**: Hệ thống Git của Overleaf không hỗ trợ phân nhánh.

**Symlink**: Hệ thống Git của Overleaf không xử lý Symlink. Một symlink có thể được đẩy vào một dự án Overleaf, nhưng sẽ được chuyển thành một tệp thông thường, và sẽ ghi đè symlink cục bộ vào lần tiếp theo dự án được kéo.

**Quyền tệp**: Hệ thống Git của Overleaf không giữ lại quyền thực thi. Khi làm việc với đồng bộ GitHub, nếu bất kỳ tệp nào có bit thực thi trong GitHub được đồng bộ sang Overleaf, một commit tự động sẽ được Overleaf kích hoạt để đặt lại quyền tệp.

**Git LFS**: Các dự án Overleaf không hỗ trợ Git Large File Storage.

**Git Submodule**: Các dự án Overleaf có thể hoạt động như các submodule Git trong các kho lưu trữ khác, nhưng không thể chứa các submodule Git khác. Để tham chiếu đến các tệp từ các dự án khác, nên sử dụng tính năng thêm từ một dự án khác.

**Theo dõi thay đổi và Bình luận**: Rất tiếc, việc kéo từ GitHub về Overleaf có thể dẫn đến mất hoặc dịch chuyển các thay đổi được theo dõi và các nhận xét; do đó, chúng tôi không khuyến nghị kết hợp công việc đang diễn ra trên GitHub với việc sử dụng theo dõi thay đổi và/hoặc nhận xét.

**Đồng bộ hóa trực tiếp với GitHub Enterprise hoặc GitLab:** API GitHub được dùng bởi Overleaf chỉ có thể kết nối với các kho lưu trữ được lưu trữ trên github.com. Bạn có thể đồng bộ hóa gián tiếp với các dự án được lưu trữ trên các nhà cung cấp khác bằng cách sử dụng [tích hợp Overleaf Git](/latex/vi/co-so-tri-thuc/040-git-integration.md) trực tiếp của Overleaf.

**Kết nối một dự án hiện có với một kho lưu trữ hiện có**: Không thể đồng bộ hóa một dự án Overleaf hiện có với một kho lưu trữ Github hiện có.

**Quyền tác giả của các lần đẩy lên GitHub**: Người dùng Github duy nhất mà Overleaf biết đến là người dùng có tài khoản GitHub được liên kết với tài khoản Overleaf và sở hữu dự án đó. Tất cả các commit đều được thực hiện bằng API GitHub, API này rõ ràng tạo các commit đó bằng danh tính của người dùng đó. Vì vậy, tất cả các commit sẽ hiển thị trong lịch sử GitHub là đến từ người dùng được liên kết. Trong lịch sử của Overleaf, các thay đổi được hiển thị là "Anonymous (qua GitHub)".

**Lịch sử Git và lịch sử Overleaf:** Các thay đổi ở phía Overleaf không có ánh xạ một-một với các commit GitHub. Nhiều người dùng có thể thực hiện thay đổi ở phía Overleaf, nhưng các thay đổi này sẽ được gộp thành một commit duy nhất dưới người dùng GitHub được kết nối khi quá trình đồng bộ hóa được kích hoạt.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/vi/co-so-tri-thuc/044-github-synchronization.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
