本篇主要讲解
1.本地仓库提交到远程仓库
2.从远程仓库下载到本地仓库
场景:前面的部分,已经完成了本地仓库的所有工作,这适合局域网内开发,不适合远程(外网)协同工作。因此,需要在外网(github)上也创建一个仓库,实现本地仓库与github上的仓库通信,实现数据同步,这样github仓库可以作为外网公共仓库,供所有人同时开发使用。
#1.本地仓库提交到远程仓库
##1.1github上建立仓库
我这里是在oschina的码云上新建一个仓库(这个和github实质是一样的),
##1.2本地添加远程仓库
在本地添加一个远程仓库,即本地仓库的内容可以提交到远程仓库,采用命令
sand@sand_pc MINGW64 /h/gitRepositories/firstRepo (master)
$ git remote add origin https://git.oschina.net/lixianli/Test.git
用origin指代远程仓库https://git.oschina.net/lixianli/Test.git,以后用到远程仓库的地方都可以用origin代替,这个名字随便取。有时候不止连接一个远程仓库,所以需要有多个名字,这里我查看下连接了几个远程仓库
sand@sand_pc MINGW64 /h/gitRepositories/firstRepo (master)
$ git remote
origin
很明显,这里只有一个远程仓库。
有时候我们忘记了origin对应的远程仓库是哪一个,采用如下命令查看
sand@sand_pc MINGW64 /h/gitRepositories/firstRepo (master)
$ git remote -v
origin https://git.oschina.net/lixianli/Test.git (fetch)
origin https://git.oschina.net/lixianli/Test.git (push)
这里我们知道origin对应的远程仓库地址是https://git.oschina.net/lixianli/Test.git。
有时候我们与某个远程仓库的合作结束了,则需要删除这个远程仓库,采用如下命令
git remote rm 名称
##1.3同步远程仓库
本地仓库提交代码到远程仓库前,需要同步一下远程仓库,即先更新一下远程仓库,使远程仓库保持最新版本,如下
sand@sand_pc MINGW64 /h/gitRepositories/firstRepo (master)
$ git pull origin master
From https://git.oschina.net/lixianli/Test
* branch master -> FETCH_HEAD
* [new branch] master -> origin/master
Already up-to-date.
##1.4提交本地仓库内容到远程仓库
如下,它会提示你输入git的账号与密码
sand@sand_pc MINGW64 /h/gitRepositories/firstRepo (master)
$ git push origin master
Username for 'https://git.oschina.net': lixianli19870606@126.com
Password for 'https://lixianli19870606@126.com@git.oschina.net':
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 310 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://git.oschina.net/lixianli/Test.git
cc278a2..0c03cfc master -> master
sand@sand_pc MINGW64 /h/gitRepositories/firstRepo (master)
$
##1.5 git上查看结果
很明显,本地仓库的test.txt已经提交上来。
#2.从远程仓库下载到本地仓库
#2.1 新建一个本地目录
注意,这个新建的是目录,不是仓库。进入该目录下
sand@sand_pc MINGW64 /h/gitRepositories
$ ls
firstRepo/ secondRepo/
sand@sand_pc MINGW64 /h/gitRepositories
$ cd secondRepo/
sand@sand_pc MINGW64 /h/gitRepositories/secondRepo
$
由上可知,我新建的目录是secondRepo。
#2.2 将远程仓库下载到本地
sand@sand_pc MINGW64 /h/gitRepositories/secondRepo
$ git clone https://git.oschina.net/lixianli/Test.git
Cloning into 'Test'...
remote: Counting objects: 32, done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 32 (delta 2), reused 0 (delta 0)
Unpacking objects: 100% (32/32), done.
Checking connectivity... done.
如今,secondRepo目录下会有clone下来的仓库。
sand@sand_pc MINGW64 /h/gitRepositories/secondRepo
$ ls
Test/
仓库名:Test
#2.3 提交本地仓库到远程仓库
修改secondRepo目录里面的test.txt里面的内容,再次提交到远程。
修改内容如下
sand@sand_pc MINGW64 /h/gitRepositories/secondRepo
$ cd Test/
sand@sand_pc MINGW64 /h/gitRepositories/secondRepo/Test (master)
$ ls
README.md test.txt
sand@sand_pc MINGW64 /h/gitRepositories/secondRepo/Test (master)
$ cat test.txt
123456
789012
abcdef
sand@sand_pc MINGW64 /h/gitRepositories/secondRepo/Test (master)
$ cat test.txt
123456
789012
abcdef
111111
提交到本地
sand@sand_pc MINGW64 /h/gitRepositories/secondRepo/Test (master)
$ git add test.txt
sand@sand_pc MINGW64 /h/gitRepositories/secondRepo/Test (master)
$ git commit -m "添加内容:111111"
[master 12b343d] 添加内容:111111
1 file changed, 1 insertion(+)
提交到远程
sand@sand_pc MINGW64 /h/gitRepositories/secondRepo/Test (master)
$ git remote
origin
sand@sand_pc MINGW64 /h/gitRepositories/secondRepo/Test (master)
$ git pull origin master
From https://git.oschina.net/lixianli/Test
* branch master -> FETCH_HEAD
Already up-to-date.
sand@sand_pc MINGW64 /h/gitRepositories/secondRepo/Test (master)
$ git push origin master
Username for 'https://git.oschina.net': lixianli19870606@126.com
Password for 'https://lixianli19870606@126.com@git.oschina.net':
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 323 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://git.oschina.net/lixianli/Test.git
0c03cfc..12b343d master -> master
#2.4 查看远程仓库
由提交记录就可知,提交成功了。