Git-------目前世界上最先进的分布式版本控制系统(没有之一)

什么是版本控制系统?

  说简单点,就是一个文件,对其增加、删除、修改都可以被记录下来,不仅自己可以修改,其他人也可以进行修改

  每次对文件的改动后,包含的记录项类似:

    版本--也就是文件改动的次数  改动的文件依然存在 ,类似文件的副本

     用户--改动文件的人

    说明---文件被改动的位置

     时间---文件被修改的时间

安装Git

  Windows系统 git链接:https://git-for-windows.github.io/

  安装很简单,直接下一步------下一步即可完成安装

  安装完成后,在开始菜单-->Git-->git bash打开命令行工具 ,弹出这样的窗口,太棒了,完成安装操作 

  完成安装后,需要在本地生成ssh信息(由于git仓库和github仓库之间的数据传输需要SSH加密):

    进入 git bash:

    1. 输入 ssh-keygen -t rsa -C "邮箱地址"   

    2.进入C:\Users\Administrator\.ssh 目录 打开id_rsa.pub 拷贝其中内容     

    3.进入github后台,SSH and GPG keys-->New SSH key        

     -->title任意-->content:输入拷贝的内容

    4.进入git bash中输入一下2句话 $ ssh -T git@github.com(输入) The authenticity of host 'github.com (192.30.253.113)'       can't be established. RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw*. Are you sure       you want to continue connecting (yes/no)? yes(输入)(注意:一定要是输入,不能回车) Warning: Permanently added       'github.com,192.30.253.113' (RSA) to the list of known hosts. Hi arilpan! You've successfully authenticated, but       GitHub does not provide shell access   -------表示已经成功连接上github

    5. 配置全局  用户名:$ git config --global  user.name ' your name'

           邮箱:$ git config --global  user.email   'email'

        查看:$ git config --get user.name

           $ git config --get user.email  

创建版本库(repository)

  mkdir   leargit    ----创建一个版本库,也就是一个目录,在这个目录下存放所有的文件,对所有文件的操作都会被git记录下来

  cd   leargit   ----去往leargit这个目录下

  pwd-----查看当前所在目录

初始化git仓库

   $ git init   ----初始化新创建的目录,变成git可以管理的仓库  ,这样git仓库就创建好了

   查看当前目录,会发现leargit目录下,会存在一个.git目录,这个目录是用来管理跟踪版本库的

添加文件到git仓库

  不要使用windowns自带的记事本编辑你的文件,建议使用Notepad++http://notepad-plus-plus.org/,功能强大

  1)添加文件到暂存区--库(注意:这个文件是你已经在工作区中写好的文件,也就是在电脑中,leargit目录下存在的文件)

    首先回到learngit目录下   cd learngit

    添加文件  $  git add readme.txt   (可反复使用)

  2)接着,用git commit命令告诉git,提交文件到库

    $ git commit  -m "write a readme.txt"

    -m:后面的文字是本次提交文件的说明,可以输入任意内容,但最好是有意义的

 注意:commit可以一次提交多个文件,所以add一次可以添加多个文件  eg:$  git add 1.txt 2.txt...$ git commit -m "add two files"

工作区和暂存区的理解:

  1.工作区:电脑中看到的目录,比如leargit下的文件(除开.git目录),或者以后将要创建的文件;

  2.暂存区: leargit目录下有一个隐藏目录.git,他不属于工作区,而是一个版本库,其存储了很多东西,其中最重要的就是stage--暂存区,

    它还为我们创建了一个master分支,以及执行master的指针HEAD

  之前所说的提交文件到版本库实际上是这两个步骤:

    1.git add :将工作区的文件添加到暂存区中

    2.git commit :将暂存区的所有内容提交给当前分支下

修改文件

  修改文件完后需要进行和提交文件一样的步骤 (1.添加文件 git add 2.提交文件 git commit -m )

常用的命令

  git status----查看仓库当前的状态(文件是否被修改和提交)

  git diff------查看文件中被修改的位置,以及位置上对应的内容

  git log-----查看文件提交的历史记录(从最近到最远的显示日志信息),确定要回到哪一个版本,

    也可以使用 git log --pretty-oneline将信息显示在一行

