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分支,比如下面的操作:

A --- B --- C          master
 \
  \-- D                topic
to
A --- B --- C          master
       \
        \-- D          topic
instead of
A --- B --- C          master
             \
              \-- D    topic
操作方法:

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,效果就是这次提交的内容只被暂存了,可以继续修改和重新提交















  • 无标签