Bu git deposunda yeni bir "kök" dal tanımlamak istiyorum. "Kök" dal ile depodaki tüm diğer dallardan tamamen bağımsız bir dalı kastediyorum 1 .
Ne yazık ki, Adeponun commit ağacının en temelindeki commit (diyelim) bile çok fazla dosya içeriyor (bu zaten oldukça olgun bir projede başlatılmış bir havuzdu).
Bu A, yeni dal <start-point>olarak vermiş olsam bile , bu yeni dalın "temiz sayfadan" başlamayacağı, daha ziyade taahhüt edilen tüm dosyaları içereceği anlamına gelir A.
Bu depoda <start-point>olabildiğince yakın bir şekilde tamamen çıplak bir dal oluşturabilmemin bir yolu var mı A?
1 BTW, bu yeni bir depo oluşturmaya eşdeğer değildir . Ayrı depolar, birçok nedenden dolayı daha az uygun olacaktır.
DÜZENLEME : Tamam, vcsjones'un cevabına göre yaptığım şey buydu :
# save rev of the current earliest commit
OLDBASE=$(git rev-list --max-parents=0 HEAD)
# create a new orphan branch and switch to it
git checkout --orphan newbranch
# make sure it's empty
git rm -rf .
# create a new empty commit in the new branch, and
# save its rev in NEWBASE
git commit --allow-empty -m 'base commit (empty)'
NEWBASE=$(git rev-list HEAD)
# specify $NEWBASE as the new parent for $OLDBASE, and
# run filter-branch on the original branch
echo "$OLDBASE $NEWBASE" > .git/info/grafts
git checkout master
git filter-branch
# NOTE: this assumes that the original repo had only one
# branch; if not, a git-filter-branch -f <branch> command
# need to be run for each additional branch.
rm .git/info/grafts
Bu prosedür biraz karmaşık olsa da, sonuç, herhangi bir yeni "temiz sayfa dalı" için işlev görebilecek boş bir temel işlemdir <start-point>; o zaman tek yapmam gereken
git checkout -b cleanslate $(git rev-list --max-parents=0 HEAD)
Gelecekte her zaman bunun gibi yeni depolar oluşturacağım:
git init
git commit --allow-empty -m 'base commit (empty)'
... böylece ilk yürütme boş ve yeni bir bağımsız şube başlatmak için her zaman kullanılabilir. (Biliyorum, bu çok nadiren ihtiyaç duyulan bir tesis olurdu, ancak onu hazır hale getirmek oldukça zahmetsizdir.)