注:与shell命令的manual相同,中括号[]表示参数非必传
reflog 查看分支基于哪个分支创建
# 查看myBranch分支基于哪个分支创建
git reflog show myBranch --date=local
# 查看输出最早的一条记录如下
ff01ab45 myBranch@{Tue Jul 26 16:27:34 2022}: branch: Created from messageDegrade^0
status
查看当前工作空间状态以及状态切换命令提示(提交/回滚/中断merge)
git status
stash 暂存
新增暂存
# 暂存名称为最新一次提交的commit -m的内容
git stash
# 暂存名称为 myChange
git stash save 'myChange'
查看暂存
# 查看暂存stash@{0}与当前分支的差异
git stash show [stash@{0}]
# 查看暂存列表
git stash list
取出暂存
# 取出并删除指定下标处的暂存,并与当前分支合并
git stash pop [stash@{0}]
# 仅取出指定下标处的暂存,并与当前分支合并
git stash apply [stash@{0}]
删除暂存
# 删除置顶暂存
git stash drop stash@{0}
# 全部删除
git stash clear
Git回滚到某个commit
reset 回滚
git reset 参数:
hard:工作区、暂存区的内容都会和当前head指向的内容相同。
soft:head指针指向指定的commit,但是工作区、暂存区的内容不会发生变化。
mixed:介于hard和soft之间,暂存区的内容将会发生变化,但是工作区的内容不会发生变化。
# 将head指向上一次commit
git reset --hard head^
# 将head指向上上次commit
git reset --hard head^^
# 将head指向上10次的commit
git reset --hard head~10
# 指定commit版本号 将head移动到指定的commit
git reset --hard 指定commit的sha码
log 查看commit的sha码
git log
push 强推到远程仓库
# 如果无法强推,检查是否分支处于保护状态,是则先在后台取消该分支保护。
# 强推后被回滚的代码就找不回来了,做好备份!
git push origin HEAD --force
revert
代码merge到主干回滚后想要重新修改回滚代码后merge到主干
# 反向操作你的rollback的代码
git revert <commit-id>
# 反向操作某个提交,但执行命令后不进入编辑界面,也就是不会自动帮你提交文件,需要手动提交
git revert -n|--no-commit <commit-id>
revert与reset的区别
reset是将git变更指针移动到指定commit-id
revert是将指定commit-id的变更反向操作后作为一次新的commit提交至git仓库
配置/查询用户名邮箱的命令
system配置
git config --system user.name "username"
git config --system user.email user@email.com
global配置
git config --global user.name "username"
git config --global user.email user@email.com
local配置
git config --local user.name "username"
git config --local user.email user@email.com
查询配置
git config user.name
git config user.email
修改备注信息
修改最近一次的commit的注释
git commit --amend
修改某次的commit的注释
- rebase到指定提交
// 指定commit id
git rebase -i 4cb600e
// 倒数第二次提交
git rebase -i HEAD~2
- 修改commit注释,不再重复代码
- 恢复代码分支
git rebase --continue
- push修改
如果git命令amend没有打开vim编辑器,检查是否配置编辑器,如果没有按照下面命令配置
git config --global core.editor "vim"
export GIT_EDITOR=vim
注意:
下面场景无法通过rebase修改备注信息
- 合并master至需求分支
- push 代码
- 再次修改需求分支代码,提交代码
此时想要通过rebase修改merge那次的备注信息,无法修改,可以通过reset至merge那个动作的节点,然后通过git commit --amend修改备注信息
上传本地项目至git
- idea创建本地项目,创建时可以指定同时创建本地git仓库,否则需要手工初始化如下:
- 关联本地仓库至远程仓库
git remote add origin https://github.com/my-git.git
# 推送代码
# 初次推送,远程仓库是空的,因此需要-u参数
git push -u origin master
# 后续更新可直接推送
git push origin master
push强推
git push --force-with-lease origin myBranch
合并commit信息使提交信息更加简洁
commitId3
commitId2
commitId1
想要合并commitId2 commitId3
git rebase -i commitId1
按i进入编辑模式,将commitId3前方的pick修改为squash,按ESC输入wq保存退出即可