Git的使用备忘录(git merge –squash)
首先
用于有效地使用Git的备忘录。
适用于想要将存储库放在GitHub上,但不想上传详细提交信息的人们。
流动
-
- 切割主题分支,并在其下再割出一个topic-develop分支。
-
- 将topic-develop分支仅保留在本地,并随意进行提交。
- 在适当的时间点,将topic-develop分支通过git merge –squash合并到topic分支中。
如果这样做,在第2步就不必为提交消息烦恼了。
在第2步提交的提交会在第3步被压缩(合并),
所以在Github上查看时,不会出现奇怪的提交增加。
挺不错的。 de.)
分支主题
砍下两个分支。
$ git branch
* master
$ git checkout -b topic-branch
Switched to a new branch 'topic-branch'
$ git checkout -b topic-branch-dev
Switched to a new branch 'topic-branch-dev'
$ git branch
master
topic-branch
* topic-branch-dev
长出承诺
可以随意在 topic-branch-dev 进行提交。
只要编译通过的代码(无论是什么)都应该提交到这里。
$ touch hoge
$ git add .
$ git commit -m "ほげした"
[topic-branch-dev 3321e9d] ほげした
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 hoge
$
$ touch fuga
$ git add .
$ git commit -m "ふがした"
[topic-branch-dev db4e233] ふがした
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 fuga
将主题分支合并到目标分支,使用 –squash 选项。
$ git checkout topic-branch
Switched to branch 'topic-branch'
$ git merge --squash topic-branch-dev
Updating 0332922..db4e233
Fast-forward
Squash commit -- not updating HEAD
fuga | 0
hoge | 0
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 fuga
create mode 100644 hoge
只有通过git commit才能完成合并(commit) squash merge到这个状态。
$ git commit
提交信息中,在第一行写一个酷炫的提交信息,
之后的部分则保留自动出现的内容不变。
Implement hoge & fuga
Squashed commit of the following:
commit db4e233fb2f58211d2364dca66afc0112470cda5
Author: Kenta Hamanaka <hamanaka@cs.info.mie-u.ac.jp>
Date: Wed Feb 8 12:31:18 2017 +0900
ふがした
commit 3321e9d63eef8f956073a72bd6170ac6a4e0c373
Author: Kenta Hamanaka <hamanaka@cs.info.mie-u.ac.jp>
Date: Wed Feb 8 12:30:58 2017 +0900
ほげした
然后将它推送。
$ git push origin topic-branch
Counting objects: 7, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (7/7), 1.02 KiB | 0 bytes/s, done.
Total 7 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3), completed with 3 local objects.
To git@github.com:kentahama/test.git
0cd8dc9..cc82330 topic-branch -> topic-branch
总结
使用`git merge –squash`非常方便。
由于开发终端只有topic-branch-dev分支保留下来,反过来说,不能从其他终端继承未合并的topic-branch-dev提交。在这种情况下,可以在可以从两个终端访问的远程服务器上使用git init –bare并将其推送到那里。或者可以在GitHub上创建一个私有仓库。感觉有点本末倒置(?)