git版本控制

shellhtml

1.什么是shell?node

  在计算机中shell俗称壳,用来区别Kernel(核),是指"提供使用者使用界面的软件",(命令解析器),它相似于DOS下的command和后来的cmd.exe,linux

用来接收用户命令,而后调用相应的应用程序.git

2shell分类github

   1.图形界面shell:  经过提供有好的可视化界面,调用相应的应用程序,如:windows系列操做系统,Linux系统上的图形化应用程序GNOME,KDE等;shell

     2.命令行shell  :  经过键盘输入特定的命令的方式,调用相应的应用程序,如windows系统的cmd.exe,Windows  PoweShell,linux系统的Bourne shell,Bourne Again shell(bash)等;数据库

1.3  认识bash和这个shellwindows

       在window系统下使用bash,须要一个软件,这个软件模拟集成了bash大部分命令;bash

        各个shell的功能都差很少,Linux默认使用bash,服务器

   1.  bash命令格式

    命令  [-options][参数],   tar  zxvf  demo.tar.gz

   查看帮助:  命令  --help

  2  bash 常见命令

     pwd 查看当前目录

     cd   切换目录

     ls   查看当前目录下内容   ls  -al

     mkdir 建立目录  mkdir  wjx

    touch  建立文件    touch  index.html

    cat  查看文件所有内容   cat  index.html

    more  less  查看文件  more/etc/passwd/ ,less/etc/passwd

    rm  删除文件    rm index.html ,  rm -rf  blog   递归删除

   rmdir  删除文件夹,只能删除空文件夹,不经常使用

   mv   移动文件或者重命名  如:  mv index.html   ./demo/index.html

    cp  复制文件  cp index.html  ./demo/index.html

    head  查看文件前几行    head  -5  index.html

    tail   查看文件后几行   -n -f  如  tail index.html   , tail -f -n  5 index.html

    tab   自动补全  连an两次会将全部匹配内容显示出来

    history  查看操做历史

     ssh  远程登陆  如:  ssh root@gitlab.study.com

    >和  >>重定向    如:  echo  hello world! > README.md,  >覆盖 >>追加

     wget  下载 , 如  wget https://modejs.org/dist/v4.4.0/node-v4.4.0tar.gz

    tar 解压缩,如 tar zxvf node-v4.4.0.tar.gz

    curl  网络请求,如 curl  http://www.baidu.com

   whoami   查看当前用户

   '|'  管道符能够将多个命令连接使用,上一次(命令)的执行结果会当成下一次的执行参数;

    grep 匹配内容,通常结合管道符使用

  1.4 vi编辑器

  如Windows下的记事本,vi编辑器是Linux下的标配,经过它,咱们能够建立文件,编辑文件,他是一个随着系统一块儿安装的文本编辑软件;

  1,三种模式

    vi 编辑器提供了三种模式,  分别是 :命令模式 , 插入模式 ,底行模式;每种模式下用户所能进行的操做是不同的;

3种模式的切换以下图所示:

2.使用编辑器

                                         git使用

1.安装

Window安装

http://git-scm.com/download/win下载Git客户端软件

Linux安装

CentOS发行版:sudo yum install git

Ubuntu发行版:sudo apt-get install git

Mac安装

打开Terminal直接输入git命令,会自动提示,按提示引导安装便可。

git三种状态 已提交,已修改,已暂存;

 git三个工做区域:Git仓库,工做目录,暂存区域,

    Git仓库目录是git用来保存项目的元数据和对象数据库的地方,这是git最重要的部分,从其余计算机克隆仓库时,拷贝的就是这里的数据;

   工做目录是对项目的某个版本独立提取出来的内容,这些从git仓库的压缩数据库提取出来的文件,放在磁盘上供你使用和修改;

  暂存区域是一个文件,保存了下次将要提交的文件信息列表,通常在git仓库目录中;

基本的Git工做流程以下:

    一、在工做目录中修改文件。

    二、暂存文件,将文件的快照放入暂存区域。

    三、提交文件,找到暂存区域的文件,将快照永久性存储到Git仓库目录。

•           Git本地仓库

Git本地仓库指的是开发者开发设备中的仓库

•                    Git基础

命令行方式:任意目录(建议开发目录)右键 > Git Bash Here

1、配置用户

  配置用户的意义在于记录开发者信息,以便在版本控制记录开发者的操做行为,如lion于2016-08-24解决了一个bug。

git config --global user.name "自已的名字"

git config --global user.email "自已的邮箱地址"

--global 配置当前用户全部仓库

--system 配置当前计算机上全部用户的全部仓库

注:配置用户只须要执行1次,能够重复使用。

2、初始化仓库

