Git 远程仓库管理

之前的文章介绍了如何对本地仓库进行管理,并在本地创建了一个Git仓库。要参与一个git项目的写作,就必须了解如何管理远程仓库,接下来主要介绍如何进行远程仓库的管理。

1 在github创建远程仓库

登录github,有网站右上角找到"new repository"按钮,创建一个新的仓库


create a new repository

在Repository name中填写MyGitTest,其默认即可,而后点击create repository,这样就创建了一个新的github远程仓库。在其中新建一个README.md说明文件以及一个测试文键test_1

2 clone操作

从远程仓库克隆一个版本库到本地仓库,指令格式:

git clone 版本库地址

其中版本库地址支持多种协议:http(s)、ssh、git等
示例
将上述创建的MyGitTest版本库clone到本地:

$ git clone git@github.com:zhoushuo19/MyGitTest.git

3 remote操作

为了操作远程仓库,首先需要使用remote add指令将远程仓库的url以及定义的别名添加到本地的远程仓库列表中。如下列出了,对远程仓库列表的操作指令:

git remote add alias url    #添加远程仓库
git remote                  #列出所有远程仓库的别名
git remote -v               #列出所有远程仓库的别名以及对应url
git remote rm alias         #删除指定远程仓库
git remote rename old-alias new-alias   #重命名
git remote set-url alias url    #更新url

示例
执行如下指令,添加新的远程仓库:

$ git remote add origin git@github.com:user_name/MyGitTest.git      #添加远程仓库
$ git remote -v     #列出所有远程仓库
origin  git@github.com:zhoushuo19/MyGitTest.git (fetch)
origin  git@github.com:zhoushuo19/MyGitTest.git (push)

需要注意
1)如果本地版本库MyGitTest是通过clone指令从远程仓库获取到的,那么在远程仓库列表中已经设置了别名origin与远程仓库url的对应关系,不需要再次执行git remote add origin ...指令
2)上述指令中git@github.com:user_name/MyGitTest.git就是远程仓库的网络地址,这里一定要将其修改为你自己的地址,不然你将无法将本地仓库推送到远程仓库。

4 fetch操作:

当远程仓库中有了更新(commit),需要将这些更新抓取到本地,这时就需要使用git fetch指令。指令格式:

git fetch remote-name

上述命令会将远程仓库中的所有分支全部取回,并更新到本地对应的分支上。当仅需要从远程仓库取回某个分支时,就需要指定分支名,指令格式:

git fetch remote-name branch-name

远程分支对应的本地分支名的形式是:远程主机名/分支名,例如origin主机上的master分支,对应到本地,分支名就是origin/master。而后,我们就可以在本地访问该远程分支的所有分支:1)将其中某个分支合并到本地(merge);2)直接取出某个分支查看其中的内容(checkout)
示例
1)在远程仓库MyGitTest中添加一个test_2文件,使用git fetch指令将远程仓库取回到本地:

$ git fetch origin master

2)查看本地所有分支

$ git branch -a     #查看本地所有分支
* master
  remotes/origin/master

其中master是当前的本地分支,remotes/origin/master是远程分支在本地对应的分支
3)查看当前本地分支中的内容,而后检出获取到的远程分支,再次查看其中的内容

$ ls
README.md  test_1
$ git checkout origin/master    #切换到获取的远程分支
$ ls
README.md  test_1  test_2

4)将获取的远程分支合并到本地分支

$ git checkout master       #切换到本地分支
$ git merge origin/master   #将获取的远程分支合并到本地分支
Updating 52bba6b..dbfe1cf
Fast-forward
 test_2 | 1 +
 2 files changed, 3 insertions(+)
 create mode 100644 test_2
$ ls    #查看内容
README.md  test_1  test_2

5 pull操作

上述fecth指令只是将远程仓库中的数据拉取到本地仓库,并不会将其合并到当前的工作分区,合并操作是需要后续使用merge指令来进行合并的。
git pull指令的功能是,抓取远程仓库的某个分支合并到本地仓库的指定分支上。这是比较常用的方式(至少我这么认为)。指令格式:

git pull remote-name remote-branch:local-branch

远程分支与当前分支进行合并时,指令格式:

git pull remote-name remote-branch

本地分支与远程分支之间,有一种追踪关系,比如在git clone时,本地分支默认与远程仓库的同名分支建立追踪关系,例如本地master分支自动追踪origin/master分支。如果当前分支与远程分支存在追踪关系,指令格式简化为:

git pull remote-name

如果当前分支只有一个追踪分支,那么主机名都可以省略:

git pull

示例
在github端修改test_1文件,在本地执行执行如下指令,获取到远程仓库中的更新:

$ git pull
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From github.com:zhoushuo19/MyGitTest
   1e7813a..e3aca3c  master     -> origin/master
Updating 1e7813a..e3aca3c
Fast-forward
 test_1 | 1 +
 1 file changed, 1 insertion(+)

6 push操作

git push是将本地分支的更新推送到远程仓库的指令,指令格式与git pull指令类似:

git push remote-name local-branch:remote-branch

忽略远程分支,则表示将本地分支推送与之存在”追踪关系”的远程分支,如果该分支不存在,则新建该远程分支:

git push remote-name local-branch

如果忽略本地分支,则表示删除指定的远程分支:

git push remote-name :remote-branch
等同于
git push remote-name --delete remote-branch

如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略

git push remote-name

如果当前分支只有一个追踪分支,那么主机名都可以省略:

git push

示例
修改本地仓库中的test_1文件,并将该修改推送到远程仓库:

$ git add test_1        #添加文件到stage
$ git commit -m"update test_1" test_1   #提交到本地仓库
[master ed8cf15] update test_1
 1 file changed, 1 insertion(+)
$ git push  #推送到远程仓库
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 328 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:zhoushuo19/MyGitTest.git
   e3aca3c..ed8cf15  master -> master
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容

  • 26岁,你看着身边的人都结了婚 婚礼的份子钱逐年递增 春节回家,父母从带你走亲戚 变成了带你去见相亲对象 见了十几...
    七分喜欢你阅读 1,428评论 0 2
  • 用平衡的观点去看待过去、现在和未来,用郑重的态度过好当下的生活,并连接过去和未来。 明确工作和生活的界限,用...
    不二的哥阅读 407评论 0 0
  • 我不喜欢走出舒适区。很简单的表现,我不喜欢改变,在一个单位待久了,很多同事处久了,会因同事的突然离职,怅然若失很久...
    mylkevin阅读 112评论 0 0
  • 突然我发现,我是一个心情不好就会找人聊天的家伙。。这样好不好呢?
    阿布朵朵0阅读 150评论 0 0
  • 电视剧《欢乐颂》终于播完了,在剧中一直哭哭啼啼惹人心烦的邱莹莹也终于收获了爱情,无论人前人后,无论何时何地,眉眼发...
    却上心头68阅读 375评论 0 0