准备 Git
配置 Git 代理
|
|
升级 Git
|
|
配置别名
|
|
关联本地和远程的仓库
本地已经准备好一个 Hugo 项目。
Github 新建仓库,本地进入项目目录:
|
|
注意自行替换 Github 用户名
username
及 仓库名reponame
。
分支管理
使用分支
|
|
如果有新手看的话,commit 提交的 message 格式建议参考我另一篇博文《Git Commit Message 规范》。好习惯要从娃娃抓起。
合并分支(Merge Branch)
gitGraph:
options
{
"nodeSpacing": 110,
"nodeRadius": 9
}
end
commit
commit
branch newbranch
checkout newbranch
commit
checkout master
commit
checkout newbranch
commit
checkout master
merge newbranch
mermaid 的 Git 分支树还在实验阶段,没什么可玩的,只能图一乐。
一般使用分支的情况:
|
|
D -- E -- F feature
/
A -- B -- C main
feature
开发完成,我想合并到 main
怎么办?
普通 Merge(默认使用 Fast forward)
|
|
D -- E -- F feature
/ main
A -- B -- C
|
|
禁用 Fast forward 的 Merge
|
|
D -- E -- F feature
/ \
A -- B -- C ----------- G main
注意:
G
是一个船新版本(merge 时单独创建一个版本再合并)。
|
|
总结
这样就很好理解了吧,实际使用中最显著的区别就是如果是禁用 Fast forward
的 merge,main
分支回滚上一个版本会回到 C
而不是 E
。
也就是说 --no-ff
可以隐藏被合并分支中的提交历史,如果不想让开发 被合并分支
时产生的细碎 commit 扰乱 主分支
的提交历史就可以用。
但如果想在主分支上管理每一个 commit,直接 merge 就好了。
另外,如果想忽略任何细碎的提交历史,即专注于主分支,直接根本完全 totally 不 care 其他分支,就要用到神奇的变基(rebase
)[1]了,懂的都懂这里就不 细说 了。
扩展阅读
《Pro Git 中文版(第二版)》《Git 官方文档》
《菜鸟教程》
《阮一峰的 Wiki》