创建分支
根据 commit 创建新分支
git checkout -b branch_name commit_id_xxx
回滚
还原本地修改过的文件
# 会还原本地所有修改过的文件!!
git checkout .
# 删除新增未监视的文件(untracked files)
git clean -fd
丢弃本地上一次提交
# 回退到上一个 commit 版本
git reset HEAD^
# 回退首次提交 commit 版本
git update-ref -d HEAD
回滚到指定版本
# 还原到指定的旧版本
git reset --hard <old_commit_id>
# 还原到上一版本
git reset HEAD^
# 新修改处理...
# 强制push更新覆盖远程仓库
git push -f origin master
标签 tag
删除指定 tag
# 先删除远程tag
git push origin :refs/tags/v0.x.x
# 再删除本地tag
git tag -d v0.x.x
删除匹配的部分 tag
# 先删除远程tag,支持*模糊匹配
git push -d origin $(git tag -l "v0.1*")
# 再删除本地tag
git tag -d $(git tag -l "v0.1*")
# 先删除所有远程tag
git tag -l | xargs -n 1 git push --delete origin
# 再删除所有本地tag
git tag | xargs git tag -d
Commit 修改
清空所有历史 commit
# 创建新的master分支
git checkout --orphan new_master
git add -A
git commit -am "First commit"
# 删除旧master分支
git branch -D master
# 新master分支改名为master
git branch -m master
# 强制push更新覆盖远程仓库
git push -f origin master
合并多个 commit
# 切换回master分支,并获取最新代码
git checkout master
git pull
# 把分支的多个提交合并为一个
git merge --squash feature-branch-xxxx
git commit -m "merge commit message"
git push
cherry-pick 另一仓库的 commit
# 添加另一仓库为远程仓库,并获取相关 commit 信息
git remote add other https://example.link/repository.git
git fetch other
# cherry-pick 操作
# 删除不再使用的远程仓库
git remote remove other
多帐号
让提交时提示输入帐号
git config --local credential.helper ""
# git地址要使用http协议
git remote set-url origin https://xxx.com/xxx.git