平时使用过两种版本号控制软件 SVN 和 Git,平心而论,假设纯粹自己使用,那么绝对 Git 更加适合,本地库、远程库、离线工作、强大而灵活的分支、大名鼎鼎的Github, 这些都是选择 Git 的原因。记得刚接触时Git,感觉 Git 如此强大,再加上其是由大名鼎鼎的 Linus 所编写,所以花了非常多的时间看各种资料,不过后来那些不经常使用的命令与功能还是只停留在知道与了解的层面。Git 不过一种工具,是为了满足某种需求而被编写出来的一种工具,对于工具做到善加利用就可以。当然,要做到善加利用,一定要深刻理解
Git 所倡导的理念,以及其内部的实现原理。

Git 入门

这里推荐 @廖雪峰
 所写的一个很浅显易懂的Git教程 ,我当时就花了一个下午照着教程学操作一遍,然后就開始使用 Git 了。

Git 原理

Git 本质上是一套内容寻址文件系统。从内部来看,Git 是简单的 key-value 数据存储。它同意插入随意类型的内容,并会返回一个键值,通过该键值能够在不论什么时候再取出该内容。这些对象都压缩存储,而且以其自身的 SHA-1 哈希值作为唯一标示。它同意插入随意类型的内容,并会返回一个键值,通过该键值能够在不论什么时候再取出该内容。



Git主要包括 3 类对象:blog(存储文件数据)、tree(类似于文件夹)、commit。每次 Git 提交都会产生一个 commit 对象,并更新有修改的文件所关联的全部 tree 对象。多个 tree 对象一起记录了包括整个项目全部 blob 对象的信息, 并构成了(DAG)有向无环图 。所以在不论什么时间点不论什么情况下,通过 commit 对象关联的唯一根节点 tree,都能够遍历找出整个项目在这次
commit 状态下的所有文件。



Git 能够以两种基本的方式跨越两个仓库数据传输:基于HTTP协议之上,和 file://, ssh://, git:// 等智能传输协议。

Git 插件

好的 IDE 基本都集成了 Git 插件,最性感的编辑器 sublime 也有第三方的 Git插件。这些插件基本对最经常使用的 Git 功能做好了菜单选项,所以通过对这些插件使用也可以了解到 Git 日常使用中最经常使用的命令与功能。

Git 使用注意

假设正在 IDE 中使用 Git插件,就不要在命令行 (shell) 中在进行操作,对于一个 Git库 同一时候有两个进程来操作可能会导致可能莫名其妙的问题。所以假设认为软件的Git插件有的功能没找到或操作不方便,那么建议先关掉 IDE ,然后在用命令行窗体中去运行 Git 命令。

Git 经常使用命令

这个不须要刻意去记,可是要有大体的了解,用时能够查看 help 或者 Google.

  1. git help <command> # 显示指定命令的help
  2. git config --global user.name "your name"
  3. git config --global user.email "your email"
  4.  
  5. # 改动与提交
  6. git status # 查看工作区状态
  7. git add <file> # 将指定文件改动提交到本地暂存区
  8. git add . # 将全部改动过的文件提都交暂存区,不包含删除,"."即表示正则匹配全部字符
  9. git add --all # 将全部工作区改动提交到暂存区,包含 delete 掉的文件
  10. git add -A # 同上
  11. git commit -m"comments" # 将暂存区的内容提交到本地库,并加上备注
  12. git commit <file> # 提交暂存区指定文件
  13. git commit . # 提交暂存区全部文件
  14. git commit -a # 将git add, git rm和git commit等操作都合并在一起做,不包含新建文件
  15. git commit -am "comments" # 同上+加入备注
  16.  
  17. # 撤销与恢复
  18. git checkout -- <file> # 抛弃工作区指定文件的改动
  19. git checkoout . # 抛弃工作区全部的改动
  20. git reset <file> # 将指定文件从暂存区恢复到工作区
  21. git reset -- . # 将全部文件从暂存区恢复到工作区
  22. git reset --hard # 恢复近期一次提交过的状态,工作区全部改动被放弃
  23.  
  24. # 查看提交
  25. git show # 显示某次提交的内容
  26. git show $id
  27. git log
  28. git log <file> # 查看该文件每次提交记录
  29. git log -p <file> # 查看每次具体改动内容的diff
  30. git log -p -2 # 查看近期两次具体改动内容的diff
  31. git log --stat # 查看提交统计信息
  32.  
  33. # 差异对照
  34. git diff <file> # 比較当前文件和暂存区文件差异
  35. git diff <$id1> <$id2> # 比較两次提交之间的差异
  36. git diff <branch1>..<branch2> # 在两个分支之间比較
  37. git diff --staged # 比較暂存区和版本号库差异
  38. git diff --stat # 只比較统计信息
  39.  
  40. # 关于版本号
  41. git tag #查看版本号
  42. git tag [name] #创建版本号
  43. git tag -d [name] #删除版本号
  44. git tag -r #查看远程版本号
  45. git push origin [name] #创建远程版本号(本地版本号push到远程)
  46.  
  47. # 关于分支
  48. git branch <new_branch> # 创建新的分支
  49. git checkout <branch> # 切换到某个分支
  50. git checkout -b <new_branch> # 创建新的分支,而且切换过去
  51. git branch -v # 查看各个分支最后提交信息
  52. git branch -r # 查看远程分支
  53. git branch --merged # 查看已经被合并到当前分支的分支
  54. git branch --no-merged # 查看尚未被合并到当前分支分支
  55. git checkout $id # 把某历史提交checkout出来,无分支信息,切换到其它分支会自己主动删除
  56. git checkout $id -b <new_branch> # 把某历史提交checkout出来,创建成一个分支
  57. git branch -d <branch> # 删除某个分支
  58. git branch -D <branch> # 强制删除某个分支 (未被合并的分支被删除的时候须要强制)
  59.  
  60. # 关于远程仓库
  61. git remote add origin <remote> # 加入远程库
  62. git remote -v # 查看远程server地址和仓库名称
  63. git remote show origin # 查看远程server仓库状态
  64. git remote rm <repository> # 删除远程仓库
  65. git push -u origin master # client首次提交
  66. git push -u origin develop # 首次将本地develop分支提交到远程develop分支,而且track
  67.  
  68. # 跟踪远程库和本地库
  69. git branch --set-upstream master origin/master
  70. git branch --set-upstream develop origin/develop

