Adlı yeni bir GitHub dalı oluşturmak istiyorum release
.
Bu şubenin boş olması gerekiyor ! Ancak, x kaydetme içeren mevcut bir dal var ve onun commit geçmişine sahip olmak istemiyorum.
Bulduğum tek yöntem yerel bir --orphan
şube oluşturmak .
Adlı yeni bir GitHub dalı oluşturmak istiyorum release
.
Bu şubenin boş olması gerekiyor ! Ancak, x kaydetme içeren mevcut bir dal var ve onun commit geçmişine sahip olmak istemiyorum.
Bulduğum tek yöntem yerel bir --orphan
şube oluşturmak .
git push origin _branch_
.
Yanıtlar:
--orphan
Seçeneğin nesi var ? Boş ve geçmişi olmayan bir şube istiyorsanız, gitmenin yolu budur ...
git checkout --orphan empty-branch
Ardından, hazırlık alanında sahip olacağınız tüm dosyaları kaldırabilirsiniz (böylece taahhüt altına alınmazlar):
git rm -rf .
Bu noktada makinenizde boş bir dal var.
GitHub'a (veya başka bir Git deposuna) göndermeden önce, boş bir dalı itemeyeceğiniz için, üzerinde herhangi bir içerik olmasa bile (yani boş kaydetme) en az bir işlemeye ihtiyacınız olacaktır.
git commit --allow-empty -m "root commit"
Son olarak, uzaktan kumandaya itin ve bir bira kırın
git push origin empty-branch
git add .
tüm dosyaları kaldırdıktan sonra ve taahhütte bulunmadan önce bir adım eksik olduğu için bu kabul edilen cevapla ilgili bir sorun yaşıyor olabilir?
--orphan
yerel olarak boş bir dal oluşturmak için iyidir, ancak onu itmek veya diğer dallarla etkileşim kurmak için bir kesinleştirme yapmanız gerekir.
Yetim bir şubede yeni bir taahhüt oluşturmak iyi bir fikir değildir çünkü diğer şubelerle etkileşime geçemezsiniz. Yani
git checkout --orphan test
git commit --allow-empty -m "init test branch"
git merge master
fatal: refusing to merge unrelated histories
Bunun yerine, master'ın ilk commitinden yeni bir dal oluşturmayı tercih etmelisiniz. Kayıt boş değilse, @houtanb tarafından açıklandığı gibi, ilkinden önce boş bir işlem ekleyebilirsiniz.
Kabul edilen cevap beni bazı sorunlara götürdü , ben de şunu yaptım:
$ git branch
* staging
$ git branch master c74d99cf46f6ed23e742f2617e9908294b4a608b
$ git checkout master
Switched to branch 'master'
Ve birleştirme / çekme isteği sorunları olmadan istediğimi aldım. Ben sadece benim ikinci dalı oluşturmak için taahhüt bir temel almak zorunda kaldı dan.