查看更完整的清单:http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html
推荐一个cmd工具:更好看的界面,更舒适的用户体验
cmder: https://cmder.net/
首先贴上阮一峰老师博客的一张图,做一个知识储备。
git clone 项目地址
git checkout -b 分支名称
git push --set-upstream origin 要推送到远程的分支名称
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 列出所有本地分支和远程分支
git branch -a
git checkout 分支名称
# name是分支名称
# 删除本地分支
git branch -d name
# 删除远程分支
git push origin --delete name
git status
# 显示工作区与暂存区的差异
# 执行后用键盘向下的箭头进行下拉,不要用滚轮
git diff
# 全部提交
git add .
# 提交指定文件
git add 文件路径
# 写上对应的注释,便于区分
git commit -m 注释
git push
# 首先切到A分支
git checkout A
# 显示当前分支的版本历史
git log
从上图我们可以看出,git log仅能够查看commit-id、作者、日期以及注释,所以我更推荐大家使用git自带的可视化工具,无需单独安装(mac需要单独安装),使用以下命令行即可打开:
gitk
我们可以通过这个可视化界面,快速看到最近的版本信息,包括修改了哪些文件,哪些具体内容
# 首先切到分支B
git checkout B
#执行合并命令
git merge A
#merge之后如果有冲突,手动解决冲突(其实就是看哪些要哪些不要,手动操作取舍),然后执行:
git add .
git commit -m 注释
#如果没有冲突,执行推送到远程
git push
首先我们需要知道这一次提交的commit-id,这一次提交是在B分支生成的,所以我们需要先切到B分支:
git checkout B
可以通过上述的:
git log
gitk
将commit-id复制出来,复制时可以不用复制全部,复制15位左右就可以完全定位到对应的id,比如 d22gd6dmlr87sgsn,再切换到分支A
git checkout A
然后执行:
git cherry-pick d22gd6dmlr87sgsn
执行之后查看状态,会提示你git push,按照提示执行就推送到远程啦
# 回退上一个版本
git reset --hard
#回退指定版本
git reset --hard commit-id
注意,这个命令只是在你本地回退到上一个版本,并不是远程回退。回退之后查看状态提示git pull可以证明这一点。(根据提示git pull代码就会重新同步最新的)
# 撤销所有修改
git checkout .
#撤销指定文件
git checkout 文件名
git reset HEAD
注意:这里如果使用git reset --hard,暂存区的状态就会消失,回到未修改的状态
执行git reset --hard,再次查看git status,发现还是提示git push,怎么办呢?
执行以下操作,可以本地代码回到跟远程一致的状态,并且不提示git push
# 首先同步远程仓库,注意,这一步执行完还是会提示git push
git fetch --all
# 分支名在这里就是A
git reset --hard origin/分支名
在C分支开发,按照时间做了下列提交:
commit-id-c 2021.03.05
commit-id-b 2021.03.04
commit-id-a 2021.03.03
今天是2021.03.05,假如我想撤销掉 commit-id-a 这一次的提交内容,并且不影响后面的b和c,这要怎么做呢?
我们先把 commit-id-a 拿到,然后在C分支,执行以下命令:
git revert commit-id-a
然后发现弹出了这样的窗口,不要慌,首先点击键盘"Esc",这时候多了一条提示:
然后同时按下"Shift"和":"
然后按下"q",再按回车
然后根据提示git push即可推送到远程
与其说revert命令是一个撤销,不如叫它“还原”,因为这个命令并不会影响第一次提交的版本,只是重新建立了一次提交,提交内容是commit-id内容的还原。这个命令掌握以后会经常用到的!
偶尔会有这样的情境,我正在开发分支A,可是又给我临时安排了其他任务比较紧急,需要去B分支改东西,A分支我又不想提交,这时怎么办呢?
# 将当前未提交的内容临时保存,并加上备注方便查找
git stash save 备注
这时候再执行git status,会提示:nothing to commit, working tree clean
然后你就可以切到其他分支做别的事情了。
过后你再回到这个分支,执行:
# 查看stash列表
git stash list
怎么恢复刚才stash save的东西呢?
执行:
git stash apply stash@{0}
其中, "stash@{0}“是根据备注指定到版本,如果省略不写的话,默认取"stash@{0}”,即最新的一次save
同样可以实现的命令行:
git stash pop stash@{0}
stash@{0} 用法同上
这两种命令的区别在于,pop可以理解为“弹出”,执行后会删掉这一次save记录,而apply只是移入变化,记录仍然保存。
具体使用哪一个可以根据自己的习惯。
如果觉得stash list记录太多了,想要清除,执行:
git stash clear