版本回退    ---版本回退,不需要再次进行文件的添加和提交

  git reset --hard  HEAD     --回到上面的版本

     head---表示当前版本 也就是最新的提交(必须知道才能进行返回)  head^--表示上一个版本

     head^^----表示上上一个版本  head~n-----返回上n个版本

  cat readme.txt     --------查看文件的内容

版本会退后的前进 

  git reset --hard 版本号(用git reflog命令能够查到)    -----方便回到未来的某个版本   

  git reflog---记录每一次的命令,方便用于当你回到某个版本后,再想恢复到现在的版本,就必须找到现在版本的id  即回到未来的某个版本 

管理修改

  如果每次修改完成后,不使用add 命令添加到暂存区,就不会被commit提交到git仓库

撤销修改  

  场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout - - filename

  场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,

  分两步,第一步用命令git reset HEAD file就回到了场景1,第二步按场景1操作。

删除文件

  $ git rm 1.txt 

  一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit 

  另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:

    $ git checkout -- file

  git checkout ---实际就是用版本库里的版本替换工作区的版本,无论工作区是删除的还是修改的,都可以‘一键还原’

远程仓库  ----操作如上 可以实现远程库

  GitHub允许你添加多个SSH Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,

添加远程库

   要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git

    关联后,使用命令git push -u origin master第一次推送master分支的所有内容;

    此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

  如何创建一个远程仓库让本地git仓库与github仓库数据同步?

    1.登陆github  完成如图三部操作

      

     2.创建完成后,需要在本地git仓库完成两步操作才能将git仓库中的分支上的所有内容同步到github仓库中

      

     3.完成分支的推送,就可以看见远程库的内容和git仓库的内容完全一致了

      

      往后,只要对本地仓库的内容进行了修改都可以使用 git push origin master 命令,将最新的内容更新到远程库中

克隆远程库

  要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone 远程库的地址 命令完成克隆。

创建和合并分支

      

    也可以直接输入 git checkout -b dev  ----创建并切换分支

    在dev分支上进行文件readme内容的修改,然后进行提交,再切换到master分支,发现两个分支上的内容不一致

     

      

  如何合并分支?

    

  合并完成后,就可以删除dev分支了  使用命令 :git branch -d dev

Git基本常用命令如下:

mkdir:         XX (创建一个空目录 XX指目录名)

pwd:          显示当前目录的路径。

git init          把当前的目录变成可以管理的git仓库,生成隐藏.git文件。

git add XX       把xx文件添加到暂存区去。

git commit –m “XX”  提交文件 –m 后面的是注释。

git status        查看仓库状态

git diff  XX      查看XX文件修改了那些内容

git log          查看历史记录

git reset  –hard HEAD^ 或者 git reset  –hard HEAD~ 回退到上一个版本

(如果想回退到100个版本,使用git reset –hard HEAD~100 )

cat XX         查看XX文件内容

git reflog       查看历史记录的版本号id

git checkout — XX  把XX文件在工作区的修改全部撤销。

git rm XX          删除XX文件

git remote add origin https://github.com/tugenhua0707/testgit 关联一个远程库

git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库

git clone https://github.com/tugenhua0707/testgit  从远程库中克隆

git checkout –b dev  创建dev分支 并切换到dev分支上

git branch  查看当前所有的分支

git checkout master 切换回master分支

git merge dev    在当前的分支上合并dev分支

git branch –d dev 删除dev分支

git branch name  创建分支

git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作

git stash list 查看所有被隐藏的文件列表

git stash apply 恢复被隐藏的文件,但是内容不删除

git stash drop 删除文件

git stash pop 恢复文件的同时 也删除文件

git remote 查看远程库的信息

git remote –v 查看远程库的详细信息

git push origin master  Git会把master分支推送到远程库对应的远程分支上

可供参考的链接:http://blog.jobbole.com/78960/

 


  

