常用git 命令

作为一个打算跟代码耗一辈子的有志青年,怎能不学习git

  • ** 下面介绍下 git常用命令 **

    • git init 初始化git 文件
    • git add file添加文件到暂存区(index区域)
    • git add -A stages All
    • git add . stages new and modified, without deleted
    • git add -u stages modified and deleted, without new
    • git commit 提交到版本库
    • git commit -a -m "提交说明" 最常用的方法(可以省去 add到暂存区这一步 )
    • git status 查看工作区所有文件状态
B0B21305-24C8-486F-9F3C-D51C3D2E84D7.png
    • 文件名为红色提示表示文件只存在于工作区,没有进入暂存区 需要 add 该文件 到暂存区
    • 文件名为绿色绿色提示表示文件已经存在暂存区 commit 后该文件进入版本库
  • 删除文件

    • 工作区是clean状态 手动删除
        • 手动删除文件之后
          文件在本地被删除,但是还存在git 版本中
          - 恢复文件:git checkout -- <file> 把暂存区的文件恢复到本地
          - > - 手动删除之后,想要在暂存区也删除 git rm file
          - 这时候想恢复文件 ** 前提是代码版本库中有该文件的存档 **
          - 恢复暂存区文件:git reset HEAD <file>
          - 恢复本地文件: git checkout -- file
  • git rm <file> 用git删除文件(非手动删除) 本地文件和暂存区(index)都会被删除

  • git rm <file> --cached 只删除暂存区git index中的记录,不会删除本地代码

  • git rm <file> -f 强制删除文件,** 凡是带有 -f 的命令都要慎重,除非找你很清楚自己在做什么 **

  • git diff 当前工作目录和上次提交与本地索引(index)间的差异。

  • git diff --cached 当前的索引(index)和上次提交间的差异 这些内容在不带"-a"参数运行 "git commit"命令时就会被提交

  • git diff HEAD 工作目录与上次提交时之间的所有差别,这条命令所显示的 内容都会在执行"git commit -a"命令时被提交

  • 重命名

    • git mv <file1> <file2> 把file1改名为file2
      相当于
      - mv file1 file2
      - git rm file1
      - gir add file2
  • 查看提交历史

    • git log 打印所有提交信息, SHA-1校验, 作者名字, 电子邮件, 提交时间 , 提交说明
    • git log -p 显示每次提交的内容差异
    • git log -n 显示最近n次历史
    • git log --stat 简要显示增改行数统计
  • git 撤销

    • git commit --amend
    • 修改上次commit内容 http://www.cnblogs.com/irocker/p/git-commit--amend.html
      • 暂存区有内容,则把暂存区内容加入到上次commit版本中,git head中 会删除上次commit版本,把这次commit --amend中的内容作为新版本加入head中
      • 暂存区无内容,则有机会从新编辑提交说明
  • git 撤销本地修改(还未提交到本地代码库)

    • git checkout . #本地所有修改的。没有的提交的,都返回到原来的状态
  • git本地分支管理

    • git branch 查看所有分支

    • git branch name 创建新分支 名字为name

    • git checkout分支name 切换分支 (在存在多个分支的情况下)

    • git checkout -b distribution 切换到新建分支distribution(同时创建分支distribution)

      • 相当于:git branch distribution 加上git checkout distribution
    • git merge [branch-name] 把branch-name分支合并到当前分支(如果当前分支已经包含有[branch-name]中的所有内容则 提示 Already up-to-date 意识是没有必要合并)

    • git branch -d [branch-name] 删除分支branch-name

    • git branch -v 所有分支最后一次提交信息

    • git branch --merge 查看已合并分支

    • git branch --no-merge 查看未合并分支

    • git branch -d [branch-name]删除分支(前提是分支已经合并,未合并的分支会删除失败)

    • git branch -D [branch-name] 强制删除分支 (哪怕没有合并,照样删除)

  • git 远程仓库管理

    • 给本地git 添加远程仓库

      • git remote add origin url添加分支名为origin的远程分支
    • 推送到该远程仓库

      • git push -u origin master 以origin为默认主机,后面就可以不添加任何参数 git push
    • git remote 列出所有远程分支的名字

    • git remote -v 列出所有远程分支的详细信息

    • git remote add [shortname] [url]添加远程分支,并给该远程分支起别名

    • git fetch [remote-name]拉取所有远程分支,但是并不合并本地分支

    • git pull 拉取远程分支,并合并

    • git remote show [remote-name]打印远程分支详细信息

    • git remote rename name1 name2 重命名远程分支name1 改名为name2

    • git remote rm name 删除远程分支 name

    • git checkout -b 【分支名】 [远程名]/【分支名】 新建分支并切换到该分支 (该分支是对[远程名]/[分支名]的复制)

      • 相当于 git checkout --track [远程名]/[分支名]
    • 跟踪分支:从远程分支检出的本地分支,是一种和远程分支有着直接李恩熙的本地分支, 一个本地分支只能和一个远程分关联。

    • 推送到远程分支

      • git push [远程名] [本地分支]:[远程分支]
    • 删除远程分支

      • git push [远程名] :[远程分支] (省略了本地分支,意思是把一个空的分支来替换远程分支,也就是删除)
  • git rebase,顾名思义,就是重新定义(re)起点(base)的作用 http://blog.chinaunix.net/uid-27714502-id-3436696.html

