说明

此篇文章记录在日常 coding 的操作以及一些必要的 git 概念

git的初始化设置

git config --global user.name "Your Name"
git config --global user.email "email@example.com"

config的三个作用域,缺省等同于local

git config --local ## local只对某个仓库有效
git config --global ## global对当前用户所有仓库有效
git config --system ## system对系统所有登录的用户有效

显示config的配置,加--list

git config --list --local ## local只对某个仓库有效
git config --list --global ## global对当前用户所有仓库有效
git config --list --system ## system对系统所有登录的用户有效

查看提交记录

git log --oneline

image-20220305220137649

git log -n2 --oneline 

n2表示所有分支最近两个。

image-20220305220229829

git log

image-20220305220412495

git log --all

提交记录

修改commit的message

此操作不建议对已发布到线上的commit做修改。

git commit --amend

image-20220305222413228

修改老旧commit的message,需要使用其上一个commitId。

git reabase -i commitId

image-20220305222826712

image-20220305223007339

在新窗口中重新编辑commit信息即可。

image-20220305223056685

将多个commit整理成一个commit

git rebase -i commit的父哈希值
# 然后将需要合并的改为s。

image-20220305223844839

将除第一个外需要合并的修改为s即可进行编辑信息。

git rebase -i commit的父哈希值

进入编辑页面后,将需要合并的写在一起。如果没有自动出现则手动键入即可。需要删除的使用s命令,保留的使用pick

image-20220305224945894

image-20220305225107076

接下来编辑commit信息即可。

  • pick:保留该commit(缩写:p)
  • reword:保留该commit,但我需要修改该commit的注释(缩写:r)
  • edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
  • squash:将该commit和前一个commit合并(缩写:s)
  • fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
  • exec:执行shell命令(缩写:x)
  • drop:我要丢弃该commit(缩写:d)

操作暂存区和工作区

恢复文件变更

  1. 编辑了某文件,但想放弃修改,恢复至与暂存区一致
git checkout 文件名

恢复暂存区

git reset HEAD
git reset HEAD -- fileName1 fileName2

分支操作

查看分支

git branch
git branch -r
git branch -a

新建分支

git branch [branch-name]
git checkout -b [branch]
git checkout -b [branch]
git checkout -b [branch] [tag]
git branch --track [branch] [remote-branch]
git branch --track [branch] [remote-branch]

切换分支

git checkout [branch-name]
git checkout -
git checkout -b [branch]

代码合并

选择几个commit

此操作建议将最底层开始选择,例如:git cherry-pick A B,其中A的提交必须早于B的提交。

git cherry-pick <commitHash>

转移连续的提交A到B,并且包含A

git cherry-pick A^..B 

merge合并

此合并方式会生成一个新的commit信息

git merge <branchName>

标签

查看tag

git tag
git show <tagName>

新建tag

git tag <tagName>
git tag <tagName> <commitId>

删除tag

git tag -d [tag]
git push origin :refs/tags/[tag]

提交tag

git push [remote] --tags
git push [remote] [tag]

常见场景

开发中临时加塞了紧急任务

# 将当前状态暂存起来
git stash
# 将之前的暂存信息弹出来,并会保存暂存队列
git stash apply
# 将之前的暂存信息弹出来,不保存暂存队列
git stash pop
# 查看暂存队列
git stash list

常用命令脑图

git