远程操作
前面很多章节我们学习的都是本地操作,包括初始化仓库,增加删除修改文件,提交文件,还有版本回退,分支管理和标签管理。
今天这章节我们主要学习远程端的操作,主要有以下这几个操作:
git config
git clone
git pull
git push
今天这个文章主要时使用Gitee进行测试验证。关于如何申请注册Gitee账号以及创建Gitee仓库就不在这里讲了,大家不清楚的可以自行百度,都比较简单。
Git配置
首先在克隆远端代码前我们需要在Git配置远端的账号及邮箱信息:
git config --global user.name "xxxxxx"
git config --global user.email "xxxxxx@163.com"
一般情况第一次设置Git账号秘密都需要设置以下保存账户信息(用户名,密码),不然每次克隆或pull,push都需要重新出书用户名和密码,输入如下:
$git config credential.helper store
克隆
git clone是远程版本库克隆到新创建的目录中,为克隆的存储库中的每个分支创建远程跟踪分支(使用git branch -r可见),并从克隆检出的存储库作为当前活动分支的初始分支。
codemaxi@codemaxi-PC:~/gitee$ git clone https://gitee.com/codemaxi/testgit.git
Cloning into 'testgit'...
Username for 'https://gitee.com': codemaxi
Password for 'https://codemaxi@gitee.com':
remote: Enumerating objects: 621, done.
remote: Counting objects: 100% (621/621), done.
remote: Compressing objects: 100% (429/429), done.
remote: Total 621 (delta 188), reused 621 (delta 188), pack-reused 0
Receiving objects: 100% (621/621), 1.73 MiB | 513.00 KiB/s, done.
Resolving deltas: 100% (188/188), done.
codemaxi@codemaxi-PC:~/gitee$
这样代码就克隆下来了,该命令会在本地主机生成一个目录,与远程主机的版本库同名。如果要指定不同的目录名,可以将目录名作为git clone命令的第二个参数。我们上面没有加,所以生成的目录就是testgit了:
codemaxi@codemaxi-PC:~/gitee$ ls
testgit
codemaxi@codemaxi-PC:~/gitee$ cd testgit/
codemaxi@codemaxi-PC:~/gitee/testgit$ ll
total 16
drwxrwxr-x 4 codemaxi codemaxi 4096 May 30 15:40 ./
drwxrwxr-x 3 codemaxi codemaxi 4096 May 30 15:40 ../
drwxrwxr-x 3 codemaxi codemaxi 4096 May 30 15:40 apollo/
drwxrwxr-x 8 codemaxi codemaxi 4096 May 30 15:40 .git/
codemaxi@codemaxi-PC:~/gitee/testgit$
通过使用git branch -a可以查看当前所以的分支,包括本地的和远端的:
codemaxi@codemaxi-PC:~/gitee/testgit$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
codemaxi@codemaxi-PC:~/gitee/testgit$
git clone默认是取回master分支,如果需要,可以使用-b参数指定的分支。实际上, -b参数不仅支持分支名,还支持tag名等。
拉取
git pull命令用于从远程获取代码并合并本地的版本。
即将远程主机的某个分支的更新取回,并与本地指定的分支合并,完整格式可表示为:
$ git pull <远程主机名> <远程分支名>:<本地分支名>
如果远程分支是与当前分支一样,则冒号后面的部分可以省略:
codemaxi@codemaxi-PC:~/gitee/testgit$ git pull origin master
From https://gitee.com/codemaxi/testgit
* branch master -> FETCH_HEAD
Already up to date.
codemaxi@codemaxi-PC:~/gitee/testgit$
一般情况,项目多人协作开发时,大家都时基于某个develop分支进行并行开发,彼此在进行自己的逻辑编写,时间可能时几天或几周,在这期间你可能需要时不时的需要pull下远程develop分支上的同事的提交。这是个好的习惯,这样下去就可以避免你在一个无用的代码上进行长期的开发,回头来看这些代码不是新的代码。甚至是会面临很多冲突需要解决,而这个时候你可能还需要对冲突的部分代码进行测试回归,这就很麻烦了。
Push
git push命令用于将本地分支的更新,推送到远程主机。它的格式与git pull命令相似。
$ git push <远程主机名> <本地分支名>:<远程分支名>
# 举例:git push origin master:refs/for/master
如果本地分支名与远程分支名相同,则可以省略冒号:
git push <远程主机名> <本地分支名>
# 举例:git push origin master
注意:如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支,等同于 git push origin --delete master
git push origin :refs/for/master
下面命令表示,将本地的master分支推送到origin主机的master分支。如果master不存在,则会被新建。
codemaxi@codemaxi-PC:~/gitee/testgit$ git push origin master
Username for 'https://gitee.com': codemaxi
Password for 'https://codemaxi@gitee.com':
Counting objects: 621, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (617/617), done.
Writing objects: 100% (621/621), 1.73 MiB | 3.40 MiB/s, done.
Total 621 (delta 188), reused 0 (delta 0)
remote: Resolving deltas: 100% (188/188), done.
remote: Powered by GITEE.COM [GNK-5.0]
To https://gitee.com/codemaxi/testgit.git
* [new branch] master -> master
codemaxi@codemaxi-PC:~/gitee/testgit$
有时候我们需要将新建的分支push到远端,可以这样:
codemaxi@codemaxi-PC:~/gitee/testgit$ git branch develop
codemaxi@codemaxi-PC:~/gitee/testgit$ git branch
develop
* master
codemaxi@codemaxi-PC:~/gitee/testgit$ git branch -a
develop
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
codemaxi@codemaxi-PC:~/gitee/testgit$ git checkout develop
Switched to branch 'develop'
codemaxi@codemaxi-PC:~/gitee/testgit$ git branch
* develop
master
codemaxi@codemaxi-PC:~/gitee/testgit$ git pull origin master
Username for 'https://gitee.com': codemaxi
Password for 'https://codemaxi@gitee.com':
From https://gitee.com/codemaxi/testgit
* branch master -> FETCH_HEAD
Already up to date.
codemaxi@codemaxi-PC:~/gitee/testgit$ git branch
* develop
master
codemaxi@codemaxi-PC:~/gitee/testgit$
上面的过程时:新建一个分支,切换到新建的分支,然后拉取其中某跟分支的code到这个分支,然后就可以在这个基础上进行修改,所有的修改都是在这个新的分支上进行而不会影响其他分支。当修改结束就可以进行add和commit了。然后就可以使用push将新建分支推送到远端,如下:
codemaxi@codemaxi-PC:~/gitee/testgit$ git push origin develop
Username for 'https://gitee.com': codemaxi
Password for 'https://codemaxi@gitee.com':
Total 0 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-5.0]
remote: Create a pull request for 'develop' on Gitee by visiting:
remote: https://gitee.com/codemaxi/testgit/pull/new/codemaxi:develop...codemaxi:master
To https://gitee.com/codemaxi/testgit.git
* [new branch] develop -> develop
codemaxi@codemaxi-PC:~/gitee/testgit$
这样我们再使用git branch -a命令就可以看到远端也有刚刚提交的分支了:
codemaxi@codemaxi-PC:~/gitee/testgit$ git branch -a
* develop
master
remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/master
codemaxi@codemaxi-PC:~/gitee/testgit$
删除远程分支
我们上面有提到,删除远程分支跟删除本地分支是完全不一样的。
删除本地分支:
git branch -d develop
删除远程分支则是:
git push origin --delete branch
好了,今天关于Git远程部分的操作就到这里了。
最近工作需要学习了Git的基本使用,叨叨絮絮写了几篇文章,可能有很多不严谨的地方望理解。学习了这几篇文章工作中的日常使用基本不会有什么问题了。基本上Git的学习笔记系列文章就到这里了。当然如果后面还有使用上的问题也还会记录下面分享给大家。