Если вы уверены, что хотите получить только одно коммит и отлично с веткой, которая никогда не будет помечена как «слитая» (возможно, потому, что вы собираетесь удалить ее с помощью git branch -D my-squash-merged-branch
и никогда не захотите ее видеть), используйте это:
git checkout master
git merge --squash branch-to-merge
git commit -m "message for commit"
Однако, после долгих испытаний, я считаю, что лучший способ объединить наиболее ветвей:
git checkout master
git merge --no-ff branch-to-merge -m "message for commit"
Это позволяет избежать «быстро вперед» объединить, что запрещает задающий -m "message"
вариант для многих сливается. Это не Фактически обеспечивает единую фиксацию, как первоначально запрошено, но, по крайней мере, позволяет легко увидеть начало/конец ветви и, таким образом, сделать легкие реверты и т. П. git log
покажет все отдельные коммиты, которые были слиты ...
commit a6672a4c3d90c35d5f39c45f307ef6b385660196
Merge: 015f8d6 f84e029
Author: Brian White <[email protected]>
Date: Wed Jan 15 20:47:35 2014 -0500
merged something trivial
commit f84e02915faa02afc9a31b8c93a6e7712420687d
Author: Brian White <[email protected]>
Date: Wed Jan 15 20:47:12 2014 -0500
added something also trivial
commit 904d5b5ff00d691d63104a77d2e2ca484732a5fb
Author: Brian White <[email protected]>
Date: Wed Jan 15 20:46:26 2014 -0500
added something trivial
commit 015f8d681bdaf65725067ee8058215cedb529dd6
Author: Brian White <[email protected]>
Date: Wed Jan 15 20:23:31 2014 -0500
optimizations to MyThing
...
... но если вы посмотрите на графе бревна (git log --graph
), вы можете увидеть, что мерзавец действительно признает его единственное слияние.
* commit a6672a4c3d90c35d5f39c45f307ef6b385660196
|\ Merge: 015f8d6 f84e029
| | Author: Brian White <[email protected]>
| | Date: Wed Jan 15 20:47:35 2014 -0500
| |
| | merged something trivial
| |
| * commit f84e02915faa02afc9a31b8c93a6e7712420687d
| | Author: Brian White <[email protected]>
| | Date: Wed Jan 15 20:47:12 2014 -0500
| |
| | added something also trivial
| |
| * commit 904d5b5ff00d691d63104a77d2e2ca484732a5fb
|/ Author: Brian White <[email protected]>
| Date: Wed Jan 15 20:46:26 2014 -0500
|
| added something trivial
|
* commit 015f8d681bdaf65725067ee8058215cedb529dd6
| Author: Brian White <[email protected]>
| Date: Wed Jan 15 20:23:31 2014 -0500
|
| optimizations to MyThing
...
Если совершает или другая деятельность происходит на главной ветви, график будет показывать слита ветвь, начиная с правильным местом и соединение в текущей голове, но, конечно, все коммиты все равно будут отображаться в журнале с совершает переход от ветви наверху.
git merge --squash поразительно. Хотелось бы, чтобы я более внимательно прочитал это в 2011 году;) +1 –
Проблема с 'git merge -squash' заключается в том, что она фактически не создает слияние. Графические интерфейсы, такие как сетевой просмотрщик GitHub, не будут отображать ветви, воссоединившиеся; один просто закончится внезапно, а другой продолжит. – Maxpm