Git常用命令
- git clone
# 当克隆的库过大时, 可以指定克隆深度, 加快clone速度, 但会损失git库提交历史
git clone --depth 1
- 从远程分支创建分支的最快方式
git checkout -t origin/远程分支名
- 从远程分支创建分支的普通方式
先查看远程所有分支:
git branch -va
然后切换到远程分支:
git checkout origin/远程分支名x
会出现这样的:
(detached from ...)
运行这命令即可(-b 即base,意思是以当前分支为base,新建一个分支)
git checkout -b 本地分支名x
或者可以直接用一条命令做上面三件事:
git checkout -b 本地分支名x origin/远程分支名x
- 本地push到远程分支并新建远程分支,如下代码即是将本地
Topic/V2.1
提交到远程TopicTemp/V2.1
分支上,若没有TopicTemp/V2.1
这个分支则会新建这个远程分支
git push origin Topic/V2.1:TopicTemp/V2.1
- git 查看是谁写的bug,grep -e 支持正则表达式
git blame 文件名 | grep '你想搜索的东西'
- git 查看提交历史
git log --grep '你想搜索的东西'
- git 回滚到某次提交
git reset --hard commitid
- git 回滚某个文件被添加到暂存区
git reset HEAD fileName
- git 将commit排序,可以加上分支名作为比较
git rebase [options]
- git cherry-pick 可以将其他分支的某个提交合并到此分支,配合IDEA的话, 针对多库的情况也非常好用
- git 保存临时文件及其恢复指令
git stash
git stash pop
- git 移除Untracked file
git clean -fd
- git 删除某个提交
- 先找到你想删除的某次提交的前一个commit id,例如84eb37
- 执行
git rebase -i 84eb37
- 将pick改为drop即可删除这个提交
- 检查一下是否删除成功
- git 回滚某个文件到某个提交
git log;查看你想要的回滚id
git reset {logId} {fileName};请手动替换logId,去掉{}
或者, 需要重新提交一次, 比较适用
git checkout [logId] [fileName]
git commit ...
- git 查找曾经被删除的文件
git log --diff-filter=D --summary
- git 远程分支配错了,怎么修改?
#首先看一下远程配置
git remote -v
#然后删除旧配置
git remote rm origin
#添加新的remote配置
git remote add origin [url]
有时候gitignore规则不会生效, 原因是那些文件已经被纳入到git的管理版本去了, 所以需要
- .gitignore规则不生效的解决办法
git rm -r --cached .
#重新提交一次
git add .
git commit -m [commit messages]
git 获取hash值
git rev-parse --short HEAD
- git hash 算法:SHA1 Hash
验证:
echo 'Hello' | git hash-object -w --stdin
e965047ad7c57865823c7d992b1d046ea66edf78
echo -e 'blob 14\0Hello' | shasum
ee99a265de5129cb6bf47a2a88deac3714fed12c
- git ls-tree
- git show
- 参考文献