Git备忘录,记录常用的命令。
检出某次commit并建立一个新分支:
git checkout commitid -b 本地分支名称
参考:https://kunzhao.org/docs/tutorial/git/merge-multiple-commit/
使用rebase功能,将多次本地commit合并成一次push到远程,并且重写push日志,这点配合dev分支,简单无敌,不但可以随便在本地造,还可以推送到远程,只要造完将dev分支删除即可。
操作实践:
git rebase -i HEAD~3,表示合并最近3次commit为一次commit,用交互的方式决定最终的commit消息
接下来出现vim编辑界面,保留第一行的pick,将后面的行的pick改为s,表示压缩它们的日志,按:wp保存
接下来出现vim编辑commit日志的界面,删除默认生成的日志,写上你想的日志即可。
参考:https://stackoverflow.com/questions/7744049/git-how-to-rebase-to-a-specific-commit
使用rebase合并分支上的某个commit到master分支,比如下面的操作:
to instead of 操作方法:git branch temp master^ git checkout topic git rebase temp git branch -d temp
打标签:
git tag v1.0.0 -m "实现日志模块"
git push origin v1.0.0
git tag
git检出时如果想直接指定远程仓库,使用下面的指令
git checkout -b main origin/main
这里检出的本地main分支会直接和远程仓库的main分支建立联系
//TODO: 了解基于git-flow工作流。
git以分支的形式提交修改并在gitlab上提交合并申请操作实践:
git checkout -b develop git push origin develop:develop
左边的develop是指定本地的分支名称,右边的develop指定的是远程origin上的分支名称,如果远程没有develop分支,则会自动创建远程分支。
上面既可以在检出develop之后修改提交再push,也可以先在本地master分支上修改提交,然后检出develop分支,再push。
注意,上面的push并不会将本地的develop分支与远程的develop分支建立关联,如果要建立关联,可以在push时执行--set-upstream选项,或者事后执行以下指令:
git branch --set-upstream-to=origin/develop
git push origin A:B 这种形式,如果只提供A,那么A表示的是远程分支,也就是只会推送与远程分支A关联的本地分支,而不是将当前分支推送给远程分支A。
考虑git config --global pull只拉取当前分支
gitlab上提交合并申请时勾选合并后删除分支选项,避免已经合并过的分支一直留存。
合并通过后本地执行get remote prune命令把失效的远程分支删除。
如果要取消本地develop分支与远程develop分支的关联,可以执行下面的指令:
git branch --unset-upstream develop
git reset --hard commitid 强制回滚到某个版本。
替换远程仓库操作记录:
git remote remove origin git remote add origin git@github.com:zhongluqiang/sylar-from-scratch.git git branch --set-upstream-to=origin/main main
操作记录:
A端,master分支:
git add * git commit -m "xx" git push origin master:develop # 将本地的master分支推送到远程的develop分支,如果远程没有这个分支,则自动创建
B端,master分支:
git pull git checkout -b develop origin/develop # 检出刚才提交的develop分支 git checkout master # 切回master分支 git merge develop --no-commit --no-ff # 将develop分支的内容合并到master分支上,但不自动提交,也不自动fast-forward,效果就是这次提交的内容只被暂存了,可以继续修改和重新提交