原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12271839
远程仓库是用来把Git仓库托管到互联网,本地网络或者本机中。
本文主要介绍在本机中创建远程仓库(Remote repositories)。
1.创建一个本地远程仓库
使用git clone --bare来创建一个本地远程仓库。
- #1个点表示当前目录,2个点表示父目录
- $ git clone --bare . ../remote-jackygit.git
- Cloning into bare repository '../remote-jackygit.git'...
- done.
然后就可以看到父目录下有个文件夹remote-jackygit.git,里面包含了原来版本库中的.git文件夹。
那工作区文件呢?一个标准的git仓库包含了源代码和历史信息,因为我们可以在上面直接修改代码。但是远程仓库只有历史信息,并没有源代码。
2.推送更改到远程仓库
使用git push推送到远程仓库
- #修改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这个远程仓库了。
- #添加一个远程仓库,取名为testremote
- $ git remote add testremote ../remote-jackygit.git
4.查看远程仓库信息
这里使用git remote,git remote -v和git remote show即可。
- #查看远程仓库
- $ 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命令。
- #返回上级目录
- $ 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先将修改内容推送给远程仓库。
- #修改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从远程仓库中拉取最新版本。
- #进入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即可。
- #移除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。
- git config --global push.default simple