Mevcut, yay─▒nlanmam─▒┼č taahh├╝t mesajlar─▒ nas─▒l de─či┼čtirilir?


Al─▒nan cevaba git


Yanl─▒┼č mesaj─▒ bir taahh├╝t mesaj─▒nda ÔÇőÔÇőyazd─▒m.

Mesaj─▒ nas─▒l de─či┼čtirebilirim? Taahh├╝t hen├╝z tamamlanmam─▒┼čt─▒r.


7670









Cevap say─▒s─▒n─▒ say: 27






En son taahh├╝t mesaj─▒n─▒ de─či┼čtirme

 git commit --amend
 

edit├Âr├╝n├╝z├╝ a├žarak, en son verilen taahh├╝d├╝n taahh├╝t mesaj─▒n─▒ de─či┼čtirmenize izin verir. Ek olarak, taahh├╝t mesaj─▒n─▒ do─črudan komut sat─▒r─▒nda a┼ča─č─▒dakilerle ayarlayabilirsiniz:

 git commit --amend -m "New commit message"
 

ÔÇŽ Ancak, bu ├žok sat─▒rl─▒ mesajlar─▒n iletilmesini veya k├╝├ž├╝k d├╝zeltmelerin daha hantal olmas─▒n─▒ sa─člayabilir.

E─čer herhangi bir ├žal─▒┼čma kopyas─▒ de─či┼čiklikleri gerektirmeyen emin olun sahnelenen bu yapmadan ├Ânce veya onlar da i┼členen alacak. ( ─░stenmeyen de─či┼čiklikler yap─▒lmaz.)

Uzak ┼čubenize zaten g├Ânderdi─činiz bir taahh├╝d├╝n iletisini de─či┼čtirme

Taahh├╝d├╝n├╝z├╝ uzaktaki ┼čubenize itmi┼čseniz, o zaman a┼ča─č─▒dakileri yapmaya zorlaman─▒z gerekir :

 git push <remote> <branch> --force
# Or
git push <remote> <branch> -f
 

Uyar─▒: zorla itmek, uzaktaki ┼čubenin yerel durumunuzun ├╝zerine yazacakt─▒r . Uzak ┼čubede yerel ┼čubenizde bulunmayan taahh├╝tler varsa , bu taahh├╝tleri kaybedeceksiniz.

Uyar─▒: Zaten di─čer insanlarla payla┼čt─▒─č─▒n─▒z taahh├╝tlerde de─či┼čiklik yapma konusunda dikkatli olun. Kaydedilmesini De─či┼čiklik Yap─▒lmas─▒ esasen yeniden yazar onlara farkl─▒ olmas─▒ SHA di─čer insanlar─▒n eski kopyalar─▒ E─čer yeniden kaleme ald─▒k oldu─čunu taahh├╝t varsa bir sorun te┼čkil etmektedir kimlikleri. Eski taahh├╝d├╝n bir kopyas─▒na sahip olan bir ki┼činin, ├žal─▒┼čmalar─▒n─▒ yeni yeniden yaz─▒lm─▒┼č taahh├╝d├╝n├╝zle senkronize etmesi gerekir; bu bazen zor olabilir, bu nedenle payla┼č─▒lan taahh├╝t ge├žmi┼čini yeniden yazmaya ├žal─▒┼č─▒rken ba┼čkalar─▒yla koordine etti─činizden emin olun veya yaln─▒zca payla┼č─▒lan taahh├╝tleri yeniden yazmaktan ka├ž─▒n─▒n tamamen.


Etkile┼čimli rebase kullan

Di─čer bir se├ženek de etkile┼čimli rebase kullanmakt─▒r.
Bu, en son mesaj olmasa bile g├╝ncellemek istedi─činiz herhangi bir mesaj─▒ d├╝zenlemenizi sa─člar.

Git squash yapmak i├žin a┼ča─č─▒daki ad─▒mlar─▒ izleyin:

 // X is the number of commits to the last commit you want to be able to edit
git rebase -i HEAD~X
 

Taahh├╝tlerinizi ezdikten sonra - e/r mesaj─▒ d├╝zenlemek i├žin


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin

Etkile┼čimli rebase hakk─▒nda ├Ânemli not

Kulland─▒─č─▒n─▒zda, taahh├╝tten daha fazlas─▒ git rebase -i HEAD~X olabilir . Git, b├╝t├╝n komisyonlar─▒ "toplayacak" ve bu aral─▒k aras─▒nda bir yerde bir birle┼čme varsa, b├╝t├╝n komisyonlar─▒ g├Âreceksin, b├Âylece sonu├ž X + olacak. X X

─░yi bah┼či┼č:

Tek bir daldan daha fazlas─▒ i├žin yapman─▒z gerekiyorsa ve i├žeri─či de─či┼čtirirken ihtilaflarla kar┼č─▒la┼čabilirsiniz, kurup git rerere gitmeye devam ederek bu ├žat─▒┼čmalar─▒ sizin i├žin otomatik olarak ├ž├Âzebilirsiniz.


