生成 ssh key
ssh-keygen -t rsa
ssh-keygen -t rsa -C <注册的gitlab邮箱>
GitLab / GitHub 多账户下设置 ssh keys
git commit 规范
feat | 新功能 |
---|---|
fix | 修复问题 |
docs | 修改文档 |
style | 修改代码格式,不影响代码逻辑 |
refactor | 重构代码,理论上不影响现有功能 |
perf | 提升性能 |
test | 修改测试用例 |
chore | 修改工具相关(包括但不限于文档、代码生成等) |
deps | 升级依赖 |
git clone 指定分支
git clone -b <branch> <URL>
git diff
git diff # 比较工作区和暂存区
git diff --staged # 比较暂存区和上次提交
取消文件跟踪
git rm --cached <file>
git stash
在分支之间传递更改
git stash list
git stash push -m <message>
git stash pop
git stash apply <id>
git merge/rebase
merge 把目标branch 上的所有commit 都应用到当前branch,并自动生成一条merge commit
如果merge冲突,需要手动解决冲突再重新commit,或者放弃 merge
git merge <branch> # merge branch分支
git merge --abort # 放弃merge
rebase 把当前 branch 上的 commit,以指定的目标 commit 为base,依次重新提交一次
在 rebase 之后,需要切回 master 再merge 一下,把 master 移到最新的 commit
git rebase -i <master> # 以master为base,依次提交commit(提交前后commit不一样)
git merge <branch>
git pull
在 push 代码时如果远程分支有新的 commit 未同步到本地,会 push 失败,这时需要先 git pull 拉取远端最新代码,再进行 push 操作
不使用 --rebase 进行 pull 时,最终 push 的结果会多出一条 merge commit,这是在执行 git pull 自动生成的
git pull origin master # git pull = git fetch + git merge
git pull --rebase origin master # git pull --rebase = git fetch + git rebase
git push
把 branch 上传到远端仓库
git push <远程仓库名> <本地分支名>:<远程分支名>
git push origin HEAD:refs/for/master
# origin:远程仓库名
# HEAD:指向正在工作的本地分支的指针
# refs/for:提交代码到远程仓库后需要经过code review才能进行merge
git branch
git branch -vv
# 查看本地分支和远程分支的关联关系
git checkout
git checkout -b 本地分支名 origin/远程分支名
# 创建跟踪远程分支的本地分支
git mv
git判断rename还是delete/add是根据文件内容的相似度决定的,相似度超过50%就是rename,低于50%就是delete/add
git log --follow xxx
# 查看文件rename前后的git记录
cherry-pick
将指定的提交应用于其它分支
git blame
查看代码改动记录
git reset
git reset HEAD # 将暂存区和HEAD的提交保持一致
git reset HEAD --hard # 将工作区,暂存区和HEAD的提交保持一致