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
posted @ 2021-12-16 10:50  weiwei5987  阅读(154)  评论(0编辑  收藏  举报