官方文档:https://git-scm.com/book/zh
# 初始化,新建本地仓库时使用
git init
# 暂存
git add <path> # 暂存具体文件/文件夹
git add . # 暂存新文件和被修改的文件,不包括删除的文件
git add -u # --update,暂存已追踪的文件,即被修改的文件和被删除的文件
git add -A # --all,全部暂存
# 提交
git commit -m <'提交信息'>
# 删除本地分支(需 merge)
git branch -d [分支名]
# 删除本地分支(不需要 merge)
git branch -D [分支名]
# 删除远程分支
git push origin --delete [分支名]
# 推送本地分支到远程分支
$ git push <远程主机名/别名> <本地分支名:远程分支名>
# 如果本地分支名与远程分支名相同,则可以省略冒号
$ git push <远程主机名/别名> <本地分支名>
# 将本地的 master 分支推送到 origin 主机的 master 分支
$ git push origin master:master
$ git push origin master # 同上
# 强制推送
$ git push --force origin master
# 删除远程的 test 分支
git push origin --delete test
# 完整格式
git pull <远程主机名/别名> <远程分支名:本地分支名>
# 更新
$ git pull
$ git pull origin # 同上,远程主机默认的别名是 origin
# 将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并
$ git pull origin master:brantest
# 如果远程分支是与当前分支合并,则冒号后面的部分可以省略
git pull origin master
git pull --force --strategy recursive -Xtheirs --allow-unrelated-histories
git reset --soft HEAD~1
-- 撤回最近一次的commit(撤销commit,不撤销git add)
git reset --mixed HEAD~1
-- 撤回最近一次的commit(撤销commit,撤销git add)
git reset --hard HEAD~1
-- 撤回最近一次的commit(撤销commit,撤销git add,还原改动的代码)
# 删除暂存区或分支上的文件,但是工作区还需要这个文件,后续会添加到 .gitignore
# 文件变为未跟踪的状态
git rm --cache <filepath>
git rm -r --cache <dirpath>
# 删除暂存区或分支上的文件,工作区也不需要这个文件
git rm <filepath>
git rm -r <dirpath>
# 不显示移除的文件,当文件夹中文件太多时使用
git rm -r -q --cache <dirpath>
# 查看删除文件的 commit_id
git log -- [file]
# 恢复文件
git checkout commit_id [file]
如何修改git commit的author信息 - 咸咸海风 - 博客园 | https://www.cnblogs.com/651434092qq/p/11015901.html
$ git log | grep '^commit ' | awk '{print $1}' | uniq -c | awk '{print $1}'
# 10
git log | grep "^Author: " | awk '{print $2}' | sort | uniq -c | sort -k1,1nr
# 10 aa
# 8 bb