belgeleme


15573







 git commit --amend -m "your new message"
 

2472







D├╝zeltmek istedi─činiz taahh├╝t en son teklif de─čilse:

  1. git rebase --interactive $parent_of_flawed_commit

    Birka├ž kusurlu komisyonu d├╝zeltmek istiyorsan─▒z, en eski olan─▒n ebeveyni ge├žin.

  2. Verdi─činizden bu yana t├╝m taahh├╝tlerin bir listesi ile bir edit├Âr ortaya ├ž─▒kacakt─▒r.

    1. De─či┼čim pick i├žin reword (veya Git eski s├╝r├╝mleri, ├╝zerine edit ) E─čer d├╝zeltme istedi─činiz herhangi kaydedilmesini ├Ân├╝nde.
    2. Kaydettikten sonra Git listelenen taahh├╝tleri tekrar eder.

  3. Tekrar de─čerlendirmek istedi─činiz her bir taahh├╝t i├žin Git sizi tekrar edit├Âr├╝n├╝ze b─▒rakacakt─▒r. D├╝zenlemek istedi─činiz her bir taahh├╝t i├žin Git, sizi kabu─čun i├žine b─▒rak─▒r. E─čer kabu─čun i├žindeysen:

    1. Taahh├╝d├╝n├╝z├╝ istedi─činiz ┼čekilde de─či┼čtirin.
    2. git commit --amend
    3. git rebase --continue

Bu dizinin ├žo─ču, gitti─činiz ├že┼čitli komutlar─▒n ├ž─▒kt─▒s─▒ ile a├ž─▒klanacakt─▒r. ├çok kolay, ezberlemenize gerek git rebase --interactive yok - ne kadar zaman ├Ânce olursa olsun, i┼čleri do─črulaman─▒za izin verdi─čini unutmay─▒n .


Zaten bast─▒─č─▒n─▒z taahh├╝tleri de─či┼čtirmek istemeyece─činizi unutmay─▒n. Ya da belki yapars─▒n─▒z, ancak bu durumda, taahh├╝tlerinizi yerine getirmi┼č ve ├╝zerinde ├žal─▒┼čm─▒┼č olan herkesle ileti┼čim kurmaya b├╝y├╝k ├Âzen g├Âstermelisiniz. Birisi yeniden yay─▒nlanm─▒┼č veya yay─▒nlanm─▒┼č bir dal─▒ s─▒f─▒rlad─▒ktan sonra nas─▒l yeniden kazanabilirim / yeniden senkronize edebilirim?


2351







├ľnceki taahh├╝d├╝n├╝z├╝ de─či┼čtirmek i├žin, istedi─činiz de─či┼čiklikleri yap─▒n ve bu de─či┼čiklikleri uygulay─▒n ve ard─▒ndan ko┼čun

 git commit --amend
 

Bu, metin d├╝zenleyicinizde yeni i┼čleme iletinizi temsil eden bir dosya a├žar. Eski taahh├╝t mesaj─▒n─▒z─▒n metni ile doldurulur. Onay mesaj─▒n─▒ istedi─činiz gibi de─či┼čtirin, ard─▒ndan dosyay─▒ kaydedin ve bitirmek i├žin edit├Âr├╝n├╝zden ├ž─▒k─▒n.

├ľnceki taahh├╝d├╝ de─či┼čtirmek ve ayn─▒ g├╝nl├╝k mesaj─▒n─▒ saklamak i├žin

 git commit --amend -C HEAD
 

├ľnceki i┼člemi tamamen kald─▒rarak d├╝zeltmek i├žin,

 git reset --hard HEAD^
 

Birden fazla taahh├╝t mesaj─▒ d├╝zenlemek isterseniz,

 git rebase -i HEAD~commit_count 

( Taahh├╝t_say─▒s─▒n─▒ d├╝zenlemek istedi─činiz taahh├╝t say─▒s─▒ ile de─či┼čtirin.) Bu komut edit├Âr├╝n├╝z├╝ ba┼člat─▒r. ─░lk i┼člemi (de─či┼čtirmek istedi─činizi) ÔÇťse├žÔÇŁ yerine ÔÇťd├╝zenleÔÇŁ olarak i┼čaretleyin, ard─▒ndan edit├Âr├╝n├╝zden kaydedip ├ž─▒k─▒n. Taahh├╝t etmek istedi─činiz de─či┼čikli─či yap─▒n ve ard─▒ndan ko┼čun

 git commit --amend
git rebase --continue
 

Not: A├žt─▒─č─▒n─▒z edit├Ârden "─░stedi─činiz de─či┼čikli─či yap─▒n" se├žene─čini de yapabilirsiniz. git commit --amend


765







