虚拟项目学习git/github原理与基本操作7
来源:互联网 发布:如何在淘宝卖充值卡 编辑:程序博客网 时间:2024/06/08 19:17
项目的分支管理
Git 中的分支,其实本质上仅仅是个指向 commit 对象的可变指针。Git 会使用 master 作为分支的默认名字。在若干次提交后,你其实已经有了一个指向最后一次提交对象的 master 分支,它在每次提交的时候都会自动向前移动。
如果你没有指定当前的分支的名字,git会自动的使用master作为当前的分支的名字,并且有个指针指向当前的工作的分支,每次提交项目后会自动的更新master指针到最新的版本中。
每次提交,都会有一个对当前版本的所有文件的快照的指针,这个指针指向当前版本的文件快照,通过这个快照,可以找到对应版本的所有的文件。而且,每个指针都有个父指针,指向上一个软件版本。通过这个版本,很容易找个以前版本的快照指针。
那么,Git 又是如何创建一个新的分支的呢?答案很简单,创建一个新的分支指针。比如新建一个 testing 分支,可以使用 git branch
命令:
$ git branch testing
这会在当前 commit 对象上新建一个分支指针(见图 3-4)。
创建新的分支以后,并不会自动的转换到新的分支上进行工作,而是还是在原来的分支中进行开发,需要手动的转换需要开发的分支。
Git 是如何知道你当前在哪个分支上工作的呢?其实答案也很简单,它保存着一个名为 HEAD 的特别指针。请注意它和你熟知的许多其他版本控制系统(比如 Subversion 或 CVS)里的 HEAD 概念大不相同。在 Git 中,它是一个指向你正在工作中的本地分支的指针。运行 git branch
命令,仅仅是建立了一个新的分支,但不会自动切换到这个分支中去,所以在这个例子中,我们依然还在 master 分支里工作
要切换到其他分支,可以执行 git checkout
命令。我们现在转换到新建的 testing 分支:
$ git checkout testing
这样 HEAD 就指向了 testing 分支
现在假设,在v0.1的基础版本上,我们的税收计算软件想要开辟欧洲市场,我们又需要充分的利用当前的软件开发的基础。所以我们从当前的v0.1的版本上拉出一个新的分支,开发用户在欧洲销售的财务软件。因为欧洲的财务软件的设置,税收比例,采用的税收算法,网络通信控制,用户界面等都不一样,所以需要拉出一个新的分支进行开发。
这里我们假设拉出的新的分支叫做europe.
watkins@watkins:~/watkins/finance$ git branch europewatkins@watkins:~/watkins/finance$ git checkout europe Mfunciton1Switched to branch 'europe'watkins@watkins:~/watkins/finance$
创建新的分支后还要手动的转换到新的分支去。
切换到europe分支中,新建名为function3的文件,并添加些专门用于给europe分支用代码。
然后提交这些代码。
watkins@watkins:~/watkins/finance$ git add funciton3watkins@watkins:~/watkins/finance$ git status # On branch europe# Changes to be committed:# (use "git reset HEAD <file>..." to unstage)##new file: funciton3#watkins@watkins:~/watkins/finance$ git commit[europe 318a182] add function3 1 file changed, 1 insertion(+) create mode 100644 funciton3watkins@watkins:~/watkins/finance$ git push origin europe To https://github.com/weixingstudio/finance.git * [new branch] europe -> europewatkins@watkins:~/watkins/finance$
然后做些修改,修改我们之前建立的配置文件,配置地区和时区,进入europe分支的C5的快照。
watkins@watkins:~/watkins/finance/config$ vim configuration watkins@watkins:~/watkins/finance/config$ cd ..watkins@watkins:~/watkins/finance$ git status # On branch europe# Changes not staged for commit:# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in working directory)##modified: config/configuration#no changes added to commit (use "git add" and/or "git commit -a")watkins@watkins:~/watkins/finance$ git add config/watkins@watkins:~/watkins/finance$ git status # On branch europe# Changes to be committed:# (use "git reset HEAD <file>..." to unstage)##modified: config/configuration#watkins@watkins:~/watkins/finance$ git commit[europe d2c4e14] modified the location and timezone 1 file changed, 2 insertions(+), 2 deletions(-)watkins@watkins:~/watkins/finance$ git push origin europe To https://github.com/weixingstudio/finance.git 318a182..d2c4e14 europe -> europewatkins@watkins:~/watkins/finance$
然后,假设到目前为止,我们发现C5版本的代码写出了一些比较好的功能,我们想在我们的master分支中整合这些新的功能,就可以把master分支和europe分支合并起来,整合两个分支的代码。
然后看一下我们的分支的图:
- 虚拟项目学习git/github原理与基本操作7
- 虚拟项目学习git/github原理与基本操作1
- 虚拟项目学习git/github原理与基本操作2
- 虚拟项目学习git/github原理与基本操作3
- 虚拟项目学习git/github原理与基本操作4
- 虚拟项目学习git/github原理与基本操作5
- 虚拟项目学习git/github原理与基本操作6
- 虚拟项目学习git/github原理与基本操作8
- 虚拟项目学习git/github原理与基本操作9
- 虚拟项目学习git/github原理与基本操作10
- (1) git/github原理与基本操作ABC中的ABC
- Git与github基本操作
- Git与github基本操作
- GitHub入门与实践学习笔记--github学习基础之关于git的基本操作
- git与github的基本操作
- 学习git与github
- 【Git学习笔记】Github与本地仓库的交互操作
- Git与Github常用操作
- Sicily 1036. Crypto Columns
- jquery中val,text,html,attr的区别
- vc++深入详解第二章学习笔记
- Sicily 1006. Team Rankings
- jffs2文件系统-------挂载
- 虚拟项目学习git/github原理与基本操作7
- Sicily 1009. Mersenne Composite N
- Sicily 1050. Numbers & Letters
- HEVC学习(十九) —— NAL unit 的解码过程之三
- 超酷HTML 5和CSS3实现登录及注册功能表单
- 数据结构_堆排序
- Sicily 1443. Printer Queue
- 梦想与现实(Dream and Reality)
- alter table 增加字段和删除字段