一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作。

- `git rebase [branch-name]` 衍合结果在原分支 相当于 git rebase [branch- name] [self-branch-name]

- `git rebase [branch-name1] [branch-name2]`  切换在 [branch-name2]中,并且commit 顺序是 先name1 然后是name2 (和时间前后无关)
  • git rebase --onto master [branch-animal] [branch-dog] 衍合animal 和 dog 共同祖先后面的变化 和 master 衍合
  • git 可以直接提交单个文件。
    当修改了多个文件, 这时候你可以挑出其中的某几个文件 add 到暂存区, 然后commit, 不影响其他工作区的文件。
  • 本地创建好了项目, 要关联远程仓库
git remote add origin https://yourUrl
git push -u origin master

  • git 回退到历史版本 reset 和 checkout

回退上个版本 reset
- git reset --hard HEAD^(本地代码也会回退)

  • 整个项目回退历史版本
    git reset [历史版本] --参数

参数:
- soft : 只有HEAD 回到历史版本
- mixed: index 和 HEAD 回到历史版本
- hard: working index HEAD 全部回到历史版本

  • 某个文件回退到历史版本 reset
    git reset [历史版本] 文件名字

    这样的好处:不影响本地代码, reset 后 直接执行 commit 这个文件就回到了历史版本。
    HEAD 指向当前分支的 commit

  • checkout

checkout是会修改HEAD的指向,变更Index区域里的内容,修改Working Directory里的内容。
这看上去很像reset --hard,但和reset --hard相比有两个重要的差别

  • reset会把working directory里的所有内容都更新掉
    checkout不会去修改你在Working Directory里修改过的文件
  • reset把branch移动到HEAD指向的地方
    checkout则把HEAD移动到另一个分支

  • 当终端程序执行到最后一行只有一个冒号(:)时,说明程序没执行完,点击enter 键,继续执行
  • 终端遇到 end 提示,按q可以退出该进程

补充文章

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

推荐阅读更多精彩内容

  • 下面Git 命令清单部分来自廖雪峰,部份来自其他各处收集。几个专用名词的译名如下。 Workspace:工作区 I...
    乱尘阅读 252评论 0 1
  • git常用命令 GIT常用命令备忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章阅读 8,384评论 1 26
  • 一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。 下面是我整理的常用...
    f09037cb27f7阅读 103评论 0 0
  • 文中的年龄都是虚岁。 5岁前的事情没有记忆,只从妈妈的嘴里知道我喜欢摸着咪咪睡觉。5岁的时候我跟着外公一起过,因为...
    汉堡包制作者阅读 1,398评论 3 1
  • 遇见,遇见你转头离去的身影 默契,默契总是如此悄然迷离 排出尾气的公交车驶过闹市区 车上毫不知情的你慢慢的远去 傻...
    重鼓阅读 81评论 0 3