Daha ├Ânce de belirtildi─či gibi, git commit --amend son taahh├╝d├╝n ├╝zerine yazma yoludur. Bir not: e─čer dosyalar─▒n ├╝zerine de yazmak isterseniz , komut

 git commit -a --amend -m "My new commit message"
 

392


2011-06-06





Ayr─▒ca filter-branch bunun i├žin git kullanabilirsiniz .

 git filter-branch -f --msg-filter "sed 's/errror/error/'" $flawed_commit..HEAD
 

├ľnemsiz bir ┼čey kadar kolay de─čil git commit --amend , ancak hatal─▒ i┼člem mesaj─▒n─▒zdan sonra zaten baz─▒ birle┼čimleriniz varsa, ├Âzellikle yararl─▒d─▒r.

Bunun, H─░├çB─░R taahh├╝d├╝ HEAD ve hatal─▒ taahh├╝t aras─▒ndakileri yeniden yazmaya ├žal─▒┼čaca─č─▒n─▒ unutmay─▒n, bu nedenle msg-filter komutunuzu ├žok ak─▒ll─▒ca se├žmelisiniz ;-)


351


2012-09-01





Bu ┼čekilde tercih ederim.

 git commit --amend -c <commit ID>
 

Aksi takdirde, yeni bir taahh├╝t kimli─či ile yeni bir taahh├╝t olacak


313







Git GUI arac─▒n─▒ kullan─▒yorsan─▒z, son i┼člemeyi de─či┼čtir adl─▒ bir d├╝─čme var. Bu d├╝─čmeye t─▒klad─▒─č─▒n─▒zda son i┼člem dosyalar─▒n─▒z─▒ ve mesaj─▒n─▒z─▒ g├Âsterecektir. Sadece bu mesaj─▒ d├╝zenleyin ve yeni taahh├╝t mesaj─▒ ile taahh├╝t edebilirsiniz.

Veya bu komutu bir konsoldan / terminalden kullan─▒n:

 git commit -a --amend -m "My new commit message"
 

311







Git rebasing'i kullanabilirsiniz . ├ľrne─čin, bbc643cd'yi i┼člemek ├╝zere geri de─či┼čtirmek isterseniz,

 $ git rebase bbc643cd^ --interactive
 

Varsay─▒lan d├╝zenleyicide, de─či┼čiklik yapmak istedi─činiz sat─▒rdaki 'd├╝zenle'yi' d├╝zenlemek 'i├žin de─či┼čtirin. De─či┼čikliklerinizi yap─▒n ve sonra bunlar─▒ ile

 $ git add <filepattern>
 

┼×imdi kullanabilirsiniz

 $ git commit --amend
 

taahh├╝d├╝ de─či┼čtirmek ve bundan sonra

 $ git rebase --continue
 

├Ânceki ba┼ča geri d├Ânmek i├žin taahh├╝tte bulunun.


282







  1. Yaln─▒zca son i┼člem mesaj─▒n─▒z─▒ de─či┼čtirmek istiyorsan─▒z, a┼ča─č─▒dakileri yap─▒n:

     git commit --amend
     

    Bu sizi metin al─▒c─▒n─▒za b─▒rakacak ve son taahh├╝t mesaj─▒n─▒ de─či┼čtirmenize izin verecektir.

  2. Son 3 i┼člem mesaj─▒n─▒ veya bu noktaya kadar olan i┼člem mesajlar─▒ndan herhangi birini de─či┼čtirmek isterseniz, HEAD~3 a┼ča─č─▒daki git rebase -i komutu verin:

     git rebase -i HEAD~3
     

276







Eski bir i┼člem mesaj─▒n─▒ birden fazla bran┼čta de─či┼čtirmek zorunda kal─▒rsan─▒z (yani, hatal─▒ mesajla i┼člem birden fazla ┼čubede bulunursa) kullanmak isteyebilirsiniz:

 git filter-branch -f --msg-filter \
'sed "s/<old message>/<new message>/g"' -- --all
 

Git, yeniden yazmak i├žin ge├žici bir dizin olu┼čturur ve i├žindeki eski referanslar─▒ yedekler refs/original/ .

  • -f operasyonun y├╝r├╝t├╝lmesini zorlar. Ge├žici dizin zaten mevcutsa veya alt─▒nda kay─▒tl─▒ referanslar varsa, bu gereklidir refs/original . Aksi takdirde, bu bayra─č─▒ b─▒rakabilirsiniz.

  • -- filtre dal─▒ se├ženeklerini revizyon se├ženeklerinden ay─▒r─▒r.

  • --all t├╝m dallar─▒n ve etiketlerin yeniden yaz─▒lm─▒┼č olmas─▒n─▒ sa─člayacakt─▒r .

Eski referanslar─▒n─▒z─▒n yede─či nedeniyle, komutu yerine getirmeden ├Ânce kolayca duruma geri d├Ânebilirsiniz.

