Tạo nhánh trống trên GitHub


115

Tôi muốn tạo một nhánh GitHub mới, được gọi là release.

Chi nhánh này cần để trống ! Tuy nhiên, có một nhánh hiện có với x cam kết và tôi không muốn có lịch sử cam kết của nó.

Phương pháp duy nhất tôi tìm thấy là tạo một nhánh cục bộ --orphan .



1
Tại sao bạn muốn làm nó? Bạn có thể gọi tập hợp trống là "Fred", nhưng nó vẫn là tập hợp trống.
msw

Nếu bạn cho chúng tôi biết thêm về lý do bạn muốn làm điều này, điều đó có thể giúp chúng tôi đưa ra câu trả lời tốt.
willoller

Mọi thứ bạn sẽ thực hiện với git sẽ là cục bộ cho đến khi bạn đẩy nó ngược dòng lên máy chủ GitHub git push origin _branch_.
Joe

Câu trả lời:


239

Có gì sai với --orphantùy chọn? Nếu bạn muốn một nhánh trống và không có lịch sử, đây là cách để đi ...

git checkout --orphan empty-branch

Sau đó, bạn có thể xóa tất cả các tệp bạn sẽ có trong khu vực dàn dựng (để chúng không bị cam kết):

git rm -rf .

Tại thời điểm này, bạn có một nhánh trống trên máy tính của bạn.

Trước khi bạn có thể đẩy lên GitHub (hoặc bất kỳ kho lưu trữ Git nào khác), bạn sẽ cần ít nhất một cam kết, ngay cả khi nó không có bất kỳ nội dung nào trên đó (nghĩa là cam kết trống), vì bạn không thể đẩy một nhánh trống

git commit --allow-empty -m "root commit"

Cuối cùng, đẩy nó đến điều khiển từ xa và mở một cốc bia

git push origin empty-branch

3
Xin chào, sau khi tạo kho lưu trữ github nhánh trống không hiển thị bất kỳ sự khác biệt nào về tệp khi tôi đang cố tạo yêu cầu kéo từ nhánh khác. Bạn có thể cho tôi biết làm thế nào để giải quyết điều này.
Raghavendra S

@RaghavendraS Xem câu trả lời của tôi. Tôi gặp vấn đề tương tự.
Greg M. Krsak

1
Có lẽ một số người đang gặp vấn đề với câu trả lời được chấp nhận này vì nó bị thiếu một git add .bước sau khi bạn đã xóa tất cả các tệp và trước khi bạn cam kết?
SCoyle

13

--orphan rất tốt cho việc tạo một nhánh trống cục bộ, tuy nhiên, để đẩy nó hoặc tương tác với các nhánh khác, bạn sẽ cần một cam kết.

Tạo một cam kết mới trên một nhánh mồ côi không phải là một ý tưởng hay vì bạn sẽ không thể tương tác với các nhánh khác. I E

git checkout --orphan test
git commit --allow-empty -m "init test branch"
git merge master
fatal: refusing to merge unrelated histories

Thay vào đó, bạn nên tạo một nhánh mới từ lần cam kết chính đầu tiên. Nếu cam kết không trống, bạn có thể thêm cam kết trống trước cam kết đầu tiên, như @houtanb giải thích.


5

Bạn cũng có thể làm theo các hướng dẫn tại đây để tạo một cam kết trống ở gốc masterchi nhánh của bạn . Sau đó, chỉ cần tạo releasenhánh của bạn nơi cam kết gốc trống đó.


2

Câu trả lời được chấp nhận đã dẫn tôi đến một số vấn đề , vì vậy tôi đã làm điều này:

$ git branch
* staging
$ git branch master c74d99cf46f6ed23e742f2617e9908294b4a608b
$ git checkout master
Switched to branch 'master'

Và có được những gì tôi muốn mà không có vấn đề hợp nhất / kéo-yêu cầu. Tôi chỉ cần chọn một cam kết cơ sở để tạo nhánh thứ hai của tôi từ đó.


Nếu nhánh của bạn có một cam kết cơ sở, theo định nghĩa, nó không phải là một nhánh rỗng . (Các) vấn đề bạn gặp phải khi tạo một nhánh mồ côi là gì?
C. Augusto Proiete
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.