<类型>: <描述>
类型必须是以下值之一:
- feat: 新增功能
- fix: 修复bug
- docs: 更新文档
- style: 代码排版
- refactor: 重构
- build: 配置相关的修改
描述:请一句话说明本次的提交内容
master
: 主分支,存放成熟的代码,可以随时发布,请不要强制pushdev
: 【建议非强制】平时在这个分支上开发fix
: 【建议非强制】当发现master
上分支的代码有bug时,请在此分支上开发,测试通过后再合并到master
约定dev
, fix
是本地分支,不要push到远程仓库
-
git clone https://github.com/holyzfy/frontend_guidelines.git
-
切换并创建分支
dev
:git checkout -b dev
参数
-b
表示创建分支,后续再切换到dev
分支时请去掉此参数 -
一些开发动作,创建,编辑文件...
-
把上一步的变更内容添加到暂存区;
git add .
-
提交到本地仓库:
git commit -m '请简要描述本次的提交'
-
准备合并到master分支前先拉取更新,看别人是否向
master
分支推送过代码:git checkout master git pull
-
如果拉取到更新,就回到
dev
分支,把master
分支的新内容合并到dev
:
git checkout dev
git merge master
如果没有发生冲突,git会自动合并,这时候会打开vim的编辑界面,提示你写提交说明:
Merge branch 'master' into dev
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
~
~
~
~
~
~
~
".git/MERGE_MSG" 7L, 293C
注意到第一行已经有一句提交说明了,如果没有要补充的就直接运行:wq
保存并退出vim;
- 现在dev分支已经包含远程仓库
master
分支的最新代码,可以合并到本地master
了:
git checkout master
git merge dev
本次合并,git只是执行了简单的快进式合并(fast-farward merge);
-
最后把
master
分支推送到远程仓库:git push
-
结束
-
暂存当前的修改:有时候需要临时切换分支做些事情,又不想提交手头的修改,可以使用
git stash
命令保存工作现场:-
暂存
git stash
-
取回刚才暂存的内容
git stash apply
-
-
如果忘了提交某些文件,或者想要重新编写提交信息,可以使用
--amend
选项重新提交:git commit --amend
-
解决冲突:例如当前在
dev
分支,准备把master
分支合并到dev
分支时遇到冲突,解决步骤:-
git merge --abort
中止冲突的合并 -
对于冲突的文件,选择使用哪个分支的代码
git merge -X theirs master
使用master
分支git merge -X ours master
使用dev
分支,也就是当前所在的分支
-
结束
-
-
如果在本地提交了多次代码,并且还未push到远程,可以把几个连续的提交合并成一个,使提交记录看起来更简洁。 例如合并最近的4次提交:
git rebase -i HEAD~4
然后根据提示在vim里编辑并保存,如果想中止操作,退出vim后请运行
git rebase --abort
-
如果在
master
分支运行git pull
时遇到冲突,可能是因为你运行完git merge dev
后未及时push,解决办法是撤销刚才的合并操作:- 运行
git merge --abort
中止合并,因为git pull
的意思是git fetch
+git merge origin
- 找到
git merge dev
前的那一次提交的commit id,例如da183fb88
- 运行
git reset --hard da183fb88
- 运行
git pull
- 结束
- 运行
-
拉取远程所有的分支
git fetch --all
-
撤消提交
git revert <commit_id>
,如果要撤消的提交是个合并操作,需要增加-m
参数指定回退到哪个分支,例如要撤消如下提交commit edeadbf21b2944587b65f55bf58e14874f5a1a0e Merge: 2c87eaa a179b35 Author: zhangsan <[email protected]> Date: Mon Jun 26 15:43:35 2017 +0800
本次提交是个合并操作,合并了
2c87eaa
和a179b35
- 回退到
2c87eaa
:git revert edeadbf -m 1
- 回退到
a179b35
:git revert edeadbf -m 2
如果要撤销多个提交,请用空格隔开,或者用
A^..B
(包含A和B,A比B早),可能会弹出几次vim界面,提示保存,请每次输入命令:wq
。 - 回退到
-
把其他分支的部分提交合并到当前分支
git cherry-pick A^..B
(包含A和B,A比B早)。如果某个提交是个合并操作,需要增加-m
,规则同上。 -
拉取远程所有的分支
git pull --all
-
解决中文路径乱码,请在命令行依次运行
git config --global core.quotepath false # 解决 git status 中文件路径的编码问题 git config --global gui.encoding utf-8 # 图形Git GUI界面编码 git config --global i18n.commit.encoding utf-8 # 提交信息编码 git config --global i18n.logoutputencoding utf-8 # 输出 log 编码