Git Show Remote Branches

内容分享2小时前发布
0 0 0

背景

1.创建一个git repo,把它当作remote repo。
2.从另外一个目录创建分支并提交到这个remote repo。
3.clone这个repo并切换分支

具体操作

1.创建目录project.git并初始化一个bare repo

$ mkdir project.git
$ cd project.git/
$ git init --bare


2.创建一个新的目录project_source,并初始化。

$ mkdir project_source
$ cd project_source/
$ git init
$ touch readme.txt
$ git add .
$ git commit -m "Initial commit"


3.project_source是一个git目录,有一个文件readme.txt。接下来把project.git当做project_source的remote repo。

$ git remote add my-git-origin ~/test/project.git/
$ git branch -a
* master
  remotes/my-git-origin/master
$ git push my-git-origin master

这样建立了project.git和project_source的联接,并给remote repo起名my-git-origin。然后将master分支推到my-git-origin。


4.接着创建一些branch

$ git branch develop
$ git branch experiment
$ git branch fix
$ git branch -a
  develop
  experiment
  fix
* master
  remotes/my-git-origin/master


5.remote repo只有master分支,接着我们切换到develop分支,修改,提交并推到remote repo。

$ git checkout develop
Switched to branch  develop 
$ git branch
* develop
  experiment
  fix
  master
$ echo abc>readme.txt
$ git add .
$ git commit -m "Modify develop branch"
$ git push my-git-origin develop
$ git branch -a
* develop
  experiment
  fix
  master
  remotes/my-git-origin/develop
  remotes/my-git-origin/master

这时remote repo也有了develop分支,它是在推送时被创建的。

git push --set-upstream my-git-origin develop
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 264 bytes | 264.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To /Users/ellabook/test/project.git/
   9aa4361..0d13cc7  develop -> develop
Branch  develop  set up to track remote branch  develop  from  my-git-origin .

上边这个命令更好,后来直接git push所在分支到remote repo对应的分支。


6.让我们换一个目录,clone remote repo

$ mkdir project_source_again
$ cd project_source_again/
$ git clone ~/test/project.git/
$ cd project/
$ ls
readme.txt
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/master
$ cat readme.txt //为空

只得到了master分支,remote repo有master和develop,但是没有hotfix和experiment分支,由于我们没有从project_source向project.git推送过它们。


7.得到develop分支

$ git fetch --all
Fetching origin
$ git checkout develop
Branch  develop  set up to track remote branch  develop  from  origin .
Switched to a new branch  develop 
$ git branch -a
* develop
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/master

我们可以修改develop分支,提交并推送。

$ cat readme.txt 
abc
$ echo hello > readme.txt
$ git add .
$ git commit -m "modify readme.txt"
 1 file changed, 1 insertion(+), 1 deletion(-)
$ git push origin develop


git init 与 git init –bare 的区别

使用”git init –bare”方法创建一个所谓的裸仓库,之所以叫裸仓库是由于这个仓库只保存git历史提交的版本信息,而不允许用户在上面进行各种git操作,适合作为remote repo使用。如果你硬要操作的话,只会得到下面的错误(”This operation must be run in a work tree”),所以该版本库不能称为工作目录(working tree);如果你进入版本目录,就会发现只有.git目录下的文件(没有.git这个目录),而没有其它文件。
用”git init”初始化的版本库用户也可以在该目录下执行所有git方面的操作。但别的用户在将更新push上来的时候容易出现冲突。

© 版权声明

相关文章

暂无评论

none
暂无评论...