Git使用过程的更多相关文章

  1. SVN迁移到Git的过程(+ 一些技巧)

    SVN迁移到Git的过程(+ 一些技巧) 李顺利 Key Words SVN,Git,Clone,Conversion,Tips,VCS,Pro Git 关于在VCS中SVN和Git之间的迁移(Clo ...

  2. git 使用过程(一、准备工作)

    没有多余的废话,只是纯粹的捞干的记录下一自己使用Git的过程.(正在学习中,也是刚接触,记录过程可能有点乱.等熟悉之后在重新整理一下) 一.先下载git客户端 网址:http://msysgit.gi ...

  3. git rebase 过程中遇到冲突该怎么解决?

    在执行git rebase 过程中经常遇到问题,此时有点慌,一般如何解决呢? 1.先将本地的冲突手动解决 2.执行下面命令 git add . git rebase --contine  //继续re ...

  4. Windows系统Git安装教程(详解Git安装过程)

    Windows系统Git安装教程(详解Git安装过程)   今天更换电脑系统,需要重新安装Git,正好做个记录,希望对第一次使用的博友能有所帮助! 获取Git安装程序   到Git官网下载,网站地址: ...

  5. 从0到1,本地到远程git程序过程

    从0到1,本地到远程git程序过程 切记一定要在需要提交代码的文件夹下git init,既是你使用了什么 tortoisegit什么工具,或者你在idea环境下已经add了,但是仍然需要你在当前文件夹 ...

  6. Git使用过程中出现项目文件无法签入Source Control的情况

    在VS中使用Git进行项目source control的过程中,有些文件不在source control之下,右键点击时,也找不到Undo, Commit命令 无法把他们签入进Source Contr ...

  7. my project 中git使用过程(基本操作流程)

    1.g  it clone git@name:server/BM/APPS.git 则BM_APPS.git项目被下载到当前目录下了,这时git@name:server/BM/APPS.git就是自己 ...

  8. Git使用过程中的问题

    Q-1:怎么切换到远程的分支 本地已经有一个代码库了(是从github上clone的),但是现在远程库中一个新的branch,怎么拉取远程分支,并在本地创建该分支(内容一样).how to do? # ...

  9. git提交过程中遇到的 index.lock 问题导致无法提交的解决方法

    在提交代码的过程中,可能会遇到下面的问题: fatal: Unable to create 'C:/programLists/zzw-q1/.git/index.lock': File exists. ...

  10. SVN迁移到Git的过程(+ 一些技巧

    关于在VCS中SVN和Git之间的迁移(Clone)这个部分网上已经有大批的文章介绍,而且都非常不错,能够满足我们的常见的需求,这里介绍的是我自己整理的一些技巧和使用中出现的一些问题和疑问.阅读本篇文 ...

随机推荐

  1. rhel5.8-LAMP环境搭建

    一.LAMP安装前的准备   安装环境:rhel5.8  zabbix-2.4.5  php-5.6.8   MySQL5.6.23  libpng-1.5.9 zlib-1.2.7 (apr,apr ...

  2. cocoapods在OS X Yosemite系统中报错

    之前使用cocoapods一直是正常使用的,刚换了电脑,使用pod install的时候报错: /System/Library/Frameworks/Ruby.framework/Versions/2 ...

  3. Selenium WebDriver 学习笔记

    1. 打开VS2012 2. 新建工程(单元测试工程或控制台程序都可以, 看需求) 3. 工具->NuGet程序包管理器->程序包管理器控制台 4. 输入"Install-Pac ...

  4. Code Complete阅读笔记(二)

    2015-03-06   328   Unusual Data Types    ——You can carry this technique to extremes,putting all the ...

  5. poj 3959 Alignment of Code <vector>“字符串”

    Description You are working in a team that writes Incredibly Customizable Programming Codewriter (IC ...

  6. 8051、ARM、AVR

    arm精简指令集.可以安装嵌入式操作系统 8051复杂指令集 avr没落了

  7. CDZSC_2015寒假新人(2)——数学 B

    B - B Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status ...

  8. PHP内置函数getimagesize()的漏洞

    今天程序想压缩一些图片,想获取图片的宽高,在网上查了一下哪些函数可以使用,然后看到getimagesize()这个函数.但是当同事看到这个函数,提醒我说这个函数,运营同事禁止使用.心里就很奇怪,就在网 ...

  9. PHP读取EXCEL时写入数据乱码解决办法

    第一步排除excel读取的数据是不是乱码 EXCEL读取时经常会出现乱码,而我们常用的字符集是UTF-8 ,GB2312(GBK) ,这就需要对编码进行转换,但是又不能对纯数字和英文字符转换,否则会乱 ...

  10. 还是畅通工程(1233 并查集+kruskal)

    还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...