2013-04-27 12 views
1

Выполняя некоторую перезагрузку git, я обернулся. На графике ниже я хочу, чтобы stable указал на фиксацию 6016f6, и я хочу, чтобы все остальные коммиты «выше» 6016f6 ушли. Другими словами, у меня есть BEFORE но я хочу AFTER:Удалите некоторые выталкиваемые коммиты после перезагрузки

ДО:

* commit 725b5f (origin/fixpaths) 
|\ Merge: 6016f65 e91c3aa 
| | Date: Sat Apr 27 07:04:05 2013 -0700 
| | 
| |  Merge branch 'fixpaths' of wayfare.example.org:/modules/base into fixpaths 
| | 
| * commit e91c3a 
| | Date: Fri Apr 26 16:49:39 2013 -0700 
| | 
| |  fix permissions on many cron files 
. 
. 
. 
| * commit 160460 
| | Date: Fri Apr 26 14:35:14 2013 -0700 
| | 
| |  module paths cleanup for dns.pp 
| | 
| * commit ecbfd6 
| | Date: Fri Apr 26 14:23:30 2013 -0700 
| | 
| |  fix module paths in cron base module 
| | 
* | commit 6016f6 (HEAD, fixpaths) 
|/ Date: Fri Apr 26 14:23:30 2013 -0700 
| 
|  Change module paths to work with base module. 
| 
* commit 88d0bc (origin/stable, stable) 
| Date: Mon Apr 22 15:51:44 2013 -0700 
| 
|  committing everything for branch stable 
|  
| * commit 9baf5a (tag: release/latest, origin/master, origin/HEAD, master) 
|/ Date: Wed Apr 24 14:47:23 2013 -0700 
| 
|  Fix permissions on all of the cron jobs 

после:

* commit 6016f6 (HEAD, stable, origin/stable) 
|/ Date: Fri Apr 26 14:23:30 2013 -0700 
| 
|  Change module paths to work with base module. 
| 
* commit 88d0bc 
| Date: Mon Apr 22 15:51:44 2013 -0700 
| 
|  committing everything for branch stable 
|  
| * commit 9baf5a (tag: release/latest, origin/master, origin/HEAD, master) 
|/ Date: Wed Apr 24 14:47:23 2013 -0700 
| 
|  Fix permissions on all of the cron jobs 

(Примечание: чтобы сохранить некоторое пространство Я усеченный хэши и удалили автору.)

ответ

0

Вы сделали трудную роль - представьте себе, как вы хотите, чтобы дерево выглядело. Теперь просто переместить маркеры ветви вокруг, чтобы соответствовать его:

$ # Move 'stable' branch marker up 
$ git checkout stable 
$ git merge --ff-only 6016f65 
$ git push origin stable 

Теперь, что делать «fixpaths» - либо тянуть обратно удаленный «fixpaths» в соответствии с местным (2 способом ниже) или просто удалить локальную и удаленных филиалов, потому что вы сделали с ним (последний путь ниже):

$ # Delete the remote fixpaths and repush the local one 
$ git push origin :fixpaths 
$ git push origin fixpaths 

$ # Force the remote 'fixpaths' branch marker backward to your local 'fixpaths' 
$ # (Note: generally push -f is inadvisable unless you understand what you are doing) 
$ git push -f origin fixpaths 

$ # Or else delete fixpaths because you don't need it anymore 
$ # Caution: this will 'delete' the local and remote branches 
$ git branch -d fixpaths 
$ git push origin :fixpaths 
0

git checkout stable, git cherry-pick 6016f6. Просто сделайте вишневое выделение, которое дополнительно зафиксируйте на ветке stable, и вы будете установлены, если я правильно пойму.

Смежные вопросы