1:情景:公司需要远程代码回滚:发现 git merge my-branch到master的时候把我的分支上的所有提交都带过来了,回滚找tag和commit的时候特别麻烦。
解决:1. 总是使用 git merge --no-ff 而不是 git merge
记录下分支的变更历史。
2. 恰当的使用 git pull --rebase 避免不必要的merge记录。
批量删除git本地分支
git branch |grep 'hotbug'|xargs git branch -D
grep
grep 可以用于在文件或流中查找匹配的结果,
如grep 'abc' **/**.py查找当前目录下全部含有'abc'字符串的文件
并打印出结果
xargs
将前命令的执行结果作为参数传递给后一条命令。此处,
我们是将所有含'dev'字符的分支名传递给git br -d`
背景:合并pull两个不同的项目,我在Github新建一个仓库,写了License,
然后把本地一个写了很久仓库上传。先pull,因为两个仓库不同,发现
refusing to merge unrelated histories,无法pull
解释:这是因为远程仓库origin上的分支master和本地分支master
被Git认为是不同的仓库,所以不能直接合并,
要把两个不同的项目合并,
git需要添加一句代码,在git pull,
需要添加--allow-unrelated-histories
git pull origin master --allow-unrelated-histories
3、分支重命名
在git中重命名远程分支,其实就是先删除远程分支,然后重命名本地分支,
再重新提交一个远程分支,所以重点在于本地分支的重命名
git branch (-m | -M) <oldbranch> <newbranch>:
大m和小m都可以
git branch -M aaa feature-20180516-becomegood
4、远端分支更新了,但是本地查看远端还存在远端已经删除的分支
背景:加入git服务器的某个分支删除了,但是本地通过git branch -a
还可以看到,更新分支
git fetch origin --prune 或者 git remote prune
git remote show origin