1. Commit message 的格式
<type>(<scope>): <subject>
(1)type
type用于说明 commit 的类别,只允许使用下面7个标识。
- feat:新功能(feature)
- fix:修补bug
- docs:文档(documentation)
- style: 格式(不影响代码运行的变动)
- refactor:重构(即不是新增功能,也不是修改bug的代码变动)
- test:增加测试
- chore:构建过程或辅助工具的变动
如果type为feat和fix,则该 commit 将肯定出现在 Change log 之中。其他情况(docs、chore、style、refactor、test)由你决定,要不要放入 Change log,建议是不要。
(2)scope
scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。
(3)subject
subject是 commit 目的的简短描述,不超过50个字符。
- 以动词开头,使用第一人称现在时,比如
change,而不是changed或changes- 第一个字母小写
- 结尾不加句号(
.)
2. 新建本地分支并推送到远端
新建本地分支
git checkout -b dev
提交本地分支到远程分支
git push origin dev
3. 合并分支并推送到远端
首先切换到release分支
git checkout release
把远程release上的代码pull下来
git pull origin release
把dev分支的代码合并到release上
git merge dev
4. 回退版本
查看代码提交记录,提交id
git log
回退到指定的id
git reset --hard 提交id
强推远程
git push -f
5. 切换git代码源地址
设置需要切换的源地址
git remote set-url origin http://xxx.git
查看源地址
git remote -v
6. 复制git仓库的项目
新建项目
选择Import repository ---> Repo by URL
输入Git repository URL
http://junchao:54910207Li@192.168.16.193/dev9/pmb.git
http://192.168.16.193/dev9/pmb.git 为复制仓库地址
junchao:54910207Li 为git 用户名:密码
7. 强制覆盖本地
git强制覆盖本地命令(单条执行): git fetch --all && git reset --hard origin/master && git pull
- 第一个是:拉取所有更新,不同步;
- 第二个是:本地代码同步线上最新版本(会覆盖本地所有与远程仓库上同名的文件);
- 第三个是:再更新一次(其实也可以不用,第二步命令做过了其实)
8. 设置git push与git pull的默认origin
git remote show origin查询远程仓库配置情况
(1)pull操作
1、将远程指定分支 拉取到 本地指定分支上:
git pull origin <远程分支名>:<本地分支名>
(注:命令里的尖括号<>只是包裹中文的标识,方便你看的,实际使用时不用写,不过冒号需要)
2、将远程指定分支 拉取到 本地当前分支上:
git pull origin <远程分支名>
3、将与本地当前分支同名的远程分支 拉取到 本地当前分支上(需先关联远程分支)
git pull
在克隆远程项目的时候,本地分支会自动与远程仓库建立追踪关系,可以使用默认的origin来替代远程仓库名
(2)push操作
1、将本地当前分支 推送到 远程指定分支上(注意:pull是远程在前本地在后,push相反):
git push origin <本地分支名>:<远程分支名>
2、将本地当前分支 推送到 与本地当前分支同名的远程分支上(注意:pull是远程在前本地在后,push相反):
git push origin <本地分支名>
3、将本地当前分支 推送到 与本地当前分支同名的远程分支上(需先关联远程分支)
git push
注:
关联git push的远端分支:
git push --set-upstream origin dev
本地关联远程分支命令:
git branch --set-upstream-to origin/分支名
9. 全局免密码配置
配置存储模式
git config --global credential.helper store
执行之后会在用户主目录下的.gitconfig文件中多加 helper = store
Linux 下查看:
vim ~/.gitconfig
windows10 下当前用户路径:%USERPROFILE%
内容如下:
[user]
name = uxpi
email = 360032368@qq.com
[credential]
helper = store
然后在项目目录,执行git pull命令,会提示输入账号密码。这次输入账号密码之后,就会记住账号密码,并且会在当前用户根目录下生成一个.git-credentials文件,下一次就不用再输入账号密码了。
10. 提交代码-取消暂存和查看修改
取消暂存的文件
git reset filename
查看文件的修改
git diff README.md
11. 恢复之前版本的两种方法
方法一:git reset
原理: git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本
适用场景: 如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。
方法二:git revert
原理: git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。比如,我们commit了三个版本(版本一、版本二、 版本三),突然发现版本二不行(如:有bug),想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西。
适用场景: 如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。
12. 基于远端分支创建本地分支
git checkout -b 新的分支名 origin/远程仓库分支名
13. 合并新的分支到当前分支,合成一条提交记录
git merge --squash 新的分支名
14. 代码检出
对于多分支的代码库,将代码从一个分支转移到另一个分支是常见需求。
这时分两种情况。一种情况是,你需要另一个分支的所有代码变动,那么就采用合并(git merge)。另一种情况是,你只需要部分代码变动(某几个提交),这时可以采用 Cherry pick。
git cherry-pick <commitHash>
上面命令就会将指定的提交commitHash,应用于当前分支。这会在当前分支产生一个新的提交,当然它们的哈希值会不一样。
git cherry-pick <HashA> <HashB>
上面的命令将 A 和 B 两个提交应用到当前分支。这会在当前分支生成两个对应的新提交。
15. Git 跳过检查提交代码
git commit -m '提交信息' --no-verify
16. 强制覆盖本地代码的命令
git fetch --all
git reset --hard origin/master
git pull
17. 修改最近一次提交信息
git commit --amend