Git命令记录

262 阅读3分钟

常用命令

checkout命令,不同的场景作用不同
  • git checkout -b 新建本地分支,并且切换到新分支
  • git checkout filepath 撤销本地文件或者目录的改动
  • git checkout branchName 切到新分支

  • git commit -s 会弹出编辑器
  • git commit --amend 修改之前的提交信息,改完再push一次就可以生效
  • git diff file 比较文件的改动
  • git pull --rebase
  • git branch -a 列出远端的所有分支
  • git stash 将修改暂存起来,不提交,后续可以通过git stash apply再恢复修改
push命令
rebase命令
  • git rebase -i HEAD~2 会弹出编辑器,可以调整提交的顺序,合并提交,修改comment
# 命令:
# p, pick <提交> = 使用提交
# r, reword <提交> = 使用提交,但编辑提交说明
# e, edit <提交> = 使用提交,但停止以便在 shell 中修补提交
# s, squash <提交> = 使用提交,但挤压到前一个提交
# f, fixup [-C | -c] <提交> = 类似于 "squash",但只保留前一个提交
#                    的提交说明,除非使用了 -C 参数,此情况下则只
#                    保留本提交说明。使用 -c 和 -C 类似,但会打开
#                    编辑器修改提交说明

merge --squash 合并分支时,压缩commit,保留一个commit

不同于rebase,这是一个merge操作

  • featureA分支的提交记录
3e07fa8 (HEAD -> featureA) b4
0a0442e b3
4edf8e8 b2
03f1843 b1
753d2d3 fix
10d1f81 modify mee to 这边是分叉点
  • master分支的提交记录
10d1f81 (HEAD -> master) modify mee to 这边是分叉点
27e38026次修改
d5b717c 第五次修改 five
28c7e6c 第四次修改
8ae2be4 second + third file
851be70 first commit

上面的记录可以看出featureA和master从10d1f81分叉,然后featureA开发过程中提交了很多,功能完善之后合并到master,但是这么多的commit,不利于后期的问题排查,而且很多不重要的commit可以合并到一起,为了提交信息的整洁,后期reset到特定节点,我们合并的时候可以使用--squash,这是合并分支时,合并commit,执行完这个命令,再执行一次git commit 输入这个功能的概述信息就可以了


日志相关,可以组合使用
  • git log -2 显示两条log
  • git log --oneline 一行显示log
  • git log --no-merges 不显示merge节点信息
  • git log -p 日志中显示修改点
  • git log filepath 显示单个文件或者目录的提交记录

reset命令
  • git reset HEAD 或者git reset 某个节点,会将改动从暂存区撤销并重新记录到工作区
  • git reset --hard 这是将改动撤销并且工作区的改动也没有了 (谨慎操作)
tag
  • git tag 显示所有的标签
  • git tag tagName commitID -m "commit message" 根据某一个提交创建tag, -m可以输入tag对应的说明
  • git tag -a tagName commitID 会弹出编辑器,可以输入tag对应的说明
  • git show tagName 显示tag的信息,包括提交日期,作者,说明, commitid
  • git tag -d tagName 删除本地tag,要想服务器的tag也删除,需要执行 git push origin :refs/tags/tagName
  • git push origin tagName 将tag推送到服务器,单个推送
  • git push origin --tags 将远程没有的tag 都推送到服务器
  • git push origin :refs/tags/tagName 更新服务器的tag,用于删除本地tag之后更新服务器tag
  • git push origin --delete tagName 更新服务器的tag,用于删除本地tag之后更新服务器tag
别名
  • git config --global alias.别名 要替换的内容
git config --glabal alias.br branch, 用br替换branch
git config --global alias.unstage 'reset HEAD --' [fileName] 用unstage替换reset HEAD --
比如 :git unstage fileA == git reset HEAD --fileA