Diyelim ki, efendinizi kurtarmak ve ┼čubeye eri┼čmek istiyorsan─▒z old_master :

 git checkout -b old_master refs/original/refs/heads/master
 

259







kullan─▒m

 git commit --amend
 

Ayr─▒nt─▒l─▒ olarak anlamak i├žin m├╝kemmel bir yaz─▒ 4't├╝r . Git Tarihini Yeniden Yazmak . Ayr─▒ca ne zaman kullanmayaca─č─▒n─▒z hakk─▒nda da konu┼čur git commit --amend .


224


2013-03-27





de─či┼čtirmek

Burada bir ka├ž se├žene─čin var. Yapabilirsin

 git commit --amend
 

son s├Âz├╝n oldu─ču s├╝rece.

Etkile┼čimli rebase

Aksi takdirde, son taahh├╝d├╝n├╝z de─čilse etkile┼čimli bir yeniden ├Âdeme yapabilirsiniz.

 git rebase -i [branched_from] [hash before commit]
 

Sonra etkile┼čimli rebase i├žinde sadece bu g├Âreve d├╝zenleme ekleyin. Konu geldi─činde a yap─▒n git commit --amend ve taahh├╝t mesaj─▒n─▒ de─či┼čtirin. Bu i┼člemden ├Ânce geri d├Ânmek istiyorsan─▒z, bu i┼člemi de kullanabilir git reflog ve silebilirsiniz. O zaman git commit tekrar yap.


195







Git GUI kullan─▒yorsan─▒z, itilmemi┼č son i┼člemi de─či┼čtirebilirsiniz:

 Commit/Amend Last Commit
 

183







Son s├Âz├╝n buysa, s├Âz├╝n├╝ de─či┼čtir :

 git commit --amend -o -m "New commit message"
 

( yaln─▒zca taahh├╝t mesaj─▒n─▒ de─či┼čtirdi─činizden emin olmak i├žin -o ( --only ) i┼čaretini kullanarak )


G├Âm├╝l├╝ bir taahh├╝t ise, m├╝thi┼č etkile┼čimli rebase kullan─▒n :

 git rebase -i @~9   # Show the last 9 commits in a text editor
 

─░stedi─činiz de─či┼čikli─či i┼člemek bul pick i├žin r ( reword ) ve kaydetmek ve yak─▒n dosyas─▒. Bitti!



Minyat├╝r vim e─čitimi (veya yaln─▒zca 8 tu┼č vuru┼čuyla yeniden nas─▒l olu┼čturulur 3j cw r Esc ZZ ):

  • vimtutor Zaman─▒n varsa ko┼č
  • h j k l hareket tu┼člar─▒na kar┼č─▒l─▒k gelir ÔćÉÔćôÔćĹÔćĺ
  • T├╝m komutlara bir "aral─▒k" eklenebilir, ├Ârne─čin 3j 3 sat─▒r a┼ča─č─▒ hareket eder
  • i ekleme moduna girmek i├žin - girdi─činiz metin dosyada g├Âr├╝necektir
  • Escveya Ctrl c ekleme modundan ├ž─▒kmak ve "normal" moda geri d├Ânmek i├žin
  • u geri almak
  • Ctrl r yinelemek
  • dd , dw , dl S─▒ras─▒yla bir ├žizgi, kelime veya harfi silmek i├žin
  • cc , cw , cl S─▒ras─▒yla bir ├žizgi, kelime ya da harf de─či┼čtirmek (ayn─▒ dd i )
  • yy , yw , yl S─▒ras─▒yla ( "yank") bir ├žizgi, kelime veya harf kopyalamak
  • p veya P s─▒ras─▒yla ge├žerli konumdan ├Ânce veya sonra yap─▒┼čt─▒rmak i├žin
  • :w Enter bir dosyay─▒ kaydetmek (yazmak) i├žin
  • :q! Enter kaydetmeden ├ž─▒kmak
  • :wq Enterveya ZZ kaydetmek ve ├ž─▒kmak i├žin

Metni ├žok d├╝zenlerseniz Dvorak klavye d├╝zenine ge├žin, dokunmay─▒ yazmay─▒ ve vim ├Â─črenmeyi ├Â─črenin. ├çabaya de─čer mi? Evet.



ProTip Ôäó: Ge├žmi┼či yeniden yazan "tehlikeli" komutlar─▒ denemekten korkmay─▒n * - Git, varsay─▒lan olarak 90 g├╝n boyunca taahh├╝tlerinizi silmez; Onlar─▒ reflogda bulabilirsiniz:

 $ git reset @~3   # go back 3 commits
$ git reflog
c4f708b [email protected]{0}: reset: moving to @~3
2c52489 [email protected]{1}: commit: more changes
4a5246d [email protected]{2}: commit: make important changes
e8571e4 [email protected]{3}: commit: make some changes
... earlier commits ...
$ git reset 2c52489
... and you're back where you started
 

