删除不需要的分支

git branch -d 分支名

如果你需要删除的分支没有被合并到其他分支,那么需要使用-D参数进行强制删除。

commit

修改最新commit的message

git commit --amend

以上命令即可修改最近一次提交的commit。

修改老旧commit的message

git rebase -i commit的父哈希值

image-20200816085610982

image-20200816085726114

image-20200816085749995

image-20200816090025009

退出编辑命令的窗口后,即可进入编辑commit的窗口。在此编辑即可。

image-20200816090139417

如果已经上传到服务器,不要轻易变更,否则会影响其他成员操作。

把连续的多个commit整理成1个

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

image-20200816100036399

image-20200816100318628

把间隔的几个commit整理成一个

git rebase -i commit的父哈希值

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

image-20200816102014885

image-20200816101945204

接下来通过git rebase --continue修改最新的commit。

image-20200816102335614

HEAD、暂存区、工作区

比较暂存区和HEAD所含文件的差异

git diff --cached

image-20200816103453733

比较工作区和暂存区所含文件的差异

# 比较全部文件差异
git diff 
# 只比较c.js文件之间的差异
git diff -- c.js

image-20200816103933573

image-20200816104036648

让暂存区恢复成和HEAD的一样

git reset HEAD

image-20200816104318038

让工作区的文件恢复为和暂存区一样

git checkout -- filename

image-20200816104632116

取消暂存区部分文件的更改

git reset HEAD -- fileName1 fileName2

image-20200816105421382

清除最近的几次提交

git reset --hard 哈希值

这条指令导致在这之前的变更全部丢弃。

image-20200816105810536

看看不同提交的指定文件的差异

git diff 分支1 分支2 [-- 文件名]
# 分支可换成提交的哈希值,文件名如果不写,那么表示比较全部

image-20200816111117136

正确删除文件的方法

git rm fileName

image-20200816111333065

开发中临时加塞了紧急任务处理(暂存)

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

指定不需要git管理的文件

新建一个.gitignore文件即可。参考:gitignore

# 忽略doc里面的文件
doc/
# 忽略doc文件(夹)及下面文件
doc

如何将Git仓库备份到本地

常用协议语法格式说明
本地协议(1)/path/to/repo.git哑协议
本地协议(2)file:///path/to/repo.git智能协议
http/https协议http://git-server.com:port/path/to/repo.git
https://git-server.com:port/path/to/repo.git
平时接触到的都是智能协议
ssh协议user@git-server.com:path/to/repo.git⼯工作中最常⽤用的智能协议

哑协议与智能协议

直观区别: 哑协议传输进度不不可⻅见;智能协议传输可⻅见。
传输速度: 智能协议⽐比哑协议传输速度快。

image-20200816115739966

# 不带工作区
git clone --bare 地址 新名称
# 关联远端仓库
git remote add 名称 地址