Basit svn revert
orijinal poster için yeterliydi. Ancak, svn revert
daha genel bir durumda basit bir
- Eğer payı ve istediğiniz her iki düzenlemeleri var paylaşımına istemiyoruz olan düzenlemelerde de aynı dosyada ,
- var hala kendi özel yararına tutmak ilgilenen olduğunu yerel değişiklikler .
@ ErichBSchulz'un önerisi git add -p
çok makul ve böyle bir durumda daha genel olarak uygulanabilir. Cevapta bazı ayrıntılar yoktu. Geçerli dizininizin paylaşılabilir yama yapmak istediğiniz dizin olduğunu varsayarsak, şöyle bir şey yapabilirsiniz:
Alt sürümden farklı bir dizine bozulmamış sürümü kullanıma alma (burada alt dizin kullanarak mevcut olmayan bir dizin adı seçin TMP/
).
$ url=$(svn info . | awk '/^URL/ {print $2}')
$ svn checkout "$url" TMP
Bu bozulmamış svn kasasını temel olarak kullanarak, .svn dizinlerini yok sayarak bir git deposunu başlatın; svn'de her şeyi geçici git deponuza koyun
$ cd TMP
$ git init && echo ".svn/" > .gitignore
$ git add -A && git commit
$ cd ..
Yeni hazırlanan git veri havuzu meta verilerini orijinal çalışma dizininize kopyalayın; bozulmamış yıkım ödeme dizini gerekli olmadığından, ondan kurtulabilirsiniz. Çalışma dizininiz artık git ve subversion deposudur:
$ mv TMP/.git .
$ rm -rf TMP/
Artık git add -p
tam olarak ne paylaşmak istediğinizi etkileşimli olarak seçmek için güçlü ve kullanışlı bir yöntem olarak kullanabilir ve onları git deponuza teslim edebilirsiniz. Taahhüt için dosya eklemeniz gerekiyorsa, daha git add <file-to-add>
önce de yapıngit commit
$ git add -p
<interactively select (and edit) the chunks you want to share>
$ git add ${the_list_of_files_not_in_yet_in_svn_you_want_to_add}
$ git commit
Taahhüdünü kullanarak, paylaşmak istediğiniz bir yama hazırlayın. Bu amaçla, git diff HEAD^..HEAD
ya da kullanabilirsiniz git format-patch
(ikincisi, yamayı veya birden çok yamayı içeren gönderilecek e-postaları doğrudan hazırlamak için kullanılabilir):
$ git show -p HEAD > my-mighty-patch.patch
Git meta verilerinden kurtulmak için yapmanız yeterli rm -rf .git/
. Orijinal çalışma dizini ile saldırıya devam etmeyi planlıyorsanız git
, yerel değişikliklerinizi yönetmek için kullanmaya devam edebilirsiniz. Bu durumda muhtemelen nasıl kullanılacağını öğrenme yatırımından faydalanırsınız git svn
.
Not: Buna aşina iseniz git
doğaçlama yapmak oldukça önemsiz bir şeydir. Aksi takdirde bu biraz dağınık görünüyor. Git'i anlamadan kullanılabilecek svn için "etkileşimli kesinleştirme" veya "etkileşimli yama oluşturma" uygulamak için bu adımlardan bir komut dosyası yazarak yaklaşımı genelleştirebilirsiniz.