git远程操作

git clone:

      git clone支持多种协议,除了HTTP(s)以外,还支持SSH、Git、本地文件协议等,通常来说,Git协议下载速度最快,SSH协议用于需要用户认证的场合。在clone完成之后,Git 会自动为你将此远程仓库命名为origin(origin只相当于一个别名,运行git remote –v或者查看.git/config可以看到origin的含义),并下载其中所有的数据,建立一个指向它的master 分支的指针,我们用(远程仓库名)/(分支名) 这样的形式表示远程分支,所以origin/master指向的是一个remote branch(从那个branch我们clone数据到本地),但你无法在本地更改其数据。同时,Git 会建立一个属于你自己的本地master 分支,它指向的是你刚刚从remote server传到你本地的副本。随着你不断的改动文件,git add, git commit,master的指向会自动移动,你也可以通过merge(fast forward)来移动master的指向。

git clone + 远程仓库项目网址:

克隆远程仓库项目到本地仓库,也就是俗称的拉代码,本地仓库生成的项目与远程仓库的项目结构一致。git clone + 远程仓库项目网址 + 本地仓库项目目录:克隆远程仓库项目到本地仓库,本地仓库生成的项目放在第二个参数【本地仓库项目目录】中


git fetch:

理解 fetch 的关键, 是理解 FETCH_HEAD.FETCH_HEAD指的是: 某个branch在服务器上的最新状态.每一个执行过fetch操作的项目都会存在一个FETCH_HEAD列表, 这个列表保存在 .git/FETCH_HEAD 文件中, 其中每一行对应于远程服务器的一个分支.git fetch这一步其实是执行了两个关键操作:- 创建并更新所有远程分支的本地远程分支.- 设定当前分支的FETCH_HEAD为远程服务器的master分支 (默认的)相当于在本地新建了一个分支,不过这个分支是隐藏的,也可以理解为,将远程的更新克隆的到了本地,但是还没有与本地的文件合并.拉下来的更新用 origin/master 来访问,后期可用git branch origin/master 来合并刚刚拉下来的更新需要注意的是: 和push不同, fetch会自动获取远程'新加入'的分支.git fetch origin同上, 只不过手动指定了远程仓库.git fetch origin branch1取回指定分支远程仓库的branch1分支的更新到本地注意: 在这种情况下, 不会在本地创建本地远程分支, 这是因为:这个操作是git pull origin branch1的第一步, 而对应的pull操作,并不会在本地创建新的branch.

git fetch origin branch1:branch2

首先执行上面的fetch操作,使用远程branch1分支在本地创建branch2(但不会切换到该分支), 如果本地不存在branch2分支, 则会自动创建一个新的branch2分支, 如果本地存在branch2分支, 并且是`fast forward', 则自动合并两个分支, 否则, 会阻止以上操作.

git fetch origin :branch2

等价于: git fetch origin master:branch2


git rebase + 分支名称:

合并分支,与fetch连用,合并修改,fetch了哪个分支就合并哪个分支


git branch -r:

显示远程分支


Git push:

git  push  origin  本地分支A : 远程分支B 

push 本地分支A到远程库origin的分支B HEAD指向当前工作的branch,master不一定指向当前工作的branch可以发现,master就是local branch,origin/master是remote branch$git diff origin/master master (show me the changes between the remote master branch and my master branch).需要注意的是,remotes/origin/master和origin/master的指向是相同的$git diff origin/master remotes/origin/master git push origin masterorigin指定了你要push到哪个remotemaster其实是一个“refspec”,正常的“refspec”的形式为”+:”,冒号前表示local branch的名字,冒号后表示remote repository下 branch的名字。注意,如果你省略了,git就认为你想push到remote repository下和local branch相同名字的branch。听起来有点拗口,再解释下,push是怎么个push法,就是把本地branch指向的commit push到remote repository下的branchgit push origin master:master (在local repository中找到名字为master的branch,使用它去更新remote repository下名字为master的branch,如果remote repository下不存在名字是master的branch,那么新建一个,如果存在则报错)git push origin master:(省略了,等价于“git push origin master:master”)

git push origin master:refs/for/mybranch :

(在local repository中找到名字为master的branch,用他去更新remote repository下面名字为mybranch的branch)

git push origin HEAD:refs/for/mybranch :

(HEAD指向当前工作的branch,master不一定指向当前工作的branch,所以我觉得用HEAD还比master好些)

git push origin    :mybranch :

(再origin repository里面查找mybranch,删除它。用一个空的去更新它,就相当于删除了)


git stash:

git栈,在切换分支的时候,当前分支有未完成提交的代码,但又不想提交,一方面是因为代码没有完成,一方面是因为这样会在log中打印许多无用的日志信息。但是不提交就无法切换分支,于是git便开辟出来一个临时的仓库,这个仓库可以暂时存放最新修改过的代码。

git栈,可以存放多次修改,切换分支后这些存放的修改还在。

工作区--------暂存区--------本地仓库

        \

            \

                  \----git栈

git stash

保存当前的工作进度,会分别对暂存区和工作区的状态进行保存。保存后工作区恢复到之前最后一次提交的状态

git stash list

显示进度列表。此命令显然显示了git stash 可以多次保存工作进度,并在恢复时候选择。

git stash pop [--index] []

如果不使用任何参数,会恢复最新保存的工作进度,并将恢复的工作进度从存储的git栈列表中清除。

如果提供参数(来自git stash list显示的列表),则将工作进度恢复。恢复完毕也将从git栈删除工作进度。

git stash [save [--patch] [-k|--[no]keep-index] [-q|--quiet] []]

这条命令实际上是第一条git stash命令的完整版。

使用参数--patch会显示工作区和HEAD的差异,通过对差异文件的编辑决定在进度中最终要保存的工作区的内容,通过编辑差异文件可以在进度中排除无关内容。

使用-k或者--keep-index参数,在保存进度后不会将暂存区重置。默认会将暂存区和工作区强制重置。

git stash apply [--index] []

除了不删除恢复的进度之外,其余和git stash pop 命令一样。

git stash drop []

删除一个存储的进度。默认删除最新的进度。

git stash clear

删除所有存储的进度。


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

推荐阅读更多精彩内容

  • 作者:阮一峰 日期:2014年6月12日 Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能。 ...
    Maggie编程去阅读 446评论 0 1
  • Git远程操作详解[ ](http://www.bshare.cn/share)作者: 阮一峰日期: 2014年6...
    开子的私家地阅读 424评论 0 2
  • git clone 基本命令git clone <远程版本库> <本地目录名> git clone支持多种协议,除...
    Rancune阅读 2,448评论 0 2
  • 每日一写# 记得上中学那会儿自己的梦想是要成为一个作家,二十岁的时候作为一个文学青年常常看书,忘记哪个大文豪谈到写...
    文艺圈儿阅读 906评论 0 0
  • 在一个阳光明媚的早晨,我下了飞机。 当我走出机场的时候,来了一位年纪偏大的叔叔。 我刚要问他是谁的时候,他先开...
    5e98d3c35813阅读 258评论 5 2