Git基础教程

目录

一、Git简介

  • Git是一个开源的分布式版本控制系统,能够有效、高速的处理从很小到很是大的项目版本管理。Git是Linus Torvalds 为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
  • Git的主要功能有:
    1. 文件备份
    2. 版本管理
    3. 多端共享
    4. 团队合做
  • Git和SVN的区别
    1. Git是分布式的,SVN是集中式
        这是Git和SVN最核心的区别。好处是跟同项目的其余开发人员不会有太多的冲突,本身写的代码放在本地,一段时间后再提交、合并,也能够不用联网在本地提交;
    2. Git把内容按元数据方式存储而SVN是按文件存储
        全部的资源控 制系统都是把文件的元信息隐藏在一个相似.svn,.cvs等的文件夹里。若是你把.git目录的体积大小跟.svn比较,你会发现它们差距很大。由于.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上全部的东西,例如标签,分支,版本记录等。
    3. GIT的内容完整性要优于SVN
        GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时下降对版本库的破坏。
    4. 网络依赖性
        Git下载下来后,在本地没必要联网就能够看到全部的log,很方便学习,SVN却须要联网;
    5. 提交流程
        SVN在Commit前,咱们都建议是先Update一下,跟本地的代码比对没问题,并确保开发的功能正常后再提交,若是忘记Updata就Commit,会常常发生错误,耽误开发时间,Git由于多了添加到暂存区的步骤,这种出错状况会少些。   

二、各系统Git安装

2.1 linux系统安装Git

  • 若是是Debian或Ubuntu可使用下列命令完成Git的安装。
$ sudo apt-get install git
复制代码
  • 其余Linux版本,能够直接经过源码安装。先从Git官网git-scm.com/downloads下载源码,而后解压,依次输入下列命令完成Git安装。
$ ./config
    $ make
    $ sudo make install
复制代码

2.2 Mac OS系统安装Git

    1. 经过homebrew brew.sh/ 安装
    1. 经过AppStore安装Xcode,Xcode集成了Git,不过默认是没有安装的,选择菜单“Xcode”>“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就能够完成安装了。

2.3 Windows系统安装Git

  • 能够从Git官网直接下载安装程序,按照默认安装便可。安装完成后运行Git Bash,弹出下图窗口表示安装成功。
    windows Git

三、Linux经常使用命令

  • Git Bash使用的是Linux命令,下面列出了Linux的一些经常使用命令供你们参考。
rm -rf 文件夹名     //删除文件夹(慎用!若是不指定文件夹将会删除当前目录下全部文件夹,并且被删除的文件不能恢复!!!)
    rm 文件名           //删除文件
    mkdir 文件夹名      //建立文件夹
    cd 目录名           //改变目录
    cd ../              //返回上级目录
    ls -al              //显示当前目录全部文件(包括隐藏文件)
    touch 文件名        //建立文件
    cat 文件名          //查看文件
    mv 文件名 目标路径  //移动文件
    echo 内容 > 文件名  //输入内容
    echo 内容 >> 文件名 //追加内容
    vi 文件名           //用vi编辑文件
        i               //插入模式
        esc键           //退出编辑模式
        :q!             //强制退出
        :wq             //保存后退出
复制代码

四、Git分区

  • Git分为工做区、暂存区和版本区
    • 工做区:代码(文件)编辑的地方
    • 暂存区:暂时缓存文件的地方,Git对比SVN来讲,SVN中是没有暂存区这个概念,代码直接从工做区提交到版本区,可是这样有很差的地方。在git中,暂存区的做用是:
      • 1.为了不工做过程当中出现的一些误操做,保护工做区和版本区(版本回退和撤销)
      • 2.能够进行分支处理
    • 版本区:本地最终代码存放的地方,从版本区中将文件提交到远程github仓库中
  • 查看文件状态
    $ git status
    复制代码
    • 工做区文件为红色
    • 提交到暂存区的文件为绿色
    • 提交到版本区查看文件状态会显示nothing to commit, working tree clean

五、Git初始化

  • 安装完成后须要设置用户名和邮箱
$ git config --global user.name "YourName"              //设置用户名
    $ git config --global user.email "email@example.com"    //设置邮箱
复制代码

  若是用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,之后你全部的项目都会默认使用这里配置的用户信息。
  若是要在某个特定的项目中使用其余名字或者电子邮箱,只要去掉 --global 选项从新配置便可,新的设定保存在当前项目的 .git/config 文件里。html

  • 初始化Git(建立工做区)
$ cd d:git          //切换到须要初始化的目录
    $ git init          //初始化
复制代码
  • 当前目录后面出现(master)就是已经被git管理了,master是默认分支,文件夹里会新建名为.git的隐藏文件夹
    master
    .git
  • 若是要取消当前文件夹被Git管理,删除当前目录下的.git文件夹便可,删除命令(慎用!若是不指定文件夹将会删除当前目录下全部文件夹,并且被删除的文件不能恢复!!!):
$ rm -rf .git
复制代码
  • 不要在文件夹里初始化,而后再进子文件夹初始化,由于项目不能嵌套项目。

六、提交文件

-am

$ git add 文件名                  //将工做区文件提交到暂存区
    $ git add .                       //将工做区所有文件提交到暂存区
    $ git rm --cached 文件名          //删除暂存区文件
    $ git rm --cached . -r            //递归删除暂存区
    $ git commit -m "版本描述"        //提交到版本区
    $ git commit -am "版本描述"       //从工做区直接提交到暂存区和版本区,文件须要提交到暂存区一次
    $ git log                         //查看日志
复制代码

七、文件比较与版本切换

7.1 文件比较

diff

