得git者得天下

  • 将自己的本地分支推送到自己的远程分支
git push origin 本地分支名:远程分支名

例如:git push origin local_branch:remote_branch

如果本地分支和远程分支名是一样的,则可以:git push origin local_branch 就好了, 否则不能使用这种方法,不然就相当于新创建了另一个远程分支

  • 临时创建一个远程分支,并把本地分支推送到新创建的远程分支
git push origin 本地分支名:新的远程分支名

例如:git push origin langke:create_a_new_remote_branch
  • 查看git的当前版本号
git  --version 

或者

git version
  • 在当前分支,再创建一个本地分支
git branch new_local_branch

比如现在我所在的本地分支名是:local_branch,  这样的话,本地就多出来一个新的分支,名字叫做new_local_branch, 新的本地分支提交的内容和当前所在的本地分支一模一样,就是说:new_local_branch的内容和local_branch的一模一样!
  • 删除某个本地分支
git branch -d 本地分支名

或者

git branch --d 本地分支名

或者

git branch --delete 本地分支名

或者

git branch -D 本地分支名
  • 删除某个远程分支
方法1:
git push origin --delete 远程分支名
例如:git push origin --delete remote_branch

方法2:
git push --delete origin 远程分支名
例如:git push --delete origin remote_branch

方法3:
git push origin :远程分支名
例如:git push origin :remote_branch

执行如上操作后,远程分支remote_branch就已经被删除了
  • 查看本地所有分支
git branch  

或者 

git branch --list
  • 查看本地和远程所有分支
git branch -a 

或者

git branch --all
  • 查看远程所有分支
git branch -r
  • 查看所有提交commit的日志
git log

假如提交的次数太多,为了方便查找,我们只想要将每次commit的日志显示成一行打印出来,可以使用:

git log --pretty=oneline

更简化版:
git log --oneline

  • 查看本地提交的状态(未提交,提交成功,提交失败)
git status
  • 提交本地改变
git add .        // 添加当前所有改变和未改变的文件到暂缓区

git commit -m “这是提交注释”  // 将提交到暂缓区中的所有文件提交到本地的HEAD指针指向的master分支
  • 重命名本地的某个分支
git branch -m 原有本地分支名 新的本地分支名

例如:git branch -m local_branch1 local_branch2

执行如上操作,则原来的本地分支local_branch1就变成local_branch2了
  • 放弃当前项目中的所有修改,恢复修改前的样子
在没有使用 git add . 和 git commit -m “提交注释” 操作的时候,你想放弃当前项目中的所有修改,恢复修改前的样子

git checkout .

例如:你在ViewController.swift中新添加了 view.backgroundColor = UIColor.red

现在你想放弃这个修改, 就可以在terminal上使用该操作,  执行过后新添加的 view.backgroundColor = UIColor.red就没有了
  • 拉取当前的远程分支
git pull origin

直接执行上面就好了

当然,如果当前是在develop分支,远程分支名也是develop,才可以使用上面的方法,否则应该:

git pull origin 相应的远程分支名
  • track一个远程分支到本地(比如develop)
git branch --track 新track的develop本地分支名 origin/develop

假如新track的本地分支名也和远程分支名一样为develop,可以

git branch --track develop origin/develop
  • 当前分支切换到另外一个分支
git checkout 需要切换到的另一个分支名

例如我们要切换到develop

git checkout develop   这样就切换到develop了
  • 当前分支合并另一个分支
git merge 另一个分支名

比如,现在我在develop分支, 想合并我自己的本地分支 langke_branch

git merge langke_branch
  • 查看在 “git add .” 之前所做的修改(添加的或者删除的)
git diff
  • 给最近一次“git commit”添加/修改提交的备注信息
git commit --amend
  • 几个 git add 的差异?
git add -A          // 添加所有的改动

git add *               // 添加所有的改动

git add .               // 添加所有的改动

git add -u          // 添加修改和删除的文件,但是不包括新建的文件或者文件夹(一般不建议用)
  • 使用git add 后想要撤销该操作
git reset HEAD 

或者

git reset 

解释:比如你刚刚使用 git add * 添加了当前的所有改变到暂存区,然后你又突然后悔添加了,想撤回,就可以使用上面的操作,你在项目中做的所有改变依然保留, 只是撤销这次操作,并非内容。
  • 一次性提交到当前分支
git commit -a -m "commit information" (但是不推荐,还是建议先 git add . 再 git commit -m “committed changes informations”)
  • git 版本回退
1、回退到上一个版本,比如当前在第3个版本,我想要回到第2个版本,可以使用:

git reset --hard HEAD^

2、回到未来或者指定的某个版本,先找到版本号(版本号只需要前几位就可以了),然后可以:

git reset --hard 版本号

例如现在我想回到第3个版本:git reset —hard 第3个版本的版本号

3、如果我们回退到过去的版本,那么怎么查看回退之前的所有版本呢?包括未来版本?

