git的基本使用

一、Git与Svn的区别

1、,GIT是分布式的,SVN不是:这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。

2、GIT把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。

3、GIT分支和SVN的分支不同:分支在SVN中一点不特别,就是版本库中的另外的一个目录。

4、GIT没有一个全局的版本号,而SVN有:目前为止这是跟SVN相比GIT缺少的最大的一个特征。

5、GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

二、安装git

官方Windows客户端:主要使用Git Bash以命令行模式操作,但也支持GUI(gitk/git GUI),使用方法参见官方使用说明;

1) 安装git客户端,勾选与鼠标右键的关联(该项默认都会勾选)

2) 在桌面任意空白处右键,选择Git Bash Here,打开git的bash界面

Git Bash Here界面

 3)git在提交代码时需要验证你的用户名和邮箱,git不希望有匿名用户去提交代码。输入如下两个命令来配置用户名和邮箱,其中global参数表示为全局配置,也可以为单个用户配置自己独特的用户名和邮箱

git  config  --global  user.name[你的用户名]

git  config  --global  user.email[你的邮箱]

4)生成公钥和私钥:git下拉和推送代码时使用的是ssh协议,因此需要用户配置自己的公钥和私钥,而生成用户公钥和私钥的命令如下:

 ssh-keygen  -t  rsa  -C[你的邮箱地址]

中间会弹出各种提示信息,一路默认即可。默认生成的公钥和私钥的目录为 {home_dir}/.ssh下。公钥为id_rsa.pub文件,私钥为id_rsa文件。其中Windows中的{home_dir}的值为C;\Users\[用户名],或者在git-bash中输入命令

cd


ssh 配置

注意:

本机SSH 私钥id_rsa不能删除。

本机SSH key只需要创建一对,不需要为每个服务器都创建一对。

三、Git的基础

  1、基本工作流程

1)克隆 Git 资源作为工作目录。

2)在克隆的资源上添加或修改文件。

3)如果其他人修改了,你可以更新资源。

4)在提交前查看修改。

5) 提交修改。

6)在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

7)查看git版本 git --version


Git的工作流程

 2、 Git 工作区、暂存区和版本库概念

工作区:就是你在电脑里能看到的目录,也就是我们的编写目录。

暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index),也就是提交上去未到版本库,但是工作去已显示提交的区域。

版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

3、创建仓库

      初始化仓库 git init   //产生.git文件

    Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。

    在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变(不像 SVN 会在每个子目录生成 .svn 目录,Git 只在仓库的根目录生成 .git 目录)。

      如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交:

    1) git add *.c

    2)  git add README

    3) git commit -m '初始化项目版本'

     我们使用 git clone 从现有 Git 仓库中拷贝项目(类似 svn checkout)。

      克隆仓库的命令格式为:

   git clone

    如果我们需要克隆到指定的目录,可以使用以下命令格式:

    git clone

    参数说明: 

         repo:Git 仓库。

          directory:本地目录。    

四、Git的基本操作

1、git init

     作用:初始化Git仓库

     描述:用 git init 在目录中创建新的 Git 仓库。 你可以在任何时候、任何目录中这么做,完全是本地化的。

命令:git init 仓库名

2、git clone

     作用:拷贝一个Git仓库到本地

     描述:使用 git clone 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改

命令:git clone [url]

3、git add

     作用:git add 命令可将该文件添加到缓存(从工作区到暂存区的过程)

命令:git add 文件名/目录名

      将css目录下所有的文件添加到暂存区

命令:git add css

​      将当前目录下所有的js文件添加到暂存区

 命令:git add *.js

      添加当前目录下所有的文件

命令: git add .

            git add -A

            git add --all

注意点:空的文件夹是会被忽略掉的,如果想要提交这个文件夹,一般会在该目录下创建一个.gitkeep文件

4、git status

     作用:git status 以查看在你上次提交之后是否有修改。

命令:git status 或者 git  status -s

      描述:该命令的时候加了 -s 参数,以获得简短的结果输出。如果没加该参数会详细输出内容

5、git diff    

       作用:执行 git diff 来查看执行 git status 的结果的详细信息

 命令:尚未缓存的改动:git diff

           查看已缓存的改动: git diff --cached

           查看已缓存的与未缓存的所有改动:git diff HEAD

           显示摘要而非整个 diff:git diff --stat

 6、git commit

      作用:使用 git add 命令将想要快照的内容写入缓存区, 而执行 git commit 将缓存区内容添加到仓库中。

命令:git commit -m "提交注释"

           如果 Git 在你对它的配置中找不到相关信息,默认会打开 vim。

           如果你觉得 git add 提交缓存的流程太过繁琐,Git 也允许你用 -a 选项跳过这一步

           git commit -a

           修改最近的一次提交说明, 如果提交说明不小心输错了,可以使用这个命令

            git commit --amend -m "提交说明"

7、git log

     作用:查询历史提交节点 

命令:git log

8、git reset 

     作用:版本回退,将版本回退到某个历史节点

命令 : git reset HEAD   //git reset HEAD 命令用于取消已缓存的内容

          git reset --hard 版本号  // 将代码回退到某个指定的版本(版本号只要有前几位即可)

          git reset --hard head~1  //将版本回退到上一次提交

9、 git reflog

     作用:查看历史命令    

命令: git  reflog        

10、git rm  

      作用:如果只是简单地从工作目录中手工删除文件

      描述:要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除,然后提交。可以用以下命令完成此项工作

命令:git rm

          git rm -f   // 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f

          git rm --cached   //如果把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中                                          删除,使用 --cached 选项即可  

          git rm –r *  //进入某个目录中,执行此语句,会删除该目录下的所有文件和子目录。

11、git mv

     作用:git mv 命令用于移动或重命名一个文件、目录、软连接。

命令:git mv 文件名 文件名 

12、git push

      作用:将本地仓库中代码提交到远程仓库

命令:git push [仓库地址] master //在代码提交到远程仓库,注意master分支必须写,不能省略

13、git pull

      作用:将远程的代码下载到本地

命令:git pull  //提交之前一定要更新,避免代码冲突

14、git remote

     作用:要查看当前配置有哪些远程仓库

命令:git remote

           git  remote add [仓库别名] [仓库地址]  //给远程仓库设置一个别名

           git  remote remove [仓库别名]  //删除仓库别名

五、Git分支管理    

1、分支的存在原因:

         我们在一个公司,大多数情况下都是一个项目多个人合作,一起开始同一个项目,这样的话,我们经常会遇到一个问题:自己未写完                的代码提交上去导致影响整个项目的运行或者是别人的代码,但是写完提交,代码丢失的可能性很大,所以这种情况下就需要分支来。                        在工作过程中,经常会碰到多任务并行开发的情况,使用分支就能很好的避免任务之间的影响。

2、创建分支

git branch (branchname)  //git提交的时候就会有一个主分支

3、切换分支 

git checkout (branchname)  //当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录

4、合并分支命令

git merge   //你可以多次合并到统一分支, 也可以选择在合并之后直接删除被并入的分支。

5、创建并切换分支

git checkout -b (branchname) 创建并切换分支,切换分支会做两件事情:1、创建一个新分支 2、把head指针指向当前的分支

6、 列出分支

git branch  //没有参数时,会列出你在本地的分支

7、删除分支

git branch -d (branchname)  //不能在当前分支删除当前分支,需要切换到其他分支才能删除

8、冲突合并

这个的话只能手动合并之后,再次提交了

你可能感兴趣的:(git的基本使用)