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
.
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
.
git push origin _branch_
.
Câu trả lời:
Có gì sai với --orphan
tù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
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?
--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.
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ừ đó.