您的位置:首页 > 其它

Git入门之六】远程仓库

2013-11-08 14:40 155 查看
远程仓库是用来把Git仓库托管到互联网,本地网络或者本机中。

本文主要介绍在本机中创建远程仓库(Remote repositories)。

1.创建一个本地远程仓库

使用git clone --bare来创建一个本地远程仓库。

[cpp] view
plaincopy

#1个点表示当前目录,2个点表示父目录  

$ git clone --bare . ../remote-jackygit.git  

Cloning into bare repository '../remote-jackygit.git'...  

done.  

然后就可以看到父目录下有个文件夹remote-jackygit.git,里面包含了原来版本库中的.git文件夹。

那工作区文件呢?一个标准的git仓库包含了源代码和历史信息,因为我们可以在上面直接修改代码。但是远程仓库只有历史信息,并没有源代码。

2.推送更改到远程仓库

使用git push推送到远程仓库

[cpp] view
plaincopy

#修改Jackydata01  

$ echo "HelloRemoteJackyRepo" > JackyData01  

  

#提交更改  

$ git commit -a -m "modify to remotejackyrepo"  

[master e14f4a3] modify to remotejackyrepo  

 1 file changed, 1 insertion(+), 1 deletion(-)  

  

#推送到远程仓库  

$ git push ../remote-jackygit.git  

Counting objects: 5, done.  

Delta compression using up to 2 threads.  

Compressing objects: 100% (2/2), done.  

Writing objects: 100% (3/3), 282 bytes | 0 bytes/s, done.  

Total 3 (delta 1), reused 0 (delta 0)  

To ../remote-jackygit.git  

   03150c9..e14f4a3  master -> master  

3.添加远程仓库

我们可以用URL来表示一个远程仓库,但是如果这个URL很长,每次推送岂不是很麻烦。所以可以在添加远程仓库的时候顺便给它取个名字。

添加远程仓库使用git remote add。这里我们给这个远程仓库取名叫testremote,以后我们就可以用testremote来替代remote-jackygit这个远程仓库了。

[cpp] view
plaincopy

#添加一个远程仓库,取名为testremote  

$ git remote add testremote ../remote-jackygit.git  

4.查看远程仓库信息

这里使用git remote,git remote -v和git remote show即可。

[cpp] view
plaincopy

#查看远程仓库  

$ git remote  

testremote  

  

#查看远程仓库详细信息  

$ git remote -v  

testremote      ../remote-jackygit.git (fetch)  

testremote      ../remote-jackygit.git (push)  

  

#查看远程仓库详细信息  

$ git remote show testremote  

* remote testremote  

  Fetch URL: ../remote-jackygit.git  

  Push  URL: ../remote-jackygit.git  

  HEAD branch: master  

  Remote branch:  

    master tracked  

  Local ref configured for 'git push':  

    master pushes to master (up to date)  

5.克隆仓库

把一个远程仓库克隆到本地,,还是一样使用git clone命令。

[cpp] view
plaincopy

#返回上级目录  

$ cd ..  

  

#新建jackygit2目录  

$ mkdir jackygit2  

  

进入jackygit2目录  

$ cd jackygit2  

  

#将远程仓库克隆到当前目录(jackygit2)  

$ git clone ../remote-jackygit.git .  

Cloning into '.'...  

done.  

不过这回源码和历史记录都会被克隆进jackygit2中,并且remote-jackygit也是jackygit2的远程目录,初始名字为origin。

6.Push和Pull

这时我们有3个仓库了。2个本地仓库(jackygit和jackygit2),1个远程仓库(remote-jackygit)。

如果我们修改了jackygit,那么jackygit2怎么才能获取到最新的版本呢?

(1)Push:jackygit先将修改内容推送给远程仓库。

[cpp] view
plaincopy

#修改JackyData01内容  

$ echo "Hi Jackygit2" >jackydata01  

  

#提交更改  

$ git commit -a -m "hi jackygit2"  

[master 6937dbd] hi jackygit2  

 1 file changed, 1 insertion(+), 1 deletion(-)  

  

#推送到远程仓库,这里就可以直接使用testremote  

$ git push testremote  

Counting objects: 5, done.  

Delta compression using up to 2 threads.  

Compressing objects: 100% (2/2), done.  

Writing objects: 100% (3/3), 267 bytes | 0 bytes/s, done.  

Total 3 (delta 1), reused 0 (delta 0)  

To ../remote-jackygit.git  

   8ad0c22..6937dbd  master -> master  

(2)Pull:jackygit2从远程仓库中拉取最新版本。

[cpp] view
plaincopy

#进入jackygit2目录  

$ cd ../jackygit2  

  

#拉取远程仓库最新版本  

$ git pull origin  

remote: Counting objects: 5, done.  

remote: Compressing objects: 100% (2/2), done.  

remote: Total 3 (delta 1), reused 0 (delta 0)  

Unpacking objects: 100% (3/3), done.  

From d:/jackygit2/../remote-jackygit  

   8ad0c22..6937dbd  master     -> origin/master  

Updating 8ad0c22..6937dbd  

Fast-forward  

 Jackydata01 | 2 +-  

 1 file changed, 1 insertion(+), 1 deletion(-)  

  

#查看版本库状态,干净的  

$ git status  

# On branch master  

nothing to commit, working directory clean  

7.移除远程仓库

移除远程仓库使用git remote rm即可。

[cpp] view
plaincopy

#移除testremote  

$git remote rm testremote  

8.注意

如果在使用git push的时候,出现如下警告:
warning: push.default is unset; its implicit value is changing in Git 2.0 from 'matching' to 'simple'......
意思是push.default没有设置,使用如下设置即可。作用及其他设置请自行google。

[cpp] view
plaincopy

git config --global push.default simple
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: