git创建版本库

git与svn区别

1. GIT是分布式的SVN是集中式

2. GIT把内容按元数据方式存储SVN是按文件

3. GIT分支和SVN的分支不同

4. GIT哈希算法的内容完整性要优于SVN

git安装

1:https://git-for-windows.github.io下载,(一路默认安装即可在开始菜单找到git->git bash(弹出黑框安装成功)。

    2:(弹出黑框后设置自己的名字和邮箱

$ git config --global user.name "Your Name"

$ git config --global user.email email@example.com

创建版本库

     找到一个合适的盘符尽量盘符不要有中文

     使用命令 $git init(创建版本库)

提示master创建版本库成功版本库里会有一个隐藏文件.git(使用命令ls –a可以查看),

文件添加到版本库

     新建一个文件ceshi.php随意

     第一步执行命令git add ceshi.php把文件添加到仓库

     第二步执行命令git commit –mXXX’(把文件提交到仓库-m表示提交说明最好还是写一下方便以后的操作)

查看仓库的状态

     当我们修改了ceshi.php 可以使用git status 查看

     

Git给出提示文件被修改了还没有提交到版本库但是我们想看看到底修改了什么内容呢

使用命令 git diff 来查看到底修改了哪些内容

这是我自己修改的文件可以看出‘-’删除的内容‘+’表示新增的内容

之后执行前两步的添加和提交步骤新文件就提交到了仓库中

当我们不断的对文件进行修改操作突然修改错了怎么办这是我们可以使用命令 git log来查看

现在我们看到已经提交过两个版本,(commit这一行是版本号 我们知道第一个版本是对的

第一种方法使用命令git reset --hard  HEAD^)这种方法可以回退到上一版本,(git reset –hard HEAD^^)这是回退到上上一次的版本依次类推...

 

这个提示表示现在已经回退到上一个版本如果我们已经做了1000多次的添加仓库操作,只想回退到第一次提交的,(使用命令git reset –hard 0b4e5a这个0b4e5a是版本号前六位只需要6位即可这样版本回退到你的指定版本了但是你回退到了第一个版本之后发现回退错了你在git log查看只会显示当前的版本和当前以上的版本号那就尴尬了在这有两种方法

第一种git命令窗口还没有关闭的时候鼠标往上移动会看到以往的记录只需要写上版本号就ok了第二种就是窗口关闭了不要担心 请使用命令git reflog来查看

 

了解git的工作区和暂存区

     我的工作区就是所在的文件夹

     这个wode文件夹就是工作区存文件的

     里面有一个.git隐藏文件这个就是本地版本库在这个版本库里有很多东西其中最重要的就是称stage或者index的暂存区

     再来复习一下git是怎样工作的 第一步命令 git add xxx.php  这是将文件添加到暂存区第二步就是 git commit 这是将暂存区的东西提交到master主分支上

     只要commit 提交了 你的工作区就是干净的使用命令git status 查看一下

管理修改

     这点就是说为什么git比其他版本控制系统优秀因为git跟踪并管理的是修改而并非文件举个例子

     我们编辑一下文件现在的文件内容是这样的

     

 添加一行

 

 执行命令 git add ceshi.php 先不提交 在来编辑一下

 

又添加了一行现在执行命令git commit 提交看一下

 

使用命令git status查看

 

没有添进去因为我们git commit 提交的是暂存区的内容我们的步骤是这样的

添加一行->加入暂存区->在添加一条内容->提交

第二次的修改内容我们没有加入到暂存区

如果还不明白使用命令 git diff ceshi(文件名).php 查看一下

这个命令是查看工作区和版本库里面的最新版本的区别

 

图的意思请看上面的第五步查看仓库的状态

如果想提交第二次重新git add 添加git commit 提交再执行一次就可以了

删除文件

     我们可能遇到这样的情况不小心删除了一个文件怎么回复呢

     首先添加一个新文件提交

     

我已经添加完成现在删除使用git status查看

 

告诉我们本地删除了text.php  有两个选择第一我删除错了使用命令git checkout – text.php查看一下

 

Text.php文件回来了

第二种情况我确实想删除text.php文件使用命令git rm text.php查看git status

 

主分支master上的也删除了

远程仓库

     第一步首先创建钥匙

 查看用户主目录下是否有一个隐藏文件夹.ssh 如果有看一下目录下是否有id_rsa和id_rsa.pub  如果有就跳过这一步如果没有就创建一个执行命令ssh-keygen -t rsa -C "youremail@example.com")换成自己的邮箱一路回车

 

为什么GitHub需要SSH Key呢因为GitHub需要识别出你推送的提交确实是你推送的而不是别人冒充的Git支持SSH协议所以GitHub只要知道了你的公钥就可以确认只有你自己才能推送

当然GitHub允许你添加多个Key假定你有若干电脑你一会儿在公司提交一会儿在家里提交只要把每台电脑的Key都添加到GitHub就可以在每台电脑上往GitHub推送了

    我们在这使用的远程库是github 打开网站进入注册进去不会的百度教程),进去之后

    

