Git笔记
tips:<*> means required,[*] means optional
基本操作
创建仓库
git init
添加文件
git add <filename>
提交更改
git commit -m '<message>'
查看状态
git status
查看修改内容
git diff
查看日志
git log
回退到目标版本
注:
- HEAD^为上一个版本,HEAD^^为上上个版本,依此类推
- commit id类似3628164
git reset --hard <version>
撤销更改
- 缓存区
git reset HEAD <filename>
- 文件
git checkout -- <filename>
删除文件
git rm <filename>
远程仓库
添加远程仓库
git remote add origin <*.git>
推送到远程仓库
git push [-u] origin <repository-name>
克隆仓库
git clone <*.git>
分支
创建分支
git branch <branch-name>
切换分支
git checkout <branch-name>
合并某分支到当前分支
git checkout -b <branch-name>
创建+切换分支
git checkout -b <branch-name>
查看分支
git branch -a
删除分支
git branch -d <branch-name>
强行删除未合并分支
git branch -D <branch-name>
创建远程分支到本地
git checkout -b <branch-name> origin/<branch-name>
删除远程分支
git branch -r -d origin/<branch-name>
git push origin :<branch-name>
建立本地分支和远程分支的关联
git branch --set-upstream <branch-name> origin/<branch-name>
临时储存工作进度
储存
git stash
查看
git stash list
恢复
git stash apply [stash@{*}]
删除
git stash drop [stash@{*}]
恢复并删除
git stash pop [stash@{*}]
标签
创建标签
git tab <tag-name> [-m 'comment'] [commit-id]
#eg.
git tag v0.9 6224937
删除标签
git tag -d <tag-name>
推送标签
git push origin <tag-name>
删除远程标签
先删除本地,然后再
git push origin :refs/tags/<tag-name>
忽略文件
创建:.gitignore
,在里面写入过滤规则
*.class
test/
强行添加忽略的文件
git add -f <filename>
被忽略的文件的忽略规则
git check-ignore -v <filename>
自定义命令
(个人认为可以理解为C语言中的宏定义)
git config --global alias.<abbr> 'command'
#e.g.
git config --global alias.fuck 'push origin'
git config --global alias.logd "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
不小心push了密码到github上
没错,简直蠢哭了
BFG Repo-Cleaner 用法:
java -jar bfg.jar --replace-text replacements.txt my-repo.git
replacements.txt 这样写:
test@qq.com==>[email protected]
廖雪峰的原文看这里