关于git切换分支的几个问题

来源:1-7 二期项目初始化

Echo鑫

2017-11-27

由于Git基础有点薄弱,有些问题没弄清楚,可能问得有点小白,但还是想问下:

1. git checkout -b v2.0 origin/v1.0  是不是基于远程分支v1.0的基础上创建分支v2.0,并切换过去?

2. 假若单独的git checkout -b v2.0 是不是就是在当前所在的本地分支的基础上创建v2.0,并切换过去?

3. 若是这样的话,若本地没有远程v1.0分支的代码,git checkout -b v2.0 origin/v1.0 这命令是不是现在本地创建V2.0分支,再对远程仓库分支v1.0里的代码进行一次拉取?

4. 假若我在本地拉取一个项目的V1.0分支上的代码,现在我想拉取这项目另一个分支的代码,老师你们一般是怎么操作的?

写回答

3回答

Geely

2017-11-27

你好,同学


  1. 是的

  2. 是的,如果不指定的话,就是当前的本地分支版本

  3. 首先origin就指定了是远程分支哟,所以判断的是远程分支,不是本地分支。不会拉取

  4. 重新创建一个文件夹,重新clone,然后切换分支。

0
4
Echo鑫
老师真耐心,谢谢老师(●ˇ∀ˇ●)
2017-12-02
共4条回复

Echo鑫

提问者

2017-11-30

这是我对另一个master没代码的项目进行拉取,master就两个文件,先git clone, 自动切换到了master分支

//img.mukewang.com/szimg/5a20090a00017f7b07410577.jpg

从结果可以看出,证明了上述的观点,git checkout -b v2.0 origin/v1.0, 会对远程的代码进行拉取,但拉取过程不可见。

接下来我又换了种方式,执行 git checkout -b v2.0 origin mall_v1.0, 出现了错误。

//img.mukewang.com/szimg/5a2004d70001f0af07510536.jpg

于是我先在本地创建分支V2.0 然后 git pull origin mall_v1.0,也成功把V1.0 的代码拉到了本地新建分支v2.0上。

//img.mukewang.com/szimg/5a20043900015f8507220356.jpg

问题:

  1. 证明了我的理解,git checkout -b v2.0 origin/v1.0 会对远程代码进行拉取,但这个拉取是不可见的,跟git pull 有区别,但不知道为什么

  2. git checkout -b v2.0 origin/v1.0  与git checkout -b v2.0 origin v1.0 的区别是什么

  3. 为什么git 切换不同分支,代码也会同步发生变化,比如切到master上的代码是A,切回到分支v1.0后,代码就同步成了B,这是什么原理,另个分支的代码是存在哪里不可见的。


0
1
Geely
1. checkout -b 会创建本地分支,但是不会创建远程分支。git pull只是拉取 是 git fetch 和 git merge的组合 2. 区别就是第二个是错误的命令。远程一定是origin/这样的 3.不同的分支代码肯定会发生变化的。。 http://blog.jobbole.com/26209/ 我特意给同学找了一下git的原理,同学来看看哟
2017-12-02
共1条回复

Echo鑫

提问者

2017-11-30

//img.mukewang.com/szimg/5a2003860001136c08000682.jpg

这是我对master 先拉取,这项目master和v1.0的差别就在于init.sql文件,我正常先git clone这个代码,拉取到了master分支,然后就直接执行git checkout -b v2.0 origin/v1.0  这个sql文件自动同步下来了,没有拉取过程,换回master,则个文件就消失了,接下来我又对master上面没代码的项目做了个测试。

0
0

Java企业级电商项目架构 Tomcat集群与Redis分布式

Tomcat集群+Redis分布式+代码重构+源码原理解析

2685 学习 · 947 问题

查看课程