-
git merge --help
:打开查看git merge
的本地说明文档 -
假设git 的HEAD引用指向当前分支master(
HEAD->master->commit_1
),通过git branch dev
新建一个指向当前commit_1
的dev分支(HEAD->master->commit_1,dev->commit_1
),通过git checkout dev
切换到dev
分支(HEAD->dev->commit_1,master->commit_1
),git checkout
会将当前工作区内容全部替换为新分支dev
的当前提交commit_1
,由于这里两个分支都指向同个commit
,所以工作区切换后内容是不变的。两个命令合并一步到位:git checkout -b dev
,这里的-b
是-branch
也就是checkout一个新分支的意思。 -
假设
commit_1
的上一个提交记录是commit_0
。1、如果想要HEAD指向commit_0
,可以通过git checkout commit_0
实现(HEAD->commit_0,master->commit_1
)。2、如果想要HEAD回退n个提交记录,可以使用git checkout HEAD~n
实现,这时候HEAD指向前n个提交记录,当前工作区也相应回退,处于detached HEAD(脱离HEAD)的状态。3、在HEAD回退到前n个提交记录节点后,可以通过git branch bugfix
在当前提交记录节点新建bugfix分支,然后通过checkout切换到工作区进行修改。
- (这条说下git reset) 把已经git add添加到暂存区的文件回退到untrack状态(从暂存区回退到工作区)&