git命令行完全解读

BY 张建成(prettyEcho@github)

除非另行注明,页面上所有内容采用知识共享-署名(CC BY 2.5 AU)协议共享

原文地址deep.js , 欢迎 评论star

<p style="color: rgb(253,201,11);" align="center">🐬🐬 欢迎评论和star 🐳🐳</p>

git命令行

  1. git clone

    • 用于将远端仓库拷贝到本地
    • ssh: git clone username@host:/path/to/repository
    • https: git clone https:/path/to/repository.git
  2. git config

    • 这个命令定义了所有配置,从用户信息到仓库行为等等
    • git config --global --edit : 编辑器打开配置文件
    • git config --global user.name : 配置提交的用户名
    • git config --global user.email : 配置提交的邮箱
  3. git add

    • 将本地工作区(Working dir)改变提交到缓存区(Index)
    • git add <file> : 提交确定文件
    • git add * : 提交所有更改
    • git add -A : 提交tracted和untracted中的文件提交到缓存区
    • git add -u : 提交tracted中的文件提交到缓存区
    • git add -p : 交互式提交
  4. git commit

    • 将缓存的快照提交到项目历史
    • git commit -m "<message>" : 提交已经缓存的快照。它会运行文本编辑器,等待你输入提交信息。当你输入信息之后,保存文件,关闭编辑器,创建实际的提交。
  5. git status

    • 列出已缓存、未缓存、未追踪的文件(缓存区和工作区文件状态)
    • Changes to be committed: 文件在缓存区
    • Changes not staged for commit: 在工作区已经追踪的文件
    • Untracked files: 在工作区未追踪的文件
  6. git pull

    • 拉取并合并远端项目(默认拉取marter项目)
  7. git push

    • 推送本地git到远端
    • git push
    • git push origin <branch>: 推送本地git到远端某个分支
    • git push --set-upstream origin <branch>: 创建远端分支并推送代码
  8. git log git

    • 命令显示已提交的快照
  9. git checkout

    • 这个命令有三个不同的作用:检出文件、检出提交和检出分支

    • 提交层面

      • 移动HEAD指针到固定的提交
      • git checkout HEAD~2
      • git checkout <commit>
    • 文件层面

      • 用提交版本中的文件覆盖本地工作区的文件
      • git checkout HEAD~2 test.txt
      • git checkout HEAD <file> (常用)
        <p style="text-align: center">
        <img src="https://user-gold-cdn.xitu.io/2018/4/3/16289af9f0f6849d?w=800&h=426&f=png&s=35338" alt="checkout-file" style="width: 40%">
        </p>
    • 分支层面

      • 切换分支
      • git checkout <branch>
  10. git reset

    • 修改提交版本,会删除提交历史(一定要谨慎),切记当把提交推送到远端后,禁止使用git reset

    • 提交层面

      • git reset --soft HEAD~2
      • git reset --soft <commit>

    <p style="text-align: center">
    <img src="https://user-gold-cdn.xitu.io/2018/4/3/16289af9f10c5b5e?w=800&h=1190&f=png&s=50577" alt="reset" style="width: 40%">
    </p>

除了在当前分支上操作,你还可以通过传入这些标记来修改你的缓存区或工作目录:

    * --soft – 缓存区和工作目录都不会被改变
    * --mixed – 默认选项。缓存区和你指定的提交同步,但工作目录不受影响
    * --hard – 缓存区和工作目录都同步到你指定的提交
     
<p style="text-align: center">
    <img src="https://user-gold-cdn.xitu.io/2018/4/3/16289af9f0edc02b?w=800&h=550&f=png&s=30152" alt="reset-scope" style="width: 40%">
</p>
    
常用操作:

    * git reset --mixed HEAD / git reset HEAD
    * git reset --hard HEAD

* 文件层面
    + 用提交版本中的文件覆盖缓存区的文件
    + git reset HEAD~2 text.txt
    + git reset HEAD <file>

  <p style="text-align: center">
    <img src="https://user-gold-cdn.xitu.io/2018/4/3/16289af9f108ea6e?w=800&h=422&f=png&s=33574" alt="reset-file" style="width: 40%">
</p>
  1. git revert

    • Revert撤销一个提交的同时会创建一个新的提交。这是一个安全的方法,因为它不会重写提交历史。
    • git revert HEAD~2
      • 会找出倒数第二个提交,然后创建一个新的提交来撤销这些更改,然后把这个提交加入项目中。

    <p style="text-align: center">
    <img src="https://user-gold-cdn.xitu.io/2018/4/3/16289afa197868fe?w=800&h=1217&f=png&s=58696" alt="revert" style="width: 40%">
    </p>

  2. git stash

    • git stash : 暂存当前正在进行的工作
    • git stash pop : 恢复暂存的文件
    • git stash list: 显示暂存栈中所有暂存的历史
    • git stash apply stash@{1} : 将指定暂存纪录恢复
    • git stash clear : 清空暂存栈
  3. git branch

    • 创建、列出、重命名和删除分支
    • git branch : 列出所有分支
    • git branch <branch> : 创建一个名为<branch>的分支
    • git branch -d <branch> : 删除指定分支。这是一个安全的操作,Git 会阻止你删除包含未合并更改的分支。
    • git branch -D <branch> : 强制删除指定分支,即使包含未合并更改。如果你希望永远删除某条开发线的所有提交,你应该用这个命令。
    • git branch -m <branch> : 将当前分支命名为 <branch>。
  4. 简记图

<p style="text-align: center">
<img src="https://user-gold-cdn.xitu.io/2018/4/3/16289afa3e049455?w=838&h=492&f=jpeg&s=102730" alt="main" style="width: 30%">
</p>

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

推荐阅读更多精彩内容

  • Git 命令行学习笔记 Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来...
    sunnyghx阅读 3,908评论 0 11
  • Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这样一来,任何一处协同...
    __silhouette阅读 15,864评论 5 147
  • git常用命令 GIT常用命令备忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章阅读 8,458评论 1 26
  • 时光简直了,我尚在十几岁的世界神游,却又难免被现实打回原形。 以前不曾远游,小时候到镇上转盘看到的建筑物就以为是最...
    落雨声滴答滴滴阅读 202评论 0 0
  • 大千世界,无奇不有。只是我们缺少发现美的眼睛而已。下来一起来欣赏一些社会当中和自然界中不常见到的景象。 美丽的地球...
    一起手机摄影阅读 1,812评论 23 25