git readme
删除远程分支
git push origin --delete [branchname]
或者
git push origin :[branchname]
stash
# 查看
git stash list
# 清空
git stash clear
# 删除一个
git stash drop stash@{0}
# 查看stash内容
git stash show -p stash@{0}
使用HTTPS记录用户名密码
git clone https://username:password@github.com/AAA/BBB.git
用户名和密码中含有@字符的, 使用%40代替
git合并commit
# git log查看提交
git log
# 合并commit
# 合并最新的3次commit
git rebase -i HEAD~3
# 合并到某一版本
# VERSION1 VERSION2 VERSION3
# 将VERSION2 VERSION3合并到VERSION1
git rebase -i VERSION1_ID
同时删除多个本地分支
# git branch命令 并没有提供git branch -D dev-* 这样的通配符功能
# 所以需要自己进行过滤删除
git branch | grep 'dev-' | xargs git branch -d
查看当前分支对应的远程分支
git branch -vv
git add *.xml 失败
# 在有些情况下,执行git add *.xml会发现xml并没有add进去
# 这很有可能是因为, 在当前目录已经有xml文件存在的情况下,因为bash会扩展*.xml
# 导致没能正确执行,这时可以执行
git add \*.xml
# 或者
git add '*.xml'
# 来避免bash转义
git clone 遇到 Peer's Certificate issuer is not recognized
- 方法一
git config --global http."sslVerify" false
- 方法二
修改.gitconfig文件, 增加
[http]
sslVerify = false
git修改commit的Author
# 新切换一个git环境, 可能因为Author信息没有设置完成就commit造成需要修改Author信息
这个时候首先
1. 设置好正确的user.name和user.email
2.1 如果修改最近一次commit, 使用 git commit --amend --reset-author
2.2 如果修改多次commit, 使用 git rebase,然后在对应的commit上选择e(edit), 然后根据提示同样执行 git commit --amend --reset-author修改, 最后执行git rebase --continue 生效
git commit 查找
# 根据关键字查找commit
git log --grep=XXX
# 根据author查找commit(根据名字过滤commit)
git log --author=XXX
git reset后找回git log中看不到的commit
# 有时候我们为了回滚commit, 会执行类似
git reset --hard HEAD~1
# 的命令, 但是执行完后我们运行git log是没法看到刚才被回滚的commit的,这个时候想再撤销怎么做呢
# 此时可以运行
git reflog
# 能看到类似
3d3a991 (HEAD -> dev, origin/dev) HEAD@{0}: reset: moving to HEAD~1
99e1a8e HEAD@{1}: commit: c
3d3a991 (HEAD -> dev, origin/dev) HEAD@{2}: pull -r origin dev: Fast-forward
0023ad9 HEAD@{3}: commit: b
3cc7721 HEAD@{4}: commit: a
# 可以看到我们被回滚的commit对应为HEAD@{1}, 这个时候只要我们再执行一次
git reset --hard HEAD@{1}
# 就可以撤销刚才的回滚操作了
需要注意的是, reflog并不是git仓库的一部分,它单独存储,它纯属是本地的, 所以如果本地仓库被删除, 对应的信息也就丢失了
git bash文件名显示为数字解决
# 不以八进制显示路径名
git config --global core.quotepath false
git cherry-pick
# 将{COMMIT-ID}应用到当前分支
git cherry-pick {COMMIT-ID}
# 将{COMMIT-ID-A} ~ {COMMIT-ID-B}应用到当前分支, 不包括{COMMIT-ID-A}
git cherry-pick {COMMIT-ID-A}..{COMMIT-ID-B}
# 将{COMMIT-ID-A} ~ {COMMIT-ID-B}应用到当前分支, 包括{COMMIT-ID-A}
git cherry-pick {COMMIT-ID-A}^..{COMMIT-ID-B}
git log信息打印到同一行
git log --pretty=format:"%H %an %ae %as %s"
# 更多格式参考: https://git-scm.com/docs/git-log#_pretty_formats