* Gibi --hard ve --force olsa se├ženekleri dikkat - onlar veri atabilir.
* Ayr─▒ca, i┼čbirli─či yapt─▒─č─▒n─▒z hi├žbir dalda ge├žmi┼či yeniden yazmay─▒n.


177


2015-02-10





Git GUI'yi m├╝mk├╝n oldu─ču kadar kullan─▒yorum ve bu size son i┼člemi yapma se├žene─či sunuyor:


Kutuyu i┼čaretle

Ayr─▒ca, git rebase -i origin/master her zaman usta ├╝zerine yapt─▒─č─▒n─▒z taahh├╝tleri size sunacak ve size de─či┼čiklik yapma, silme, yeniden d├╝zenleme veya squash yapma se├žene─či sunan g├╝zel bir mantrad─▒r. ├ľnce bu hashle u─čra┼čman─▒za gerek yok.


165







Vay, yani bunu yapman─▒n bir├žok yolu var.

Bunu yapman─▒n bir ba┼čka yolu da, son taahh├╝d├╝n silinmesidir, ancak ├žal─▒┼čman─▒z─▒ kaybetmemeniz i├žin de─či┼čikliklerini saklay─▒n. D├╝zeltilmi┼č mesajla ba┼čka bir taahh├╝t daha yapabilirsiniz. Bu ┼čuna benzer bir ┼čey olurdu:

 git reset --soft HEAD~1
git commit -m 'New and corrected commit message'
 

Bir dosya eklemeyi veya de─či┼čiklik yapmay─▒ unutursam bunu hep yapar─▒m.

--soft Bunun yerine belirtmeyi unutmay─▒n --hard , aksi takdirde bu taahh├╝d├╝ tamamen kaybedersiniz.


135







Eski mesajlar─▒ d├╝zenlemede yard─▒mc─▒ olmas─▒ i├žin Windows / Mac GUI arayan herkes i├žin (yaln─▒zca en yeni mesaj─▒ de─čil) SourceTree'yi ├Âneririm . ─░zlenecek ad─▒mlar a┼ča─č─▒dad─▒r.


SourceTree etkile┼čimli rebase

Hen├╝z bir uzaktan kumandaya itilmemi┼č taahh├╝tler i├žin:

  1. Ge├žerli t├╝m de─či┼čiklikleri yapt─▒─č─▒n─▒zdan veya kaydetti─činizden emin olun (yani, "Dosya Durumu" sekmesinde listelenen hi├žbir dosya yoktur) - ba┼čka ┼čekilde ├žal─▒┼čmaz.
  2. "G├╝nl├╝k / Tarih" sekmesinde, d├╝zenlemek istedi─činiz taahh├╝t (lerin) alt─▒ndaki grafikte biti┼čik bir ├žizgiye sahip olan giri┼či sa─č t─▒klay─▒n ve " Etkile┼čimli < ├žocuklar─▒ > etkile┼čimli olarak yeniden olu┼čtur ..." se├žene─čini se├žin.
  3. De─či┼čtirmek istedi─činiz taahh├╝t mesaj─▒ i├žin t├╝m sat─▒r─▒ se├žin ( ├Ârn. "Mesaj" s├╝tununa t─▒klay─▒n ).
  4. "Mesaj─▒ D├╝zenle" d├╝─čmesini t─▒klay─▒n.
  5. Gelen ileti┼čim kutusundaki mesaj─▒ istedi─činiz gibi d├╝zenleyin ve ard─▒ndan Tamam d├╝─čmesine t─▒klay─▒n.
  6. De─či┼čtirilecek ba┼čka taahh├╝t mesajlar─▒ varsa, 3-4. Ad─▒mlar─▒ tekrarlay─▒n.
  7. Tamam'─▒ t─▒klay─▒n: Yeniden d├╝zenleme ba┼člayacakt─▒r. Her ┼čey yolundaysa, ├ž─▒k─▒┼č "ba┼čar─▒yla tamamland─▒" olarak bitecektir. NOT: Son zamanlarda Unable to create 'project_path/.git/index.lock': File exists. , ayn─▒ anda birden fazla i┼čleme iletisini de─či┼čtirmeye ├žal─▒┼č─▒rken ba┼čar─▒s─▒z oldu─čunu g├Ârd├╝m . Sorunun tam olarak ne oldu─čundan ya da SourceTree'nin gelecekteki bir s├╝r├╝m├╝nde ├ž├Âz├╝l├╝p ├ž├Âz├╝lmeyece─činden emin de─čilim, ancak bu ger├žekle┼čirse, bunlar─▒ birer birer yeniden yapmay─▒ ├Ânerebilir (daha yava┼č ancak daha g├╝venilir g├Âr├╝n├╝yor).

... Veya ... daha ├Ânce itilen taahh├╝tler i├žin:

