GitHub'da “baştan başlamak” nasıl?


14

Başka bir çerçeve vb. Kullanarak projemin tamamen yeniden yazılmasını planlıyorum. Referans için tarih de dahil olmak üzere eski kodu saklamak güzel olurdu. Risk, karışıklık ve sürprizlerden kaçınmak için bunu yapmanın en iyi yolu nedir?

Benim fikrim yeni bir dal oluşturmak, her şeyi değiştirmek ve orada çalışan temel bir "yeni" sürüm almak, son "eski" master etiketlemek ve daha sonra şube master ile birleştirmek. Kulağa makul geliyor mu?


18
Bu soru Github ile değil Git ile ilgili.
user253751

Eski kodu düzenlemeyi planlamıyorsanız, kolayca bir göz atmasını istediğiniz bir etiketi kullanabilirsiniz. Ancak etiketlerin değiştirilemez olması gerekir (ancak her zaman silebilir, yeniden ekleyebilirsiniz).
Travis

2
Yeni bir havuz oluşturun.
CodeGnome

Yanıtlar:


15

Her şeyi tek bir depoda tutmak için oy kullanıyorum.

İsterim:

  1. Eski kodunuzu göstermek için yeni bir şube oluşturun
  2. Tüm kodu silin ve master'a devam edin
  3. Yeniden yazma işleminize master üzerinde başlayın.

Bu nasıl:

# checkout the master branch
git checkout master

# create a new branch so you can find the old code easily
git branch oldStuff-KeepingForReference

# push the branch to github
git push origin oldStuff-KeepingForReference

# You currently have the master branch checked out
# so now cd to the project root and start your rewrite: 
cd <your project root>
rm -rf *

# Create a commit of the delete
git add --all *
git commit -m "Fresh start"

# Start your rewrite
echo "Some changes" > file.txt
git add file.txt
git commit -m "This is the first commit of the rewrite"

Kenara: Eski eski kodun bir etiketini de oluşturabilirsiniz, eğer bildiğinizde asla ona herhangi bir taahhüt eklemek istemeyeceksiniz.

Bunu yapmak yerine yeni bir havuz oluşturmanız gerektiğinde:

  • Şu anki deponuz çok büyük olduğunda ve klonlama işlemi yavaş olduğunda. Sen olabilir yeni bir repo kullanmayı düşünebilirsiniz.

8

Yeniden yazma ve tarihi dalları birleştirmek için acil bir neden olmadıkça, onları ayrı tutardım. Eski kodu tutmak için yeni bir dal oluşturun, yeniden yazmanızı master olarak yapın ve bu şekilde ayırın. Bu şekilde, durum değişirse her zaman eski çerçeve / uygulama ile çalışabilirsiniz.


3

Artık yetim şubeler bunun için.

git branch -m master new_branch       #rename the branch
git push origin new_branch:new_branch #push the old code
git push origin :master               #delete the origin/master branch containing the old code
git checkout --orphan master          #create a new orphane branch - master. The first commit made on this new branch will have no parents and it will be the root of a new history totally disconnected from all the other branches and commits.

echo foo > file.txt
git add file.txt
git commit -m 'init commit'
git push origin master

Varsayılan olaraknew_branch ana öğeyi görüntülediğinden , varsayılan dalı Github'da geçici olarak ayarlamanız gerekebilir .


2

Geçerli projede yeni bir şube oluşturabilirsiniz, ancak depoyu özel olarak işaretlemek ve sonra yeni kodunuz için yeni bir tane oluşturmak daha iyi olabilir, bu şekilde eski depoya sahip olursunuz, ancak eski eserin hiçbir şişmesi yoktur.

Bu yaklaşımı, daha sonra sadece eski koddan hala bu şişkinliğe sahip olacağınız için değil, aynı zamanda hazır olduğunuzda birkaç sinir bozucu birleştirme çatışması olabileceği için şubeyi ustalaşmak üzere birleştirmek yerine bu yaklaşımı kullanmanızı öneririm. çekin. Bundan kaçınmak için, tamamen farklı iki taneyi birleştirmek yerine net bir dalla başlamak en iyisi olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.