git学习三(本地分支)

来源:互联网 发布:pc端怎么看手机淘宝 编辑:程序博客网 时间:2024/06/05 14:30

1) git commit 提交三个文件对象以后的git仓库对象

Git 仓库中有五个对象:三个表示文件快照内容的 blob 对象;一个记录着目录树内容及其中各个文件对应 blob 对象索引的 tree 对象;以及一个包含指向 tree 对象(根目录)的索引和其他提交信息元数据的 commit 对象。概念上来说,仓库中的各个对象保存的数据和相互关系看起来如图 3-1 所示:

2) Git 中的分支



图 3-3. 分支其实就是从某个提交对象往回看的历史,其实本质上仅仅是个指向 commit 对象的可变指针

3) git branch

Git 又是如何创建一个新的分支的呢?答案很简单,创建一个新的分支指针


运行 git branch 命令,仅仅是建立了一个新的分支,但不会自动切换到这个分支中去

由于 Git 中的分支实际上仅是一个包含所指对象校验和(40 个字符长度 SHA-1 字串)的文件,所以创建和销毁一个分支就变得非常廉价。说白了,新建一个分支就是向一个文件写入 41 个字节(外加一个换行符)

4) HEAD

Git 是如何知道你当前在哪个分支上工作的呢?其实答案也很简单,它保存着一个名为 HEAD 的特别指针。

将 HEAD 想象为当前分支的别名



5) git checkout

切换分支 git checkout testing, 这样 HEAD 就指向了 testing 分支

6) git checkout -b iss53

相当于

git branch iss53

git checkout iss53

7) git merge

原本在master分支上,新建一个分支hotfix,在分支上作修改,并且commit,切回master分支,

执行git merge hotfix,会把hotfix上的修改合并到master分支上

8) git branch -d hotfix

删除hotfix分支

9) git merge 解决冲突

执行命令以后,Git 作了合并,但没有提交,它会停下来等你解决冲突,

任何包含未解决冲突的文件都会以未合并(unmerged)的状态列出


Git 会在有冲突的文件里加入标准的冲突解决标记,可以通过它们来手工定位并解决这些冲突。

在解决了所有文件里的所有冲突后,运行 git add 将把它们标记为已解决状态

10) 本地git仓库

在很多情况下,分支全部都是本地分支,这一点很重要。当你在使用分支及合并的时候,

一切都是在你自己的 Git 仓库中进行的 — 完全不涉及与服务器的交互。

0 0
原创粉丝点击