记录 关于 git命令集

本地仓库
git commit–提交,当前节点作为父节点,生成新节点,当前分支指向新节点(如果是操作HEAD,那就是基于HEAD所指节点和移动HEAD)
git commit –amend —-加上amend的意思是,将会以分支当前节点的父节点作为父节点,提交一个新节点,这个节点可以理解为对原节点的一个修改,如下图,c2..是对c2.的一个修改,但是这个提交没有在c2.以下,而是在c3.以下

《记录 关于 git命令集》

git branch newBranchName–创建一个新分支,新分支指向当前分支节点
git branch -f master HEAD~3–强制修改分支位置
git branch -f branchName branchName^
git branch -f branchName nodeHash

git checkout branchName–切换分支
git checkout -b newBranchName–基于当前分支节点创建新分支,并切换到新分支

git merge branchName–生成一个新节点,这个节点同时指向当前分支和合并分支所在的节点(拥有两个父节点),当前分支指向新节点,如下图

《记录 关于 git命令集》

git rebase branchName–当前分支以操作分支所在的节点为基础,将当前分支与操作分支所不同的所有节点复制一份副本,排列到操作分支节点下,然后当前分支指向副本的最后一个节点

《记录 关于 git命令集》
《记录 关于 git命令集》

git rebase targetBranchName movedBranchName
可以操作非当前分支,即movedBranchName,并且如下组图,git rebase bugFix side,只将c3节点拷贝到bugFix下,c2节点没有,说明c2和c2.节点存在某种联系,git知道c2.能代表c2,所以就不拷贝了

《记录 关于 git命令集》
《记录 关于 git命令集》

git rebase -interactive branchName
交互式rebase,使用-i参数可以选择复制过去的节点并进行排序

HEAD
git checkout branchName,此时是切换到分支,HEAD指向分支名,分支指向节点
git checkout nodeHash,此时HEAD指向节点,同样可以执行commit,merge,rebase等操作
可以理解为,git的操作本身是基于HEAD所在的位置,在分支上就是操作分支(操作分支同时也操作节点的),在节点上就是操作节点

相对引用
可以使用^/^^^^或者~2
git checkout branchName^^
git checkout branchName~2
git checkout HEAD^^
git checkout HEAD~2
不能使用git checkout nodeHash^^/~2的形式

撤销变更
git reset branchName^^/~2
git reset HEAD^^/~2
reset是将当前分支(或者HEAD)向前移动到某个节点,效果跟git branch -f branchName branchName^是一样的(只是git branch -f只能操作分支)。

git revert branchName^^/~2
git revert HEAD^^/~2
revert是将回退到的那个位置的节点拷贝一份追加到最后成为一个新节点,然后将分支指向新节点

两者的区别:
reset如果设置为当前分支指向的节点,则整个分支不会有什么变化,而revert还是会将当前分支指向的节点拷贝一份成为新节点重新指向
因为reset是将分支重新指到之前的节点,所以作为远程分支其他客户端是无法感知到的,此时应该用revert

git cherry-pick nodeHash nodeHash nodeHash
cherry-pick直接将选中的节点拷贝一份追加到当前分支下

git tag versionNum branchName/nodeHash(如果branchName/nodeHash缺省,就在HEAD的位置节点上创建标签),标签名称不能重复,可以删除重设

git describe branchName/nodeHash(branchName/nodeHash缺省的话,则为HEAD) —
返回参数 <tag>_<numCommits>_g<hash>|tag名_提交数_查询节点hash

    原文作者:凉薄pc
    原文地址: https://segmentfault.com/a/1190000019942973
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