这是 git  涉及的流程概念图~   一目了然~~~    



分布式版本控制 git 概念 及常用命令总结_第1张图片

git主要分3个区:工作区,暂存区,版本库


工作区:目前工作的文件夹


暂存区:可以把修改的提交到缓存区,保存起来。相当于提交任务的缓存。add      .git/index


版本库:服务器的文件                                                        commit  .git/objects


git优点~

   
   
   
   
  1. 适合分布式开发,强调个体。

  2. 公共服务器压力和数据量都不会太大。

  3. 速度快、灵活。

  4. 任意两个开发者之间可以很容易的解决冲突。

【安装和初始化】


1   配置全局用户名和电子邮件地址


   
   
   
   
  1. git config  –global user.name  “owenrui”

  2. git config  –global user.email  [email protected]


2   初始化版本库


   
   
   
   
  1. 创建库 文件夹

  2. mkdir /root/to/repo

  3. cd /root/to/repo


   
   
   
   
  1. 初始化

  2. git init

  3. 把所有工作区的文件放到暂存区

  4. git add .

  5. 提交到本地的库

  6. git commit –m “initial import”

克隆版本库

   
   
   
   
  1. git clone https://github.com/gitlabhq/gitlabhq.git


【提交代码】

将目录中的修改内容提交到git里


   
   
   
   
  1. 把工作区里面的内容提交

  2.       echo "aaaa" >>aa

  3.       git add aa

  4.       git commit –m “add file aa”

上边命令git commit –m 后面加的标注既可以用双引号,也可以用单引号,标注内容也可以是中文

推送到远程的git库里面~


分布式版本控制 git 概念 及常用命令总结_第2张图片

然后在git服务器里查看我们推送的aa这个文件


分布式版本控制 git 概念 及常用命令总结_第3张图片

暂存已纳入git版本控制下的文件修改

      git add aa


提交已纳入git版本控制之下的文件的所有修改

      git commit –m "add file aa"


清除工作目录树中的修改

      git checkout HEAD aa


取消已暂存但尚未提交的修改的暂存标识

      git reset HEAD aa




【历史】

显示全部历史记录

      git log


分布式版本控制 git 概念 及常用命令总结_第4张图片


显示版本历史以及版本间的内容差异

      git log –p


分布式版本控制 git 概念 及常用命令总结_第5张图片


只显示最近一个提交

      git log –1


分布式版本控制 git 概念 及常用命令总结_第6张图片


显示最近的20个提交,以及版本间的内容差异

      git log –20 –p


显示最近6小时的提交

      git log –since=”6 hours”


显示两天之前的提交

      git log –before=”2 days”


显示比HEAD(当前检出分支的末梢)早3个提交的那个提交

      git log –1 HEAD~3

或者

      git log –1 HEAD^^^

或者

      git log –1 HEAD~1^^

【高级功能】

git revert:

还原一个版本的修改,必须提供一个具体的Git版本号,例如'git revert bbaf6fb5060b4875b18ff9ff637ce118256d6f20',Git的版本号都是生成的一个哈希值

分布式版本控制 git 概念 及常用命令总结_第7张图片

git checkout:

Git的checkout有两个作用,其一是在不同的branch之间进行切换,例如'git checkout new_branch'就会切换到new_branch的分支上去;另一个功能是还原代码的作用,例如'git checkout app/model/user.rb'就会将user.rb文件从上一个已提交的版本中更新回来,未提交的内容全部会回滚


分布式版本控制 git 概念 及常用命令总结_第8张图片

git reset:

将当前的工作目录完全回滚到指定的版本号,假设如下图,我们有A-G五次提交的版本,其中C的版本号是 bbaf6fb5060b4875b18ff9ff637ce118256d6f20,我们执行了'git reset bbaf6fb5060b4875b18ff9ff637ce118256d6f20'那么结果就只剩下了A-C三个提交的版本


git revert 和 git reset的区别


git revert 是撤销某次操作,此次操作之前的commit都会被保留

git reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区