远程仓库操作

远程仓库

1.克隆远程仓库

git clone <url> [dir] #将存储库克隆到新创建的目录中,默认与远程主机的版本库同名,可以指定目录名称dir
执行此命令会为克隆的存储库中的每个分支创建远程跟踪分支(使用git branch -r可见),并且本地创建一个master分支,与本地的远程跟踪分支master进行关联。

2.添加远程仓库

git remote add <remoteName> <url> #remoteName为远程仓库名称,url为远程仓库链接
实际上是与远程仓库建立联系,这样在推送和拉取代码时就知道往哪里推送和拉取了。

示例:在github上新建一个仓库,然后在本地一个空的git仓库里添加远程仓库

3.查看远程仓库

git remote #只查看远程仓库名
git remote -v #查看远程仓库名及url信息

4.修改|查看远程仓库链接

git remote set-url <remoteName> <url> #设置指定远程仓库的链接
git remote get-url <remoteName> #获取指定远程仓库的链接

5.修改本地远程仓库名称

git remote rename <old> <new>

6.删除本地的远程仓库

git remote remove <remoteName>

远程分支

1.远程分支查看

git branch -a #查看本地及远程分支
git branch -r #只查看远程分支
git branch -l #只查看本地分支

2.1从远程分支拉取内容

git fetch <remote_name> <branch_name> #从远程仓库的指定同名分支上拉取最新的内容
git fetch #如果省略参数,会从远程仓库的所有分支上拉取最新的内容
这将更新git remote中所有的远程仓库所包含分支的最新commitId, 将其记录到.git/FETCH_HEAD文件中
FETCH_HEAD:该文件在git目录下,指向目前已经从远程仓库取下来的分支的末端版本
git fetch更新远程仓库的方式如下:

# 方法一
git fetch origin master    #从远程的origin仓库的master分支下载代码到本地的origin master
git log -p master.. origin/master    #比较本地的仓库和远程仓库的区别
git merge origin/master    #把远程下载下来的代码合并到本地仓库

# 方法二
git fetch origin master:temp    #本地新建一个分支temp,并将远程origin仓库的master分支下载到本地temp分支
git diff temp    #比较master分支和temp分支的不同
git merge temp    #合并temp分支到master分支
git branch -d temp    #删除temp
2.2从远程分支拉取内容

git pull <remote_name> <branch_name> #从远程仓库的指定同名分支上拉取最新的内容,会自动进行分支的合并
该命令等同于 git fetch + git merge
git pull #如果省略参数,会自动从当前分支名称相同的远程分支上拉取内容。如果当前分支没有跟踪到任何远程分支或者跟踪的远程分支不同名,则拉取失败
git pull origin master --allow-unrelated-histories #合并两个独立的仓库(第一次合并仓库的时候必须使用该选项),否则两个仓库如果都有内容的话,第一次进行合并会报错:refusing to merge unrelated histories

3.推送本地分支至远程

git push <remote_name> <branch_name> #将指定本地分支推送到远程仓库的同名分支上,如果远程分支不存在则会自动创建
git push #如果省略参数,会自动将当前分支推送到与其分支名称相同的远程分支上。如果当前分支没有跟踪到任何远程分支或者跟踪的远程分支不同名,则推送失败
git push <remote_name> <branch_name>:<remote_branch> #将本地分支推送到远程指定的分支上
例如:
git push origin dev #推送本地dev分支到远程的dev分支
git push origin HEAD:master #推送本地HEAD指向的分支(当前工作分支)到远程的master分支

4.远程分支检出

如果远程存在多个分支,使用 git clone 只会创建一个master分支 ,需要使用命令进行远程分支检出。
git checkout -b <branch_name> <remote_name>/<remote_branch>#本地新建分支并检出远程分支代码
git checkout <remote_branch> #也可以使用该命令进行检出
对于该命令如果本地有该分支,执行切换操作,如果本地没有该分支,会查找remote上有无该分支,如果有,并将HEAD指向远程分支,并建立追踪关系,如果本地和远程都没有,则报错。
有时候,会发现明明远端有这个分支却依然报错,可以执行git pull,然后再checkout

4.远程分支合并

通常最终代码发布是使用master分支,所以发布前需要进行远程分支合并操作,实际是在本地分支进行合并后然后推送到远程master上,如果本地没有检出远程分支则需要先进行远程分支的检出
1.git checkout master #切换到master分支
2.git merge <branch_name> #将分支合并到master分支
3.git push origin master #将master分支推送至远程
注:origin为默认远程仓库名称

5.远程分支删除

如果远程分支合并完成后不再需要了,可以进行删除操作
git push origin --delete <branch_name> #直接删除远程分支
git push origin :<branch_name> #推送一个空分支(也代表删除)

远程分支跟踪

1.分支跟踪意义

从远程分支检出的本地分支,称为跟踪分支(tracking branch)。跟踪分支是一种和远程分支有直接联系的本地分支。务必让跟踪分支和远程分支保持同名。
在跟踪分支里输入git push,Git会自行推断应该向哪个服务器的哪个分支推送数据。反过来,在这些分支里运行git pull会获取所有远程索引,并把它们的数据都合并到本地分支中来。

2.查看跟踪关系

git branch -vv #查看本地分支与远程分支追踪关系

3.自动建立跟踪关系

1.git clone #建立本地master分支与远程master分支的跟踪关系
2.git push -u origin <branch_name> #使用-u参数会自动建立本地指定分支与远程同名分支的追踪关系
3.git checkout -b <branch_name> origin/<remote_branch> #会将远程指定分支与本地指定分支建立跟踪关系

4.手动建立跟踪关系

git branch --set-upstream-to origin/<branch> <branch_name> #如果省略branch,则默认与远程的master分支建立联系

5.切断跟踪关系

如果本地分支关联的远程分支不存在了,本地分支想保留,需要切换与远程分支的联系
git branch --unset-upstream <branch_name> #此处的分支名称为本地分支,切断本地分支的远程追踪关系

6.错误说明

在使用git pushgit pull时,要特别注意当前分支是否建立了跟踪关系,跟踪分支名称是否相同。
比如当前在本地rxy分支,此时没有跟踪到任何远程分支,输入git push报错,建议我们建立跟踪关系

比如当前在本地rxy分支,但是跟踪的是master分支,输入git push报错,因为名称不匹配,建议我们指定参数推送

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