关于windows上git的使用操作

                            windows上 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 --globaluser.name "Your Name"

    $ git config --globaluser.email email@example.com

三:创建版本库

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

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

  

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

四:文件添加到版本库

     新建一个文件ceshi.php(随意)

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

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

五:查看仓库的状态

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

    

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

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

  

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

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

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

  

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

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

 

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

第一种:在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  有两个选择,第一,我删除错了,使用命令(gitcheckout – 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 origingit@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 emptyGit 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.RSAAuthenticationyes    

2.PubkeyAuthenticationyes    

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 appearto 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 remoteadd 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分支推送到远程库对应的远程分支上

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值