Bu cevab─▒ , yukar─▒dakilere benzer olan ancak git push origin <branch> -f dal─▒ zorlamak i├žin komut sat─▒r─▒ndan ( ) ├žal─▒┼čt─▒r─▒lmas─▒ gereken ba┼čka bir komut gerektiren ad─▒mlar─▒ izleyin . Hepsini okuyup gerekli ├Ânlemleri alman─▒z─▒ tavsiye ederim!


129







Sadece en son taahh├╝t kullan─▒m─▒n─▒ d├╝zenlemek istiyorsan─▒z:

 git commit --amend
 

veya

 git commit --amend -m 'one line message'
 

Ancak arka arkaya birka├ž komisyon d├╝zenlemek istiyorsan─▒z, bunun yerine rebasing kullanmal─▒s─▒n─▒z:

 git rebase -i <hash of one commit before the wrong commit>
 


git rebase d├╝zenleme

Yukar─▒daki gibi bir dosyaya edit / e veya di─čer se├ženekten birini yaz─▒n ve kaydet ve ├ž─▒k'─▒ t─▒klay─▒n.

┼×imdi ilk yanl─▒┼č i┼člemede olacaks─▒n. Dosyalarda de─či┼čiklik yap─▒n, bunlar sizin i├žin otomatik olarak haz─▒rlan─▒r. tip

 git commit --amend
 

kaydet ve ├ž─▒k ve yaz

 git rebase --continue 
 

T├╝m se├žimlerinizle bitinceye kadar bir sonraki se├žime ge├žmek i├žin

Bu ┼čeylerin, bu belirli bir i┼člemden sonra t├╝m SHA karmalar─▒n─▒z─▒ de─či┼čtirdi─čini unutmay─▒n.


124







Yaln─▒zca son mesaj─▒ de─či┼čtirmek isterseniz kullanman─▒z gereken --only bayrak veya k─▒sayol -o ile commit --amend :

 git commit --amend -o -m "New commit message"
 

Bu, sahnelenen i┼člerle olan taahh├╝d├╝n├╝z├╝ yanl─▒┼čl─▒kla art─▒rmaman─▒z─▒ sa─člar. Elbette uygun bir $EDITOR konfig├╝rasyona sahip olmak en iyisidir . O zaman -m se├žene─či d─▒┼čar─▒da b─▒rakabilirsiniz , ve git bir taahh├╝t mesaj─▒ ile eskisini doldurur. Bu ┼čekilde kolayca d├╝zenlenebilir.


123







Son yanl─▒┼č taahh├╝t mesaj─▒n─▒z─▒ tek sat─▒rda yeni onay mesaj─▒ ile g├╝ncelleyin:

 git commit --amend -m "your new commit message"
 

Veya a┼ča─č─▒daki gibi git s─▒f─▒rlamay─▒ deneyin:

 # You can reset your head to n number of commit
# NOT a good idea for changing last commit message
# but you can get an idea to split commit into multiple commits
git reset --soft HEAD^

# it will reset you last commit. Now, you
# can re-commit it with new commit message.
 

Taahh├╝tleri k├╝├ž├╝k taahh├╝tlere b├Âlmek i├žin s─▒f─▒rlama kullanma

git reset bir taahh├╝d├╝n├╝z├╝ birden fazla taahh├╝tte tutman─▒za yard─▒mc─▒ olabilir:

 # reset your head. I am resetting to last commits:
git reset --soft HEAD^
# (you can reset multiple commit by doing HEAD~2(no. of commits)

# Now, reset your head for splitting it to multiple commits
git reset HEAD

# add and commit your files seperately to make multiple commits: e.g
git add app/
git commit -m "add all files in app directory"

git add config/
git commit -m "add all files in config directory"
 

Burada, son taahh├╝d├╝n├╝z├╝ iki komisyona ba┼čar─▒yla verdiniz.


99







Bu soruda ├žok fazla cevap var, ancak hi├žbiri VIM kullanarak eski mesajlar─▒n nas─▒l de─či┼čtirilece─čini ├žok ayr─▒nt─▒l─▒ olarak a├ž─▒klam─▒yor. Bunu kendim yapmaya ├žal─▒┼č─▒rken s─▒k─▒┼č─▒p kald─▒m, bu y├╝zden burada, ├Âzellikle VIM'de deneyimi olmayan insanlar i├žin bunu nas─▒l yapt─▒─č─▒m─▒ detayl─▒ olarak yazaca─č─▒m!

Zaten sunucuya itti─čim en son be┼č taahh├╝d├╝m├╝ de─či┼čtirmek istedim. Bu olduk├ža 'tehlikelidir' ├ž├╝nk├╝ bundan daha ├Ânce ba┼čka birisini ├žektiyseniz, taahh├╝t mesajlar─▒n─▒ de─či┼čtirerek i┼čleri kar─▒┼čt─▒rabilirsiniz. Bununla birlikte, kendi k├╝├ž├╝k ┼čubeniz ├╝zerinde ├žal─▒┼č─▒rken ve kimsenin ├žekemedi─činden emin oldu─čunuzda, ┼ču ┼čekilde de─či┼čtirebilirsiniz:

