备注:以下内容中,包含CommitHash的地方(提交对象)也可以用HEAD及相对引用类型
Name:分支名CommitHash:提交对象(节点)DHEAD状态:detached HEAD状态
git init
在当前目录内新建一个初始化仓库git commit
在当前分支提交一次版本git branch Name
在当前节点创建一个名为Name的分支(不会切换到其上)git branch Name CommitHash
在CommitHash对应的节点上新增一个名为Name的分支git checkout Name
切换到名为Name的分支上git checkout -b Name
在当前节点创建并切换到名为Name的分支git checkout -b Name CommitHash
在CommitHash对应的节点上新增并切换到名为Name的分支上git merge Name
将名为Name的分支合并到当前的分支上,并提交一次版本git rebase Name变基
将当前分支的从分支点开始的全部提交记录,嫁接到Name分支上,形成线性结构git checkout CommitHash
将当前的分支的HEAD分离出来,使其指向CommitHash对应的节点(进入DHEAD状态),以方便在当前的版本上进行安全修改(相当于建立了一个临时副本,不会影响原来结点)✅注:
git log可以查看每一次提交的commithash,git checkout Name即可退出对应节点的DHEAD状态(DHEAD状态下使用checkout就会切出)相对引用
git checkout BranchName^/ CommitHash^/HEAD^
切换到当前分支最新提交的版本/hash对应指定节点/HEAD的parent节点,并进入DHEAD状态^代表着前移一个版本(可叠加,如^^)~Num代表前移Num个版本git branch -f Name Commithash强制移动
强制移动Name分支到Commithash对应的指定节点位置(不会切换到这个分支上)git reset T
重置时间线到目标节点T的全部提交,会清除提交记录T的类型一般有:
- 相对引用(使用 HEAD HEAD^ 等)
- 绝对引用(直接使用CommitHash)
注意:此方法只能适用于本地提交
git revert T
新建立一次与目标节点T镜像的提交(比如T新增了1行代码,镜像提交T’则是删除1行代码),会保留以前的提交记录,适用于协作开发T的类型一般有:
- 相对引用(使用 HEAD HEAD^ 等)
- 绝对引用(直接使用CommitHash)
就代码而言,T’的代码会与T的parent节点一致
git cherry-pick
CommitHash1 CommitHash2...
将CommitHash1,CommitHash2依次复制到当前节点(HEAD指向)的下方git rebase -i CommitHash
从CommitHash对应的节点进行交互式变基,适用于不清楚变基节点的提交哈希的情况,可以直接交互式地完成git rebase的效果git commit --amend
修改最近的一次提交(相当于把旧的删掉,换上去一个新的),如果代码只做了微小改动并且你不想在创建一个commit,可以试试添加 --amend 这个选项git tag TagName CommitHash
给CommitHash对应的节点打名为TagName永久性的标签
同样的,可以通过标签来切换到指定节点( git branch -f和git checkout ),从而避免了复杂的CommitHash注意:用 git checkout TagName 会进入节点的DHEAD状态
评论