点击new repository创建新的项目

     

Repository name 是项目名称

     选择public 这个是免费的

     Private是收费的点击创建create repository

          

       创建成功

第二步 添加钥匙 

       

       

      

        添加自己申请的id_rsa.pub打开复制内容特别注意一个字母都不可以错

        

     点击new ssh key之后title自定义下边填上刚才复制的内容确认ok了

十一添加远程库

     在自己的任意文件夹中右键打开git bash here 直接输入命令

     $git remote add origin git@github.com:michaelliao/learngit.git

      这个绿色的是地址改成你的地址这是关联远程库的命令

      关联成功后进行克隆

      命令$git clone git@github.com:michaelliao/learngit.git

     这个地址还是上图中的地址克隆时git会给一个提示

 

      直接输入yes,继续运行 github只会跟您确认一次以后就不会了

1:还可以选择https协议但是这个协议只可以克隆代码如果你往guithub上推送会提示让你输入账号和密码 速度非常快但不方便我们推送所以我们使用ssh协议 

2:在本地库中编辑文件

怎么编辑从第一步开始看那怎么把本地库中的文件推送到github呢

使用命令git push –u origin master

红色的origin是远程库名字这个是对应上边红色origin可以自定义名字

现在推送的是master主分支但是公司不会这么推送现在是练习

3:-u参数是最开始的使用一次往后就不用-u了是为了与远程的master主分支关联起来方便以后推送的简化命令

 

查看一下github网站上传成功

 

        

十二创建与合并分支

        创建分支使用命令git branch dev创建dev分支

        切换分支使用命令git checkout dev切换到dev分支了

       还可以直接使用  git checkout -b dev

        我们查看一下现在的分支git branch

        

        *表示当前所在分支

        我们在dev分支上编辑代码提交到github

         

        表示提交成功下面我们来合并分支切换到master进行合并

十三解决冲突

第一步如果我们进行小组开发一定会有文件内容冲突的下面演示

       使用命令 git diff查看

我们打开 ceshi.php

修改完成重新添加提交到github就ok了

 十四忽略特殊文件

   

1. 忽略操作系统自动生成的文件比如缩略图等

2. 忽略编译生成的中间文件可执行文件等也就是如果一个文件是通过另一个文件自动生成的那自动生成的文件就没必要放进版本库比如Java编译产生的.class文件             

3. 忽略你自己的带有敏感信息的配置文件比如存放口令的配置文件

解决办法Git工作区的根目录下创建一个特殊的.gitignore文件然后把要忽略的文件名填进去Git就会自动忽略这些文件

 十五git搭建远程版本库

 GitHub就是一个免费托管开源代码的远程仓库但是对于某些视源代码如生命的商业公司来说既不想公开源代码又舍不得给GitHub交保护费那就只能自己搭建一台Git服务器作为私有仓库使用

        要有一个虚拟机我的是centos7)

1、首先需要安装Git可以使用yum源在线安装

[root@localhost Desktop]# yum install -y git

2、创建一个git用户用来运行git服务

# adduser git  

3、初始化git仓库这里我们选择/data/git/learngit.git来作为我们的git仓库

[root@localhost git]# git init --bare learngit.git  

Initialized empty Git repository in /data/git/learngit.git/  

执行以上命令会创建一个裸仓库裸仓库没有工作区因为服务器上的Git仓库纯粹是为了共享所以不让用户直接登录到服务器上去改工作区并且服务器上的Git仓库通常都以.git结尾然后owner改为git

[root@localhost git]# chown git:git learngit.git  

4、创建SSH Key

 

$ssh-keygen -t rsa -C "youremail@example.com"

 

6、Git服务器打开RSA认证

然后就可以去Git服务器上添加你的公钥用来验证你的信息了Git服务器上首先需要将/etc/ssh/sshd_config中将RSA认证打开

1.RSAAuthentication yes     

2.PubkeyAuthentication yes     

3.AuthorizedKeysFile  .ssh/authorized_keys

这里我们可以看到公钥存放在.ssh/authorized_keys文件中所以我们在/home/git下创建.ssh目录然后创建authorized_keys文件并将刚生成的公钥导入进去

然后再次clone的时候或者是之后push的时候就不需要再输入密码了

Zhu@XXX/E/testgit/8.34

$ git clone git@192.168.8.34:/data/git/learngit.git

Cloning into 'learngit'...

warning: You appear to have cloned an empty repository.

Checking connectivity... done.

 

7、禁用git用户的shell登陆

出于安全考虑第二步创建的git用户不允许登录shell这可以通过编辑/etc/passwd文件完成找到类似下面的一行

git:x:1001:1001:,,,:/home/git:/bin/bash  

最后一个冒号后改为

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell  

这样git用户可以正常通过ssh使用git但无法登录shell因为我们为git用户指定的git-shell每次一登录就自动退出

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 originhttps://github.com/tugenhua0707/testgit关联一个远程库

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

          git clonehttps://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分支推送到远程库对应的远程分支上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值