一、detaced head处于游离状态
- 1.创建一个临时分支(在游离状态下提交commit会产生新的ID,比如fd72b0b,应以新的ID为准)
git branch temp fd72b0b
- 2.切换到需要合并的分支(例如master)
git checkout master
- 3.切换了分支之后我们需要将temp合并到检出的分支(master)
git merge tmp
- 4.最后我们只需要push对应的master分支中提交的信息。
删除刚刚创建的临时分支
git branch -d tmp
二、get rebase -i合并多次提交
git rebase -i xxxxxxxx
-
- 选择一个commit为节点,commit id,合并这个节点以后的提交
git rebase -i 9ed449a
- 选择一个commit为节点,commit id,合并这个节点以后的提交
-
- 一般是第一个pick,下面几条填入s,wq保存退出。
- 一般是第一个pick,下面几条填入s,wq保存退出。
-
- 分别编辑每次的commit信息
- 分别编辑每次的commit信息
- 4.wq保存退出。到此 rebase -i结束。
三、git reset --soft HEAD^
回退到某个版本,只回退了commit的信息,如果还要提交,直接commit即可(修改的内容变成未add的状态),索引(暂存区)和工作目录的内容是不变的,在三个命令中对现有版本库状态改动最小。
四、git reset --hard HEAD^
彻底回退到某个版本,本地的源码也会变为上一个版本的内容,所有修改的内容都会丢失, (修改的代码 不会变成未add的状态)。索引(暂存区)内容和工作目录内容都会变给定提交时的状态。