【地址】http://blog.csdn.net/thisinnocence

Git 基本原理与经常使用命令的更多相关文章

  1. 【原理、命令】Git基本原理、与Svn的区别、命令

    一.Git是什么? Git是目前世界上最先进的分布式版本控制系统.工作原理 / 流程:Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote ...

  2. git基本原理

    git基本原理 一.总结 一句话总结:把原理那张图图背下来 1.git中的四大区,除了远程仓库和本地仓库,剩下两个是什么? 解答:工作区和暂存区. 2.git中的四大区(例如远程仓库和本地仓库),他们 ...

  3. Git 基本概念及常用命令

    一.基本概念 文件的三种状态:(任何一个文件在git中都有以下三种状态) 1) 已提交(committed):表示该文件已经被安全地保存在本地数据库中了. 2) 已修改(modified):表示修改了 ...

  4. 【android Studio】零git知识、零脚本命令,即刻体验git版本管理魅力!

    git的优点就不去多说了.阻碍咱新手体验它的唯一问题就是门槛太高,脚本看着像天书, 本文主要阐述的,就是如何在android studio上,也能像tfs那样,非常简单的操作,就能使用git进行版本管 ...

  5. Git 配置环境及常用命令整理

    一.Git教程网站 廖雪峰网站 易百GitHub命令:https://www.yiibai.com/git/git_clone.html 完成Windows环境命令下Git config配置 设置好之 ...

  6. git bush的一些基础命令

    git bush的一些基础命令(不区分大小写) 通过命令创建本地仓库 首先自己需要手动建一个文件夹用于本地仓库 进行如下输入,使用cd跳转到刚刚创建的文件夹中 之后再输入 git init 即可创建 ...

  7. Git 内部原理 - (1)底层命令和高层命令 (2Git 对象

    文章摘选自git官网,这里复制下来表示我已阅读并学习过一次这些内容: 无论是从之前的章节直接跳到本章,还是读完了其余章节一直到这——你都将在本章见识到 Git 的内部工作原理和实现方式. 我们发现学习 ...

  8. git常用情景和基础命令

    git常用情景和基础命令 将项目克隆到本地 --xxx是git的地址 git clone xxxx 或者初始化git(github提供滴) --新建一个readme.md文件 echo "# ...

  9. git安装用法和常用命令

    目录 git 下载 安装 git 工作中常用命令 Git常用命令汇总以及其它相关操作 或者 常出错误: 常用修改: 题外话(相关概念) git 下载 安装 1.下载Git,官网地址:https://g ...

随机推荐

  1. SharePoint 2010 BCS - 概要

    博客地址 http://blog.csdn.net/foxdave SharePoint 2010首次引入了BCS的概念 - Business Connectivity Service.即业务连接服务 ...

  2. List Set Map用法和区别

    List,Set,Map是否继承自Collection接口? 答:List,Set是,Map不是.如图: Collection ├List │├LinkedList │├ArrayList │└Vec ...

  3. MVC 使用EF Code First数据迁移之添加字段

    PM> add-migration 20161109   -Force 正在为迁移“20161109”搭建基架.此迁移文件的设计器代码包含当前 Code First 模型的快照.在下一次搭建迁移 ...

  4. 手动安装英特尔® 凌动™ Android* x86 模拟器映像

    android的模拟器实在是太慢了,慢的让人欲仙欲死,欲罢不能.猛然发现我的电脑是intel的CPU,我勒个去,换x86模拟器.然后悲剧了,伟大的gfw 我要装sdk,我要研究android开发,到底 ...

  5. Hello World! 2010年山东省第一届ACM大学生程序设计竞赛

    Hello World! Time Limit: 1000MS Memory limit: 65536K 题目描述 We know that Ivan gives Saya three problem ...

  6. OllyDbg 使用注意事项 (十)

    OllyDbg 用笔记 (十) 參考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 演示样例程序下载地址:http://pan.baidu.com/s/1kT1ce83 这个程序能够从 ...

  7. Case learning

    bad case: <?php foreach($user_detail AS $val) { if(!empty($val->portrait)) { //假设这个循环从来没有到达过 $ ...

  8. Lua Development Tools (LDT)

    http://www.eclipse.org/ldt/ Lua Development Tools (LDT) is about providing Lua developers with an ID ...

  9. ajaxFileUpload+struts2多文件上传(动态添加文件上传框)

    上一篇文章http://blog.csdn.net/itmyhome1990/article/details/36396291介绍了ajaxfileupload实现多文件上传, 但仅仅是固定的文件个数 ...

  10. java main方法背后的故事?(转)

    jvm java 看似一种语言,实则一个巨大的体系的王国,开发这么多年了,还是没有搞懂,我以为我懂了,可是过了一段时间又忘了,所以说还是没懂 1.main方法说起 编译完我们的java文件后,需要有个 ...