En son be┼č taahh├╝d├╝n├╝z├╝ de─či┼čtirmek istedi─činizi varsayal─▒m, sonra bunu terminale yaz─▒n:

git rebase -i HEAD~5 * 5, de─či┼čtirmek istedi─činiz taahh├╝t mesaj─▒ say─▒s─▒. (├Âyleyse, sonuncuyu 10'a de─či┼čtirmek isterseniz, 10 yaz─▒n─▒z)

Bu komut sizi VIM'e g├Ât├╝recek ve bu sayede taahh├╝t ge├žmi┼činizi 'd├╝zenleyebileceksiniz'. Son 5 taahh├╝d├╝n en ├╝stte b├Âyle oldu─čunu g├Âreceksin:

pick <commit hash> commit message

pick Senin yerine yazmal─▒s─▒n reword . Bunu VIM'de i INSERT moduna girmenize neden olan yazarak yapabilirsiniz . De─či┼čim t├╝r├╝ne istedi─činiz kaydedilmesini i├žin (Sen alt─▒ndaki kelime INSERT taraf─▒ndan ekleme modunda oldu─čunuzu g├Ârmek) reword yerine pick

Daha sonra bu ekran─▒ kaydetmeniz ve ├ž─▒kman─▒z gerekir, bunu ├Ânce esc d├╝─čmesine basarak 'komut moduna' girerek yapars─▒n─▒z. (alt─▒ndaki INSERT s├Âzc├╝─č├╝ kaybolduysa komut kipinde oldu─čunuzu kontrol edebilirsiniz.) Yazarak bir komutu yazabilirsiniz, : kaydetme ve ├ž─▒kma komutu ┼čudur wq . Bu y├╝zden e─čer yazarsan─▒z :wq o do─čru iz de─čil.

O zaman VIM tekrar cevaplamak istedi─činiz her mesaj yerine ge├žer, burada asl─▒nda taahh├╝t mesajlar─▒n─▒ de─či┼čtirebilirsiniz. Bunu INSERT moduna girerek, taahh├╝t mesaj─▒n─▒ de─či┼čtirerek, komut moduna girerek kaydederek ├ž─▒kabilirsiniz. Bunu 5 kez yap─▒n ve VIM'iniz bitsin!

O zaman, zaten yanl─▒┼č taahh├╝tlerinizi yerine getirdiyseniz, git push --force bunlar─▒n ├╝zerine yazman─▒z gerekir . Bunun git push --force yap─▒lmas─▒ tehlikeli bir ┼čey oldu─čunu unutmay─▒n , bu y├╝zden yanl─▒┼č yapt─▒─č─▒n─▒z─▒ s├Âyledi─činizden beri kimsenin sunucudan ├žekilmedi─činden emin olun!

┼×imdi taahh├╝t mesajlar─▒n─▒ de─či┼čtirdin!

(G├Ârd├╝─č├╝n├╝z gibi VIM'de o kadar tecr├╝beli de─čilim, bu y├╝zden ne oldu─čunu a├ž─▒klamak i├žin yanl─▒┼č 'dil' kulland─▒ysam, beni d├╝zeltmekten ├žekinmeyin!)


82







Sen kullanabilirsiniz git-Rebase-reword

Herhangi bir taahh├╝d├╝n (yaln─▒zca son de─čil) ayn─▒ ┼čekilde d├╝zenlenmesi i├žin tasarlanm─▒┼čt─▒r commit --amend

 $ git rebase-reword <commit-or-refname>
 

Bir taahh├╝d├╝nde de─či┼čiklik yapmak i├žin yeniden yap─▒lanma etkile┼čimli eyleminden sonra adland─▒r─▒l─▒r: "yeniden cevaplama". Bu yaz─▒ya bak─▒n ve man- b├Âl├╝m interaktif modu-

├ľrnekler:

 $ git rebase-reword b68f560
$ git rebase-reword HEAD^
 

77







Ben takma adlar─▒n─▒ ekledikten reci , recm i├žin recommit (amend) buna, ┼čimdi bunu yapabilir git recm ya git recm -m .

 $ vim ~/.gitconfig

[alias]

    ......
    cm = commit
    reci = commit --amend
    recm = commit --amend
    ......
 

76







─░├žinde bir yaz─▒m hatas─▒ olan bir taahh├╝t itti oldu─čunu fark ettim. Geri almak i├žin a┼ča─č─▒dakileri yapt─▒m:

 git commit --amend -m "T-1000, advanced prototype"
git push --force
 

Uyar─▒: de─či┼čikliklerinizi zorlaman─▒z, yerel ┼čubenizdeki uzak ┼čubenin ├╝zerine yazacakt─▒r. Saklamak istedi─činiz hi├žbir ┼čeyin ├╝zerine yazmad─▒─č─▒n─▒zdan emin olun. Ayr─▒ca, ┼čubeyi ba┼čka biri sizinle payla┼č─▒yorsa, de─či┼čtirilmi┼č (yeniden yaz─▒lm─▒┼č) bir taahh├╝d├╝ zorlamak konusunda dikkatli olun, ├ž├╝nk├╝ yeni yazd─▒─č─▒n─▒z taahh├╝d├╝n eski kopyas─▒na sahiplerse, kendi tarihlerini yeniden yazmalar─▒ gerekir.


54







A┼ča─č─▒dakileri kullanmay─▒ seviyorum:

  1. git status
  2. git add --all
  3. git commit -am "message goes here about the change"
  4. git pull <origin master>
  5. git push <origin master>

49







Kodu uzaktaki ┼čubenize ( GitHub / Bitbucket ) itmediyseniz , komut sat─▒r─▒ndaki onay mesaj─▒n─▒ a┼ča─č─▒daki gibi de─či┼čtirebilirsiniz.

  git commit --amend -m "Your new message"
 

Belirli bir dalda ├žal─▒┼č─▒yorsan─▒z, ┼čunlar─▒ yap─▒n:

 git commit --amend -m "BRANCH-NAME: new message"
 

Zaten kodu yanl─▒┼č mesajla ittiyseniz ve mesaj─▒ de─či┼čtirirken dikkatli olman─▒z gerekir. Yani, taahh├╝t mesaj─▒n─▒ de─či┼čtirip tekrar bast─▒rmay─▒ denedikten sonra sorun ya┼čars─▒n─▒z. D├╝zg├╝nle┼čtirmek i├žin ┼ču ad─▒mlar─▒ izleyin.

L├╝tfen yapmadan ├Ânce t├╝m cevab─▒m─▒ okudum.

 git commit --amend -m "BRANCH-NAME : your new message"

git push -f origin BRANCH-NAME                # Not a best practice. Read below why?
 

├ľnemli not: Do─črudan zorlamay─▒ kulland─▒─č─▒n─▒zda, di─čer geli┼čtiricilerin ayn─▒ dalda ├žal─▒┼čt─▒─č─▒ kod sorunlar─▒yla kar┼č─▒la┼čabilirsiniz. Bu nedenle, bu ├žat─▒┼čmalardan ka├ž─▒nmak i├žin, g├╝c├╝ zorlamadan ├Ânce kodu ┼čubenizden ├žekmeniz gerekir :

  git commit --amend -m "BRANCH-NAME : your new message"
 git pull origin BRANCH-NAME
 git push -f origin BRANCH-NAME
 

Zaten itti ise, taahh├╝t mesaj─▒n─▒ de─či┼čtirirken en iyi uygulamad─▒r.


43



─░lgili yay─▒nlar


Belirtilen bir taahh├╝t nas─▒l de─či┼čtirilir?

GitHub'da bir taahh├╝t mesaj─▒ nas─▒l aran─▒r?

Windows cmd'den bir git taahh├╝t mesaj─▒ nas─▒l kaydedilir?

Bir metin dosyas─▒n─▒ nas─▒l de─či┼čtirebilirim?

Eclipse IDE'de klavye k─▒sayollar─▒ nas─▒l de─či┼čtirilir?

Github ├žekme iste─či nas─▒l de─či┼čtirilir?

Homebrew i├žin PATH nas─▒l de─či┼čtirilir?

D├Âng├╝ s─▒ras─▒nda liste giri┼čleri nas─▒l de─či┼čtirilir?

GitHub'daki bir ├žekme iste─činde de─či┼čiklik yap─▒larak hedef ┼čubeyi de─či┼čtirmek i├žin nas─▒l de─či┼čiklik yap─▒l─▒r?

JsonNode Java ile nas─▒l de─či┼čtirilir?

Etiketle ilgili di─čer sorular [git]


C++ 'dan stdin'den sat─▒r okumak neden Python'dan daha yava┼č?

Python'da dosya ad─▒ndan uzant─▒ ay─▒klan─▒yor

$ Kapsam─▒ ile ├žal─▒┼čma $ emit ve $ kapsam─▒

Yap─▒c─▒y─▒ C++ 'ta ba┼čka bir yap─▒c─▒dan (yap─▒c─▒ zincirleme yap─▒yor) arayabilir miyim?

JavaScript art─▒ i┼člev ad─▒n─▒n ├Ân├╝nde oturum a├ž─▒n

Sudo'yu, yazma iznim olmayan bir konuma y├Ânlendirmek i├žin nas─▒l kullan─▒r─▒m?

Listeyi dizeye d├Ân├╝┼čt├╝rmek [duplicate]

Bir dizeyi PHP'de bir say─▒ya nas─▒l d├Ân├╝┼čt├╝rebilirim?

Link vs derleyici vs denetleyicisi

T├╝m sat─▒rlar─▒ panoya kopyala