Git笔记
分支
新建分支
git pull origin master
,在master分支下,保证当前代码与线上同步,是最新的
a. master 是以前 Github 上的默认主分支,现在已经更换为 maingit branch <分支名>
,新建分支。git checkout <分支名>
,切换 到新建的分支上,再进行下一步。git push origin <分支名>
,把本地分支推到远端,让远端也有一个你的分支,用来后面提交你的代码。- 新建分支并切换到该分支:
git checkout -b <分支名>
删除分支
- 删除本地分支 ( 切换到master分支之后再删除 )
git branch -d <分支名>
- 删除远端分支
git push origin --delete <分支名>
合并分支
如果你基于主分支master新建了分支dev,再基于dev分支新建了一个分支test,在test分支开发完成后,需要将test合并到dev分支上。此时,先用git branch
查看自己在哪个分支上,然后git checkout dev(切换到需要合并的分支上)
,最后git merge test
(在dev分支上执行这句,意思是将test合并到dev分支上)
分支命名
- master 分支
a. 主分支,也是用于部署生产环境的分支,所有提供给用户使用的正式版本,都在这个主分支上发布。为确保 master 分支稳定性, master 分支一般由 develop 以及 hotfix 分支合并,任何时间都不能直接修改代码。 - develop 分支
a. 开发分支,始终保持最新完成以及 bug 修复后的代码,一般开发的新功能时,feature 分支都是基于 develop 分支下创建的。
b. 如果想正式对外发布,就在 master 分支上,对 develop 分支进行”合并”(merge)。 - feature 分支
a. 开发新功能时,以 develop 为基础创建 feature 分支
b. 分支命名: feature/ 开头的为特性分支 - release 分支
a. 预上线分支,发布提测阶段,会 release 分支代码为基准提测。当有一组 feature 开发完成,首先会合并到 develop 分支,进入提测时会创建 release 分支。
b. 如果测试过程中若存在 bug 需要修复,则直接由开发者在 release 分支修复并提交。当测试完成之后,合并 release 分支到 master 和 develop 分支,此时 master 为最新代码,用作上线。
- hotfix 分支
a. 分支命名: hotfix/ 开头的为修复分支,它的命名规则与 feature 分支类似。线上出现紧急问题时,需要及时修复,以 master 分支为基线,创建 hotfix 分支,修复完成后,需要合并到 master 分支和 develop 分支。
提交代码
git status
查看改变的文件git add .
添加到缓存区git commit -m ‘本次提交的描述’
a. Commit messages格式要求
ⅰ. 标题:50个字符以内,描述主要变更内容
ⅱ. 主体内容:更详细的说明文本,建议72个字符以内。需要描述的信息包括:- 为什么这个变更是必须的? 它可能是用来修复一个bug,增加一个feature,提升性能、可靠性、稳定性等等
- 他如何解决这个问题? 具体描述解决问题的步骤
- 是否存在副作用、风险?
ⅲ. 如果需要的话可以添加一个链接到issue地址或者其它文档
git push origin <分支名>
push是从本地向远端推代码,也就是把自己写的代码提交上去
a. 执行完上一步,有可能报错,此时淡定,不认识英语的话在线翻译是干嘛的,大多数时候提示你,本地落后于远端,(意思就是远端比本地多了一些代码,为什么会出现这种情况呢,肯定是你跟别人共用一个分支,他提交了一段代码到远端,所以导致你的本地落后于远端)既然落后了,那就把他更新成最新的
b. 本地和远程改了同一段代码,手动改掉冲突,留下一个再进行提交
git pull --rebase origin <远程分支名>
,如:git pull —rebase origin master
- 先解决冲突,然后执行
git add .
- 解决完冲突之后
git rebase —continue
- 此时再提交你的代码
git push origin <分支名>
- 此时若显示,当前分支落后于master分支,则需要强推,
git push -f origin <分支名>
,若不报错,则rebase成功。
日志
git log --oneline
git log --graph
查看分支图
撤回操作
撤销 git add
git reset HEAD
如果后面什么都不跟的话 就是上一次add 里面的全部撤销了git reset HEAD XXX/XXX/XXX.js
就是对某个文件进行撤销了
撤销 git commit -m '本次修改说明'
git reset --soft HEAD^
这样就成功的撤销了你的commit。注意,仅仅是撤回commit操作,写的代码仍然保留。
a. HEAD^的意思是上一个版本,也可以写成HEAD~1
b. 如果进行了2次commit,想都撤回,可以使用HEAD~2- 参数:
a. –mixed意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作,这个为默认参数,git reset --mixed HEAD^
和git reset HEAD^
效果是一样的。
b. –soft 不删除工作空间改动代码,撤销commit,不撤销git add .
c. -hard 删除工作空间改动代码,撤销commit,撤销git add .
,注意完成这个操作后,就恢复到了上一次的commit状态。
d. 如果commit注释写错了,只是想改一下注释,只需要git commit --amend
,此时会进入默认vim编辑器,修改注释完毕后保存就好了。
修改别名
git config --global alias.co checkout
将创建一个git别名来执行此操作。它会将以下条目添加到全局~/.gitconfig文件中:
[alisa]
co = checkout