$ git diff                        //比较工做区和暂存区
    $ git diff head                   //比较工做区和版本区
    $ git diff --cached               //比较暂存区和版本区
复制代码

7.2 版本切换

checkout

$ git checkout .                  //从暂存区将工做区所有覆盖
    $ git checkout 文件名             //从暂存区将工做区指定文件覆盖
    $ git reset HEAD                  //从版本区拉取上一版本到暂存区
    $ git reset --hard 版本号         //版本区变动到指定版本
    $ git reset HEAD^                 //版本区返回到上一版本,有几个^就表明返回上几个版本
    $ git reflog                      //查看全部版本区版本
    $ git log --oneline               //查看版本区日志(单行显示)
    $ git log --graph                 //查看版本区日志(图形化显示)
复制代码

八、分支

  • 要先提交一次建立主分支,HEAD指针默认指向master分支,每次提交到版本区就被视做为一个节点,在主分支的基础上添加一个分支,在分支上进行提交,最后切换到主分支来合并分支。
  • 若是分支文件没有冲突Git能够自动合并,若是有冲突须要手动删除不想要的保留想要的代码,手动解决完成后再进行commit操做。
    branch
$ git branch                //查看本地分支
    $ git branch -r             //查看全部远程分支
    $ git branch -a             //查看全部本地和远程分支
    $ git branch 分支名         //建立分支
    $ git checkout 分支名       //切换分支,切换HEAD指针指向
    $ git checkout -b 分支名    //建立并切换分支
    $ git branch -d 分支名      //删除分支,有修改但未合并的分支不能删除
    $ git branch -D 分支名      //强制删除分支,删除分支不能在当前分支里面
    $ git merge 分支名          //合并分支
复制代码
  • 咱们有时会遇到这样的状况,正在dev分支开发新功能,作到一半时有人过来反馈一个bug,让立刻解决,可是新功能作到了一半你又不想提交,这时就可使用git stash命令先把当前进度保存起来,而后切换到另外一个分支去修改bug,修改完提交后,再切回dev分支,使用git stash pop来恢复以前的进度继续开发新功能。

stash

$ git stash                   //存储最新进度文件,暂存区文件覆盖到工做区
    $ git stash save '暂存说明'   //存储文件附加说明
    $ git stash list              //进度文件列表
    $ git stash pop               //还原最新的进度文件到工做区,并将储存的进度删除
    $ git stash pop --index       //恢复进度到工做区,在储存进度以前工做区提交过暂存区,也将暂存区恢复
    $ git stash pop stash@{1}     //恢复指定的进度到工做区,stash@{1}为进度ID,能够用过git stash list查询
    $ git stash apply             //除了不会删除储存的进度,其余与git stash pop命令相同
    $ git stash apply --index     //除了不会删除储存的进度,其余与git stash pop --index命令相同
    $ git stash apply stash@{1}   //除了不会删除储存的进度,其余与git stash pop stash@{1}命令相同
    $ git stash drop stash@{1}    //删除一个储存的进度。若是不指定id,则默认删除最新的存储进度
    $ git stash clear             //删除全部储存的进度
复制代码

九、GitHub

9.1 注册登陆

  • 访问GitHub主页,输入用户名、邮箱、密码进行登陆
    登陆
  • 没有帐号能够按步骤进行注册
    注册

9.2 远程仓库

  • 建立仓库
    主页
    建立仓库
  • 关联远程仓库
    关联远程仓库
  • 建立一个新项目
$ makedir test
复制代码
  • 建立README.md
$ echo "# test" >> README.md
复制代码
  • 建立.gitignore文件,若是有不想提交的文件就写在里面
$ echo "不想提交的文件名" >> .gitignore
复制代码
  • 初始化
$ git init
复制代码
  • 提交项目
$ git add .
    $ git commit -m "first commit"
复制代码
  • git不会上传空文件夹,在空文件夹内建立.gitkeep能够上传此空文件夹
  • 关联远程仓库,别名:origin
$ git remote add origin https://github.com/SainHe/test.git
复制代码
  • 将master分支推送到远程仓库,第一次写上-u会记录别名和分支名,之后再用同样的参数就能够不用加任何参数使用git push了
$ git push -u origin master
复制代码
  • 拉取远程仓库代码至本地
$ git pull origin master
复制代码
  • 查看全部远程关联仓库
$ git remote -v
复制代码
  • 删除远程关联仓库
$ git remote rm origin
复制代码

9.3 发布静态页

  • 在项目中建立一个gh-pages的分支
git checkout -b gh-pages
    touch index.html
    echo 首页 > index.html
复制代码
  • 再将gh-pages分支提交到远程仓库
git add .
    git commit -m "message"
    git push origin gh-pages
复制代码
  • 在settings找到github-pages找到生成的网址
    settings
    github-pages

9.4 项目拉取到本地

  • 查找要拉取的项目仓库
    git
  • 复制远程仓库地址
    clone
  • 拉取到本地
$ git clone 远程仓库地址 origin
复制代码
  • 拉取到本地的文件夹默认就是git仓库并且有origin地址,能够将代码提交到本身的GitHub

9.5 更改别人代码

  • Fork是在当前项目下克隆一份,若是代码更新,不会随之更新
    Fork
  • 进入本身Fork的仓库,点击New pull request将代码请求提交给原做者
    pull
  • 只有Fork关系才能发送pull request请求
  • Pull requests查看别人提交的更改请求

9.6 添加贡献者

  • setting——Collaborators——输入要邀请合做的人点击add collaborator添加贡献者,被添加的人拥有最大权限
    Collaborators

9.7 问题留言

  • 点击Issues,能够就项目的问题给开发者留言
    Issues
相关文章
相关标签/搜索