2009-11-13 18 views
6

Birçok işlemi bir arada birleştirmek istiyorum.Git'te bir çok işlemi tamamlayın. Neyi yanlış yapıyorum?

# Go back to the last commit that we want to form the initial commit (detach HEAD) 
git checkout <sha1_for_B> 

# reset the branch pointer to the initial commit, 
# but leaving the index and working tree intact. 
git reset --soft <sha1_for_A> 

# amend the initial tree using the tree from 'B' 
git commit --amend 

# temporarily tag this new initial commit 
# (or you could remember the new commit sha1 manually) 
git tag tmp 

# go back to the original branch (assume master for this example) 
git checkout master 

# Replay all the commits after B onto the new initial commit 
git rebase --onto tmp <sha1_for_B> 

# remove the temporary tag 
git tag -d tmp 

yukarıdaki kod bloğu B tamamlama eski olduğunu varsayalım: şeklinde bir önceki StackOverflow'daki answer de tarif edilen yöntem takip etmiştir.

İşte benim başıma budur: Ne eski olduğunu varsayalım zaman

$ cd rebase-test 
$ git branch 
    gui 
* master 
$ git log --pretty=oneline 
7391d1b8e51b766190794ede49e3338307a64225 Merge branch 'gui' 
c69d44b0d3615d4f537ca42fe67ee58e2728a31a Work in progress. Next port transform() 
e710a839c5aee0b07178da1f97999fa6dba445d6 audio_load() implemeted in callback.c 
... 
$ git checkout c69d44b0d3615d4f537ca42fe67ee58e2728a31a 
Note: moving to 'c69d44b0d3615d4f537ca42fe67ee58e2728a31a' which isn't a local branch 
If you want to create a new branch from this checkout, you may do so 
(now or later) by using -b with the checkout command again. Example: 
    git checkout -b <new_branch_name> 
HEAD is now at c69d44b... Work in progress. Next port transform() 
$ git reset --soft 7391d1b8e51b766190794ede49e3338307a64225 
$ git commit --amend 
[detached HEAD ad4e92a] new 
$ git tag tmp 
$ git checkout gui 
Previous HEAD position was ad4e92a... new 
Switched to branch 'gui' 
$ git rebase --onto tmp c69d44b0d3615d4f537ca42fe67ee58e2728a31a 
First, rewinding head to replay your work on top of it... 
Applying: Removed build files 
Applying: Removed more build files 
Applying: Fixed infile_handler crash 
/home/louise/rebase-test/.git/rebase-apply/patch:90: space before tab in indent. 
     for(int j = 0; j < data->audio_info_load->channels; j++) { 
/home/louise/rebase-test/.git/rebase-apply/patch:91: space before tab in indent. 
      if(j == selected_channel) { 
/home/louise/rebase-test/.git/rebase-apply/patch:92: space before tab in indent. 
      data->mono_channel[while_counter * const_frames_read + i] = bufferIn[i * data->audio_info_load->channels + selected_channel]; 
/home/louise/rebase-test/.git/rebase-apply/patch:93: space before tab in indent. 
      } 
/home/louise/rebase-test/.git/rebase-apply/patch:94: space before tab in indent. 
     } 
warning: 5 lines add whitespace errors. 
Applying: sf_readf_double() crashes 
Applying: Crash fixed 
Applying: Created audio_load() 
/home/louise/rebase-test/.git/rebase-apply/patch:73: space before tab in indent. 
     for(int j = 0; j < data->audio_info_load->channels; j++) { 
/home/louise/rebase-test/.git/rebase-apply/patch:74: space before tab in indent. 
      if(j == selected_channel) { 
/home/louise/rebase-test/.git/rebase-apply/patch:75: space before tab in indent. 
      data->mono_channel[while_counter * const_frames_read + i] = bufferIn[i * data->audio_info_load->channels + selected_channel]; 
/home/louise/rebase-test/.git/rebase-apply/patch:76: space before tab in indent. 
      } 
/home/louise/rebase-test/.git/rebase-apply/patch:77: space before tab in indent. 
     } 
warning: 5 lines add whitespace errors. 
Applying: Clean up 
/home/louise/rebase-test/.git/rebase-apply/patch:58: trailing whitespace. 

/home/louise/rebase-test/.git/rebase-apply/patch:60: trailing whitespace. 

/home/louise/rebase-test/.git/rebase-apply/patch:67: trailing whitespace. 

/home/louise/rebase-test/.git/rebase-apply/patch:72: trailing whitespace. 

/home/louise/rebase-test/.git/rebase-apply/patch:80: trailing whitespace. 

warning: squelched 11 whitespace errors 
warning: 16 lines add whitespace errors. 
Applying: transform_inv() implemented 
/home/louise/rebase-test/.git/rebase-apply/patch:115: trailing whitespace. 
    free(data->mono_channel); 
warning: 1 line adds whitespace errors. 
Applying: audio_save() crash 
Applying: Crash fixed 
Applying: Backend finally implemented in gui. 
$ git tag -d tmp 
Deleted tag 'tmp' 

Ben, aynı hatayı alıyorum.

Birisi neyin yanlış gittiğini görebilir mi?

Hugs, Louise

Düzenleme: Devam ne olduğu gösterilmektedir böylece Ben çıkışını güncelledik.

A-B-C-D-E 

içine:

A-BCD-E 
Sadece bu komutu verebilir

: o zaman

$ git rebase -i <sha1_for_A> 

Ve bu düzenleyin:

+1

Hata? Herhangi bir hata göremiyorum ... –

+0

Son çıkışta git "yerel bir şube değil" diyor. "Yerel", "sabit sürücüde" anlamına gelir. "Gui" dalı internette değil, harddrive'ımda. Ya da çıktı başka bir şey ifade ediyor mu? – Louise

+0

Başarılı bir şekilde tamamlanan birinci adımda durdunuzmuş gibi görünüyorsunuz (HEAD şimdi ddf5f7a ...), bu yüzden tarifin geri kalanıyla devam edin. –

cevap

12

ne yapmak istediğiniz bu hale ise

pick B 
pick C 
pick D 
pick E 

okumak için: hayır çatışmaları varsa, sen

pick B 
squash C 
squash D 
pick E 

yapılır. Ancak

, sen

ABCD-E 

(sen dahil etmek istiyorsanız yapmaya, diğer bir deyişle ilk kombine içindeki havuzun taahhüt) oluşturmak bu cevabı unutup bir göz istiyorum İlgili soruya ilişkin approved answer.

İlgili konular