提交对象:
树对象:对文件 blob 对象的索引。
blob 对象:就是保存的具体文件信息。
参考:https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%AE%80%E4%BB%8B
git branch bname
使用 gitg git gui(图形化工具比较直观)
也可以用命令:
git log --oneline --decorate --graph --all
定义别名:
git config --global alias.tree 'log --oneline --decorate --graph'
git tree 等同于命令: git log –oneline –decorate –graph
git tree –all
git merge 把某个分支 合并到当前分支。
(fast-forward)快进 合并
如果master分支的所有节点,都在test 分支中。则这个合并就是一个快进合并。
no-ff 非快进合并
如果两个分支都有自己的节点,则只能非快进合并。 也可以添加参数 –no-ff 进行强制非快进提交。
master分支 解决了问题2,test分支 解决了问题1
把test 合并到 master 注意非 –no-ff 合并,因为各自都有新的提交。因此需要进行c2 c4 c5 三方合并,并产生 c6
注意: 合并时 提示冲突。 此时git 对两个分支确实进行了合并,但是没有进行提交。解决冲突后,提交即可
git status 查看处于unmerged 状态的文件。然后逐个进行 解决冲突。
解释冲突标识: <<<<<<< HEAD:index.html 当前分支index.html 的代码 ======= iss53 分支 index.html 代码 >>>>>>> iss53:index.html
解决冲突就是保留其中一部分即可。 冲突解决后 用 git add 文件名暂存,即表示这个文件已经解决了冲突。但是注意,即便你没有做任何修改,一样可以 git add. 前段时间 马蜂窝旅游网火了,就是因为上线了带有冲突标志的代码。 当所有冲突都解决后。可以 git commit 提交则表示合并提交完毕。 提交节点,显示两个父分支信息。(这个提交是一个合并提交。)
git branch 显示分支列表 *ease master
带有星号的是当前检出的分支,也就是HEAD 所指向的分支
git branch -v 显示每个分支最后一次提交的信息。 git branch --merged 已经合并到当前分支的 其他分支显示出来。 iss53 * master 代表 iss53 已经合并到了 master 因此可以考虑删除掉 iss53 分支。因此不会丢失任何信息。 git branch --no-merged 显示尚未合并到当前分支的其他分支。
!!注意 合并有一个方向问题。也就是父子关系,如果我们删除尚未合并的分支,因为他不是任何其他分支的父分支,因此将会找不到这个节点。 (也有办法恢复。可以查查手册。)