Author: haoransun
Wechat: SHR—97
图片来源:极客时间,需个人购买教程。
1.删除无用分支
1 | git branch -d branch_name // 删除分支(会有提示是否确认删除) |
2.修改本地最新commit的messagee
1 | git commit --amend //可以对最新的commit的message做变更 |
3.修改本地老旧commit的message
1 | git rebase -i 待修改commit的父ID号 // -i交互式 |
将第一个 pick 改为 reword / r 然后保存,会再次进入交互界面。
修改变更的信息后保存,查看信息。
4.连续多个本地commit整理成1个
将中间两个合并成一个commit
此时,应该基准是中间两个的父ID号,即 7f7e472c30
1 | git rebase -i 7f7e472c30 |
选用 squash 或者 s 进行合并
添加合并信息
git log –graph //查看日志
会对整理后的commit生成一个新的ID号
4.多个本地 间隔commit整理成1个
将最新的一个与第一个合成一个commit
因为最早的一个没有父亲,所以直接使用rebase变更命令
1 | git rebase -i 7f7e472c |
添加 pick 7f7e471c 命令 //最古老的那一个 合并上限
将 s 96764b86 添加到上面命令的下一行 // 合并下限
删除 pick 96764b8 命令行
1 | git rebase --continue //继续 使用这个继续操作 |
添加变更信息
合并成功,生成新的commit ID号
此时出现两个(树)根 可以看情况删除非master所在的根
5.比较暂存区与HEAD所含文件的差异
1 | 变更内容后使用 git add 添加到暂存区 |
6.比较暂存区与工作区所含文件的差异
1 | git diff //默认查看工作区与暂存区所有文件的变化 |
7.将暂存区恢复成HEAD所处状态 (变暂存区用 reset)
即 工作区内容变化后,添加到暂存区,后来发现工作区有了新的优化方案。此前暂存区的内容不想保留,想回溯到之前的HEAD所处状态。
1 | git reset HEAD //取消暂存区中的文件(文件由绿变红) |
8.将工作区的文件恢复为暂存区所处状态(变工作区用 checkout)
即 工作区内容变化后,添加到暂存区,后来发现工作区做了变化后,发现没有暂存区的好。
想舍弃工作区当前的更改,回溯到暂存区所处状态。
1 | git checkout -- file_name // 舍弃工作区的变更,恢复为暂存区的内容 |
9.取消暂存区部分文件的更改
1 | git reset HEAD -- file_name1 file_name2 |
10.消除最近的几次提交
恢复到提交的前几次
1 | git reset --hard ID // 回退到指定的commit的ID号 |
11.不同提交、分支的指定文件的差异化比较
1 | git diff branch_name1 branch_name2 //比较两个分支的差异 |
12.删除文件
常规做法
1 | rm 指定文件名 //删除工作区文件 |
git 做法
1 | git rm 指定文件名 |
13.开发中临时添加紧急任务(stash)
工作区与暂存区中的内容暂时还不能提交,但是当前又有一个更为紧急的任务需要完成时,可以把工作区与暂存区中的内容存放到另一个空间中。
1 | git diff // 工作区与暂存区是有差异的 |
此时可以处理紧急任务,add到暂存区,commit到仓库后,再回来继续当前开发,需要将之前存储在另一个空间的内容恢复出来
1 |
|
处理完紧急任务后弹出内容
14.指定不需要Git管理的文件
建立一个文件,指定文件名为 .gitignore
在文件中添加需要Git版本忽略的文件即可。
可在GitHub上查看
https://github.com/github-tools/github/blob/master/.gitignore
15.备份Git仓库到本地
常用的传输协议
哑协议与智能协议
直观区别:哑协议传输进度不可见;智能协议传输可见。
传输速度:智能协议比哑协议传输速度快。
哑协议
1 | git clone --bare /f/Git/git_learning/.git ya.git |
智能协议
1 | git clone --bare file:///f/Git/git_learning/.git zhineng.git |
本地推远端仓库(demo)
1 | git remote -v |