要用git进行版本控制,须要将现有的项目初始化为一个仓库,或者将一个已有的使用git进行版本控制的仓库克隆到本地;

a) git init

git init只是建立了一个名为.git的隐藏目录,这个目录就是存储咱们历史版本的仓库,ls -al 能够查看。

b) 假如公司已有项目用了Git,那咱们就利用克隆

git clone 仓库地址

执行完这个命令,会在当前目录下生成一个Monment目录(默认和仓库名称相同),这个即是已有一个使用Git管理的项目。

3、查看文件状态

初始化仓库后即可以进行开发了,进入到刚刚建立好并初始为仓库的目录,添加咱们开发须要的文件。

经过git status能够检测当前仓库文件的状态;

注:git会忽略空的目录

4、添加文件到暂存区

假设通过一段时间的开发后,须要把已开发的部分存起来,使用git add 添加到暂存区。

git add 文件名 “*”或-A表明全部;

放到暂存区的文件被标记成了绿色,等待提交。

注:颜色是工具给添加的,目的是增长可读性并非git统一的。

五、撤销更改

继续咱们的开发

再次git status能够再次查看仓库状态;

说明index.html再次被修改了,并被标记了红色。

又通过一段时间后发现新开发的部分有Bug,想要回到以前状态,可使用git checkout 文件名。

注:从暂存区还原原到工做区;

5、提交文件

通过一个相对较长阶段开发或者一个功能开发完成了,就能够提交到本地仓库了,永久保存了。

git commit -m '备注信息';

将暂存区被标记成绿色的文件,所有提交到本地仓库存储。

这时git status查看状态

没有什么可提交的,变的很干净

6、查看提交历史

反反复复开发了不少的功能了,经过git log查看一下提交的历史。

咱们能够查看到一次次提交记录

commit 81b1e4fc2ae178caedf4575596377a80a6f1e73f

表明一次提交的惟一ID,通常称为SHA值。傻?

注:按键盘q键退出。

7、再次检测仓库文件状态

隔了好些天后,继续开发

git status 查看状态

又提示有修改,等待从新添加到暂存区。

8、从新添加暂存区而后提交

九、再次查看历史

git log 可查到全部提交历史

这时能够查看到更多提交历史。

这时关掉全部目录甚相当机!

10、恢复上一次提交的状态

经过SHA值能够回到以前某一次的提交(时光倒流)

git reset --hard c888a614e072e2这样便回到了支付功能的状态

git log再次查看发现最后一次提交成了支付功能了

•                    Git分支

 

在咱们的现实开发中,需求每每是五花八门的,同时开发个需求的状况十分常见,好比当你正在专一开发一个功能时,忽然有一个紧急的BUG须要你来修复,这个时候咱们固然是但愿在可以保存当前任务进度,再去修改这个BUG,等这个BUG修复完成后再继续咱们的任务。如何实现呢?

经过Git建立分支来解决实际开发中相似的问题。

在Git的使用过程当中一次提交称为历史记录(版本),而且会生成一个惟一的字符串,

这个串能够表明某一个历史版本(实际使用只取前面几位就能够),

值得注意的是全部的提交(commit)实际上都是在分支(branch)的基础上进行的。

当咱们在初始化仓库的时候(其实是产生第1次提交时),Git会默认帮咱们建立了一个master的分支,而且有指针(HEAD)指到了末端。

指针(HEAD)用来标明当前处于哪一个分支的哪一个版本,如上图指的处于master分支的最后1个版本。

咱们也能够建立自已的分支;

1、建立分支

git branch hotfix

新的分支会在当前分支原有历史版本的结点上进行建立,我称其为子分支;

新建的子分支会继承父分支的全部提交历史。

二、切换分支

git checkout hotfix      HEAD如今又指向了hotfix的末端。

3、再次提交操做

修改bug后,提交;

此次的提交历史版本就会记录在hotfix这个分支上了,而且HEAD伴随hotfix在移动。

4、当咱们再次切回到master

当咱们切换回master后,HEAD指向了master分支的末端,而且咱们观察发现咱们的文件内容仍是原来的“模样”

5、继续以前的开发

总结:当咱们git checkout branchname时,HEAD会自动指向对应分支的末端,工做目录中的源码也会随之发生改变。

这个时候咱们就在hotfix这个分支上修复了这个BUG,而咱们原来在master分支上的操做并未受到影响。

思考一个问题:

如今master这个分支上是否包含了hotfix的修复呢?

实际上从上图能够看出这时的master分支并无包含有hotfix的修复。

6、合并(融合)分支

这时master会有两个父结点了,master便包含了hotfix里的修复了;

7、删除分支

git branch -d hotfix

这时用来修复BUG建立的hotfix分支已经没有用处了,咱们能够将它删除。

