关于Git对码农来说是不可或缺的贴身工具。学厮,用厮,恨厮,被厮盘,直到熟练使用,用它提高效率,甚至用它构建DevOps栈。关于Git文档,有官方的文档(中文版)、其他一些文档,还有我总结的gitlabFAQ(github:/bollwarm/gitlabFAQ)提到一些信息,以及我发的很多相关文章都是很好的学习材料。但是有时候可能要的是不需要深思熟虑、不需要深究细节的信手粘来的"傻瓜"式实操文档。所以今天虫虫就给你总结了这样一份材料,供你跟着实际操作联系。
1.交互式添加文件的选定部分
git add -p
add -p(或-patch)允许交互选择要提交的每个跟踪文件的各个变化内容。只提交选定的更改。
注意,该处可能的选项和操作:
y 来暂存该块
n 不暂存
d 不暂存该块,跳到下一块
e 手工编辑该块
2.交互式暂存文件的选定的变化
git stash -p
和第一个命令一样,stash命令也可以通过—patch选项以交互方式选择跟踪文件的特定变化暂存。
3.交互式撤销选定文件部分
git checkout -p
--patch还可用于选择性地丢弃以已经暂存文件的变化的。
4.修改最近的commit信息
git commit --amend
--amend允许将缓存区的变化添加到之前的commit。还可以和选项--no-edit一起使用,用户添加修改文件而不修改commit信息。而这个命令被大家广泛用途是用来修改最近的一次commit信息。注意该命令只使用还未提交push到远程库的变化。
5.缓存未跟踪的文件
git stash -u
默认情况下,add添加时候,不会缓存不会未跟踪的文件(.gitignore设置)。为了更改其默认行为临时又缓存一些文件,则可以使用-u参数。
6.切换到上一个分支
git checkout -
该命令用来快速切换到先前检出的分支。一般说来"-",是前一个分支的别名。在shell中也有该用法,比如,"cd -"就是跳到上一次所在的目录。
7.撤销所有本地更改
git checkout .
确定可以丢弃所有本地更改,则可以使用.撤销所有变化。但是一般情况下,建议用checkout --patch来具体交互式操作。
8.显示更改
git diff --staged
该命令用来显示所有已经暂存的更改(添加到索引)。默认的git diff只显示工作目录中的更改。
9.在本地重命名分支
git branch -m old-name new-name
如果要重命名当前所在的分支,可以简单用:
git branch -m new-name
10.重命名远程分支
为了远程重命名分支,先在本地重命名了分支,远程删除该分支,然后push推送重命名后的分支。
git push origin :old-name
git push origin new-name
11.一次打开所有带冲突的文件
rebase操作可能会导致冲突,为了显示所有冲突的文件,可使用下面的单行命令。
git diff --name-only --diff-filter=U | uniq | xargs $EDITOR
12. 删除上次提交的文件
如果你错误提交了一个文件,还未push到远程仓库。可以利用git rm和git commit --amend命令从上次提交中快速删除该文件,然后再提交。
git rm --cached <file-to-remove> 删除暂存区的变化
git commit --amend 改变commit提交信息
13.根据commit搜索分支
git branch --contains <commit>
该命令会列出所有包含特定commit的分支。
14.在本地优化存储库
git gc --prune=now --aggressive
如果你的仓库很大,变化很多,过一段时间可能你的仓库系能会很差了。这时候就可以使用git gic命令压缩历史信息来节约磁盘和内存空间。