1.远程仓库
远程仓库是指托管在其他服务器上或网络上的项目版本库,比如Github、GitLab、Gitee等上的仓库。如果要加入一个开源项目,那么就得熟练地掌握远程仓库的使用。这里对远程仓库、远程分支等命令和操作进行下总结。
1.1.获取远程仓库
使用git init
会创建一个本地仓库,如果要使用远程仓库,则可以有两种方式可供选择:克隆远程仓库或添加远程仓库。
克隆远程仓库到本地
使用git clone
命令将远程仓库克隆到本地:
git clone url
如:
git clone https://github.com/jeraon/pythonLearn.git
当执行git clone
命令 时,做了如下几个工作:
- 1.自动将远程仓库命名为
origin
,并拉取所有的数据; - 2.创建一个指向远程仓库的master分支的指针,并在本地将其命名为
origin/master
; - 3.在本地,git会创建一个和origin/master分支指向同一个地方的本地master分支,在本地就可以在该分支工作;
如果想自己命名远程仓库名称,可以使用git clone -o remotename
命令,如:
@ubuntu:~/workspace/TestDemo$ git clone -o myorigin https://github.com/jeraon/pythonLearn.git
@ubuntu:~/workspace/TestDemo/pythonLearn$ git remote
myorigin
@ubuntu:~/workspace/TestDemo/pythonLearn$
用原理图来表示,在git clone
前,本地没有git仓库,远程仓库结构如下:
git clone
后,本地的git仓库如下:
当克隆好之后,在本地的操作就和服务器的仓库无关系了,当修改本地代码并提交后,移动的只是本地的master指针(如果处于master分支),服务器的远程分支的origin/master分支不会移动。比如你在本地提交两次之后,Git仓库的结构如下图:
在本地仓库中添加远程仓库
使用git remote
命令将为本地仓库添加一个远程仓库,这样一来,本地仓库中的代码也就可以推送到远程仓库了,格式如下:
git remote add [branch_name] <url>
branch name 指远程仓库名称,由用户自定义
url指远程仓库的url
比如,我首先使用git init
在本地初始化一个仓库:
jiayongqiang@ubuntu:~/Documents/blogs$ git init
Initialized empty Git repository in /home/jiayongqiang/Documents/blogs/.git/
然后我添加添加一个远程仓库:
# 添加一个远程仓库,并在本地命名为origin
jiayongqiang@ubuntu:~/Documents/blogs$ git remote add origin https://github.com/jeraon/blogs.git
jiayongqiang@ubuntu:~/Documents/blogs$
最后,我将本地的代码推送到远程分支(git init 时创建了一个master分支):
jiayongqiang@ubuntu:~/Documents/blogs$ git push origin master
Username for 'https://github.com': jeraon
Password for 'https://jeraon@github.com':
Counting objects: 33, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (33/33), done.
Writing objects: 100% (33/33), 946.49 KiB | 0 bytes/s, done.
Total 33 (delta 0), reused 0 (delta 0)
To https://github.com/jeraon/blogs.git
* [new branch