6个Git实用技巧,让你事半功倍

gitkeep

默认情况下,Git 并不跟踪空目录,如果想提交一个空目录,要怎么办呢,

在项目目录下添加 .gitkeep 文件,把空目录名称加上,用法跟 .gitignore 一样

gitignore

在已有项目中我们想新增一个忽略文件,这个时候只在.gitignore中添加是无效的,.gitignore 只能忽略那些原来没有被 track 的文件,解决方法就是先把本地缓存删除(改变成未 track 状态),然后再提交。

# 如果是文件夹,记得加 -r 参数
git rm -r --cached filepath
git add .
git commit -m 'update .gitignore'
git push origin master

git commit

在本地提交之后,又做了一个小改动,又需要再提交一次?不需要,可以追加到上次提交中,这样就可以避免两次提交

# 追加到上一次提交
git commit --amend
# 如果已经push到远程了, 强制推送
git push -f origin master:master

git reflog

Git 维护着一个检查点列表,可以使用 reflog 访问这些检查点。

使用 reflog 我们就可以撤销合并、恢复丢失的提交或分支等等。

git stash

我们在一个分支工作时,突然要修复其它分支的bug,又不想去提交没完成的代码,可以使用git stash将代码暂存起来,修复完bug再接着工作。

# 存储当前未提交的代码,添加备注,方便查找,只使用git stash 也是可以的,但查找时不方便识别。
git stash save "save message"

# 查看stash了哪些存储
git stash list

# 显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num}
git stash show
git stash show stash@{1}  # show第二个存储 

# 应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num}
git stash apply
git stash apply stash@{1}  # apply第二个存储

# 命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0}
git stash pop
git stash pop stash@{1}  # pop第二个存储

# 丢弃stash@{$num}存储,从列表中删除这个存储
git stash drop stash@{$num}

# 删除所有缓存的stash
git stash clear

版本回退

在使用git reset --hard 时要慎重

# --mixed 为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。「把所有差异都混合(mixed)放在工作目录中」
git reset HEAD^ 

# --soft 参数会保留工作目录的内容,并把因为保留工作目录内容所带来的新的文件差异放进暂存区。
git reset --soft HEAD^

# --hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交
git reset --hard HEAD^

查看原文:6个Git实用技巧,让你事半功倍 

你可能感兴趣的:(git)