比如现在总共有5个版本,我当前已经回退到第3个版本,突然我又想回到最新版本也就是第5个版本!

那么我就需要找到第5个版本的版本号, 就可以使用:

git reflog              // 查看历史所有提交日志,也可以看到对应的版本号

根据commit信息找到对应的版本号,比如是:1234567, 然后可以:

git reset --hard 1234567  

这样就回到最新版本了
  • 放弃对该文件(或者当前所有)的修改
git checkout -- 文件名
或者
git checkout -- .

注:该使用只是撤销当前的修改,或者当前所有文件的修改,比如说在你没有使用git add .前,你修改了项目很多地方,但是你使用了 git checkout .之后,你所有的修改将不复存在; 另外,如果你已经使用了git add .将所做的修改从工作区(working directory)添加到暂存区,与此同时,你又修改了代码的其他地方,然后你再使用 git checkout .后,这只是放弃了当前的修改,并不能将你之前添加到暂存区的修改撤销掉哦,也就是说不能让你从暂存区撤销到工作区

  • 撤销从工作区到暂存区的提交
git reset HEAD .      // 撤销 git add 的所有提交
或者
git reset HEAD 文件名          // 撤销某个文件 git add 的提交

说明:使用 git reset HEAD . 其实就是从 暂存区 的状态回到 工作区 的状态!

  • track(跟踪)一个远程分支到本地
git checkout --track origin/远程分支名
  • 查看推送到远程前后的内容修改差异
git  log -p              // 查看所有修改内容差异

git log -p -1          // 查看最近一次提交的修改内容差异

git log -p -2          // 查看最近两次提交的内容差异

----------------
  • 存储当前的修改 ( git stash)

有时候,我们开发到一半,或者临时做了一些修改,但是马上又要去做另外的一个操作,比如,临时紧急修复一个bug,要创建一个临时分支,但是当前修改的东西又怕丢失,怎么办?用git暂存起来,之后恢复:

git stash              // 暂存当前的修改, 使用该命令后,用git status查看就会发现工作区干干净净

git stash list         // 查看刚才的暂存

git stash pop       // 恢复暂存的内容,同时删除stash的内容

git stash apply     // 恢复暂存的内容,同时保留stash的内容 

git stash apply stash@{0}     // 恢复某一次stash的内容

git stash drop      // 删除stash的内容

注:前几天我自己就有一次使用了git stash发生了一次事故,具体是怎么回事呢? 我正在开发中,突然队长修改了一个我临时需要用的东西,然后我需要合并他的分支,那现在的开发又进行了一部分,改怎么办呢?于是我 git stash, 将他的分支合并到我的当前开发分支后,然后我一不小心 git stash drop了,糟了,本应该 git stash pop的,却弄成git stash drop丢掉之前的修改了,然后 git status,完了,工作区干干净净,那可以是我两个多小时的工作量,怎么办,慌忙和悲伤之中翻看之前的记录,然后我发现,我用命令查看过stash记录,也就是git stash list, 记录是 Dropped refs/stash@{0} (d0d26002b33a938d97184aa776ba8caad1f2948f) 更幸运的是我没有退出terminal,是的,你没听错,然后我使用git stash apply d0d26002b33a938d97184aa, YEAR, 然后竟然恢复了!!!挽救了我一命,顿时心花怒放,真想请假去旅游一个星期以庆祝自己这么牛X(那是不可能的)。不管怎样,学会git真的会在某些时候给你最信赖的帮助。

  • git stage (将文件从工作区添加到暂存区,与git add功能一样)

这个命令是什么意思呢?我们在 terminal 求助一下看看

屏幕快照 2017-12-08 上午9.11.49.png

从上可以看出:This is a synonym for git - add, 意思就是 该命令是 git add 命令的同义词,换句话说,它的作用和 git add是一样的,都是将文件从工作区添加到暂存区。所以我们平时除了可以使用 git add .命令外,也可以使用git stage .来代替。

  • git ca

这个命令是用来修改本次的提交信息, 相当于命令git commit --amend, 比如刚才我commit的时候,提交信息是udpate view backgroundColor, 然后我突然后悔了,我觉得提交信息有误,于是我想修改刚才的提交信息,改成update subview backgroundColor, 怎么办呢?使用如下命令就可以

git ca

或者

git commit --amend
  • 强制推送并覆盖远程

现在,你有一个远程version为:feature_origin_version10, 但是你的本地version为:local_version9, 相当于你落后了一个远程版本,同时,你不想要远程的这个提前版本了,想要远程version和本地version统一,那么我们就可以强制推送到远程,覆盖远程:

git push -f origin local_version9 : feature_origin_version10                     // 强制推送到远程,远程被覆盖(远程提前的所有版本没有了)
  • 移除git仓库(并非删除这个仓库的任何文件)

如果你已经有了一个git仓库,但是现在你突然不想要让它作为一个git仓库的存在,那么你可以执行如下命令

rm -rf .git

这样就变成一个普通的文件夹或者文件了。

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