•           Git远程(共享)仓库

 

   经过上面学习咱们能够很好的管理本地版本控制了,但是若是咱们下班回到家里忽然来了灵感受得有部分代码能够优化,若是能接着公司电脑上的代码继续写该有多好呀!另外一种情形,假设项目比较大,不一样的功能模块由不一样的开发人员完成,不一样模块儿之间又不免会依赖关系,这时若是咱们的代码互相合并(融合)该有多好呀!全部模块开发完毕后,须要整合到一块儿,要能作到准确无误该有多好呀!

借助一个远程仓库,你们能够共享代码、历史版本等数据,即可以解决以上遇到的全部问题,在学习远程仓库前咱们先来学习git clone path这个命令。

3、建立共享仓库

Git要求共享仓库是一个以.git结尾的目录。

mkdir repo.git 建立以.git结尾目录

cd repo.git 进入这个目录 

git init --bare 初始化一个共享仓库,也叫裸仓库 注意选项--bare  

这样咱们就建好了一个共享的仓库,但这时这个仓库是一个空的仓库,而且不容许在这个仓库中进行任何修改。

  4、向共享仓库共享(同步)内容 

将自已开发的项目同步到这个目录中,其它开发者就能够共享你开发的项目了。

一、进入到yike目录

二、git push ../repo.git master

这样便把yike中的项目同步进了repo.git中。

5、从共享仓库里取出内容

一、新建立一个目录(模拟另外一个开发者)

二、git clone ./repo.git demo

经过repo.git共享仓库,咱们轻松获得了一个yike的副本

6、经过demo仓库向repo.git共享内容

进入到demo里,咱们作一些修改

cd demo

git push ../repo.git master

7、在360仓库从repo.git获取共享的内容

cd yike

git pull ../repo.git master

奇迹彷佛发生了,咱们轻松的将demo仓库里的内容,经过repo.git共享给了yike仓库。

惊喜不断,问题也老是不断,咱们发现咱们这个共享的仓库只是放到了本地的,其它人是没有办法从咱们这个共享仓库共享内容的!!!

咱们把这个共享的仓库放到一台远程服务器上,问题不就解决了吗?

•           gitHubgitLab

若是咱们熟悉服务器的话,咱们彻底能够将上述的步骤在咱们的远程服务器上进行操做,而后再作一些登陆权限的设置,就可很是完美的搭建一个共享服务器了。其实为了更好的管理咱们的仓库,一些第三方机构开发出了Web版仓库管理程序,经过Web界面形式管理仓库。----------------gitHub

1、注册帐号并完善资料

2、建立共享仓库   右上角 New respository

3、填写仓库资料

4、共享仓库

远程地址特别长,咱们能够给他起一个别名

git remote add origin git@github.com:Botue/repo.git

这样origin 就表明 git@github.com:Botue/repo.git

当咱们经过git clone 从共享仓库获内容时,会自动帮咱们添加origin到对应的仓库地址,例如:git clone git@github.com:Botue/repo.git 会自动添加origin 对应 git@github.com:Botue/repo.git

5、生成密钥

ssh-keygen -t rsa 而后一路回车,这里会在当前用户生成了一个.ssh的文件夹

将id_rsa.pub公钥的内容复制

打开gitHub的我的中心

打到SSH keys

到此咱们即可以经过gitHub 提供的Web界面来管理咱们的仓库了。

咱们发现经过gitHub管理仓库实在是太方便了,但是只能无偿使用公开仓库,自已公司的代码固然不能公开了,但是私有仓库又是须要交“保护费”的,无耐国人仍是比较喜欢免费的,网络界老是有不少雷峰的,好比gitLab!!!

•           命令汇总

git config配置本地仓库

经常使用git config --global user.name、git config --global user.email

git config --list查看配置详情

git init 初始一个仓库,添加--bare能够初始化一个共享(裸)仓库

git status 能够查看当前仓库的状态

git add“文件” 将工做区中的文件添加到暂存区中,其中file但是一个单独的文件,也能够是一个目录、“*”、-A

git commit -m '备注信息' 将暂存区的文件,提交到本地仓库

git log 能够查看本地仓库的提交历史

git branch查看分支

git branch“分支名称” 建立一个新的分支

git checkout“分支名称” 切换分支

git checkout -b deeveloper 建立并切到developer分支

git merge“分支名称” 合并分支

git branch -d “分支名称” 删除分支

git clone “仓库地址”获取已有仓库的副本

git push origin “本地分支名称:远程分支名称”将本地分支推送至远程仓库,

git push origin hotfix(一般的写法)至关于

otfixgit push origin hotfix:h

git push origin hotfix:newfeature

相关文章
相关标签/搜索