Git远程操作

git-logo.png

Git中远程操作是我们做多人项目维护时很常使用到的命令,这里总结了一下git指令中remotefetchpullpush 的常见用法:

git remote

列出所有的远程仓库,默认为origin

$ git remote
origin

查看远程仓库的网址

$ git remote -v
origin  https://bitbucket.org/company/project-ios/src (fetch)
origin  https://bitbucket.org/company/project-ios/src (push)

上面命令表示,当前只有一台远程主机,叫做origin,以及它的网址。fetch和push对应的都是同一远程地址

显示获取远程引用的完整列表,包括远程分支和tag

$ git ls-remote origin
0185329b020db9043accb4ead02c4709dae1616b    HEAD
7c915b5bae1a5f864fbc23ecb533d4e63c4be95b    refs/heads/1.0.2
5970a7e8269be2258288b71e922f93b43478a13b    refs/tags/1.0.2

获取远程分支的更多信息

$ git remote show origin
* remote origin
  Fetch URL: https://bitbucket.org/company/project-ios/src
  Push  URL: https://bitbucket.org/company/project-ios/src
  HEAD branch: master
  Remote branches:
    1.0.2                            tracked

关联远程仓库

$ git remote add <仓库名> <git地址>

删除远程仓库

$ git remote rm <仓库名>

git fetch

说fetch命令之前先说下远程跟踪分支的概念。首先当只有本地分支,或者只有远程分支时,提交记录表现形式为:

5cf7ce72.png

当我们本地分支和远程关联之后,就产生两个分支,一个是本地分支:master,一个是关联的远程分支,表示方式为:origin/master。他们指向同一节点:


bea55e17.png

当本地做了一些本地提交之后会变成这样,远程分支并不会动。

此时如果有其他同事修改了远程master分支的内容,我们需要合并或者查看他的代码,可以执行git fetch origin master该命令会把远程master更新内容拉下来,此时提交记录表现为:

3494430e.png

本地分支和远程关联分支可以说是并行的存在。

具体命令

$ git fetch <仓库名>

执行之后分支情况就变成了

默认情况下,git fetch 取回所有分支更新,如果只想取回特定分支更新,可以指定分支名:

$ git fetch <仓库名> <分支名>

所取回的更新,在本地主机要用“远程仓库名/分支名”的形式读取,比如origin的master,就要用origin/master读取。这还有一种叫法是远程跟踪分支

然后我们就可以使用git merge 或者git rebase 命令,合并远程分支

$ git merge origin/master
# 或者
$ git rebase origin/master

git pull

git pull 相当于取回远程主机某个分支的更新,再与本地的指定分支合并。(git fetch + git merge)
完整格式为

$ git pull <远程主机名> <远程分支名>:<本地分支名>

可以指定,某一远程分支跟某一本地分支合并。如果当前只有一个跟踪分支可以简写为

$ git pull

git pull 默认合并操作时git merge如果我们想用rebase 模式的话,可以加个--rebase参数

$ git pull --rebase <远程主机名> <远程分支名>:<本地分支名>

git push

该命令用于,将本地分支更新推送到远程主机,格式用法跟git pull 差不多。完整格式为:

$ git push <远程主机名> <远程分支名>:<本地分支名>

如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。

$ git push origin master

上面的命令是将本地master分支退到origin的master分支,如果后者不存在,就新建
如果当前分支与多个主机存在追踪关系,可以使用-u来指定一个默认主机,这样以后就不用加任何参数使用git push了

$ git push -u origin master

以后推送可以不带参数的写git push了,默认只推当前分支。
如果我们想将本地分支都推到远程主机,可以使用--all参数

$ git push --all origin

如果远程分支跟当前分支有差异,会报错。有两种解决办法,要么我们先git pull合并差异,再git push 要么直接强推,覆盖远程分支

$ git push --force origin

简写命令

$ git push -f
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342