备份MBR:dd  if=/dev/sda of=/data/mbr.dump bs=512 count=1

恢复MBR:dd  if=/data/mbr.dump of=/dev/sda bs=446 count=1      --- 小 Q

---------------------------------------------------------------------------------------------------

Git:Linus开发分布式版本控制系统,和Linux文件系统完美结合,win需要cygwin才可完美工作;

1、优秀案例,github.com,作为仓库,实验起来很顺手;

2、开发者可以git到线上仓库至本地,操作更改上传很是方便;

3、功能的使用,命令操作很简单。目前趋势来说:git是版本管理系统的潮流方向。

【搭建环境】

1、安装并初始化仓库

Centos:yum install -y epel-release ; yum install -y git

Ubuntu:sudo apt-get install git

windows:https://git-for-windows.github.io

mkdir  /home/gitroot

cd  /home/gitroot

git init   //初始化为git仓库,生成.git目录

2、提交文件到仓库
echo -e "123\naaa\n456\nbbb" > 1.txt
git  add 1.txt  //把1.txt添加到仓库中

git  status    //查看本地库的状态
git  commit -m "add new file 1.txt"   //把1.txt提交到仓库,-m添加文件描述

初始使用该命令会提示:
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.

这是要让我们设置用户邮箱和用户名。根据它提示设置一下即可:
git  config --global user.email "你的邮箱"
git  config --global user.name "要使用的名字"

echo -e "111111\n2222222222" >> 1.txt  //先更改一下1.txt
git  status    //查看当前仓库中的状态,比如是否有改动的文件
git  diff  1.txt  //可以对比1.txt本次修改了什么内容,相比较仓库里面的版本

到此为止,一些简单常用的命令,也就熟悉了一些。

Git入门:安装环境 版本回退 仓库实战 搭建git服务端_Linux git 版本管理 实战 入门

【版本回退】

实验版本回退功能,首先要多提交几次仓库更新内容,即变动仓库,执行add 和 commit。

查看日志:git  log

显示所有:git  reflog

逐行查看:git  log --pretty=oneline

Git入门:安装环境 版本回退 仓库实战 搭建git服务端_Linux git 版本管理 实战 入门_02

指定版本回退:git reset --hard e261f7e15   //在对文件commit提交后,想要撤回的操作

add之后回退:git reset HEAD 1.txt   //在对1.txt更改并add后,想要撤回的操作

add之前回退:git checkout -- 1.txt  //只更改了文件,还未add,想要撤回的操作

提交后删除仓库的文件:

echo  "5555555555"  >> 3.txt

git  add  3.txt

git  commit  -m  "add new file 3.txt"

rm  -f  3.txt

git  rm  3.txt

git  commit  -m  "delect file 3.txt"

【仓库实战】

1、连接远程仓库

如今用的最多的是https://github.com ,我们也先登录注册一个账号,之后创建一个仓库,

Git入门:安装环境 版本回退 仓库实战 搭建git服务端_Linux git 版本管理 实战 入门_03Git入门:安装环境 版本回退 仓库实战 搭建git服务端_Linux git 版本管理 实战 入门_04

我们在下载克隆仓库的时候,都会指定路径,如右上有两种可选方式http和ssh,如果用http需要关闭防火墙等,一般我们比较推荐ssh方式,既然是ssh协议,就要把客户端公钥复制过来;

右上角点自己头像,选settings,选SSH and GPG keys,选New SSH key,将公钥粘贴在这。

把本地的仓库推送到远程仓库:

mkdir  /home/test

cd  /home/test

git  init

git  remote add origin https://github.com/Shanwn-git/test.git  //建立连接

echo "564646" > 1.txt

git  add 1.txt

git  commit -m "add 1.txt"

git  push -u origin master  //把本地库推送到远程服务端,第二次可直接使用 git push

error:The requested URL returned error: 403 Forbidden while accessing https://github.com/Shanwn-git/test.git/info/refs
解决:vim  .git/config

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
#       url =    #将访问换为ssh协议地址即可 
        url = git@github.com:Shanwn-git/test.git
        fetch = +refs/heads/*:refs/remotes/origin/*

此时即可在github服务端查看test仓库中已经存在了1.txt文件

error:failed to push some refs to ......................
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'Note about

解决:git push -f   //强制推上去,覆盖原内容,原因:git中已有部分代码,不允许覆盖

或:git fetch  &&  git merge   //===git  pull

Git入门:安装环境 版本回退 仓库实战 搭建git服务端_Linux git 版本管理 实战 入门_05

扩展:有时我们看懂了别人的仓库有好东西,想克隆到本地,之后是上传到自己的仓库,如下:

git  clone  git://xxxxx

git  push  -u origin master  //错误:git://xxxx是以只读方式获取代码,无法直接进行push

git  clone  git@xxxx

git  push  -u origin master  //正确:不过这种方式需要输入git仓库的密码

2、分支管理

分支是版本管理很重要的概念,用法:

创建分支:git  branch  teng

查看分支:git  branch

切换分支:git  checkout  teng

删除分支:git  branch  -d  teng // git branch -D teng

合并分支:git  merge  test  //把test分支内容,合并到了master主支

注:如果master和test分支同时编辑了文件1,合并时冲突了,则需要先处理冲突再合并;

主分支贯穿所有分支,主分支操作可实时同步至分支,但分支却不能实时更新至主分支和其他分支。

原则上:master分支不可操作,创建dev分支专门用作开发,在dev创建bob分支派给各开发人员。

git  checkout  dev  //先切换到dev分支

git  merge  bob  //将bob分支合到dev分支

查看远程库信息:git remote -v 

查看远程分支:git  ls-remote  origin  //origin由远程库信息得到

连接远程分支:git  checkout  -b branch1  origin/branch1 //服务端建立分支,名字最好对应

拉取远程分支:git  pull

下图是分支的创建删除和切换,以及github创建分支:

Git入门:安装环境 版本回退 仓库实战 搭建git服务端_Linux git 版本管理 实战 入门_06

Git入门:安装环境 版本回退 仓库实战 搭建git服务端_Linux git 版本管理 实战 入门_07

3、标签管理

标签类似于快照功能,我们可以给版本库打一个标签,记录版本库状态,便于恢复。

切换分支:git  checkout  master

打标签:git  tag  v1.0

查标签:git  show  v1.0

看标签:git  tag   //tag是针对commit来打标签的,so可针对历史commit打tag

版本日志:git  log --pretty=oneline  --abbrev-commit

针对日志打标签:git  tag  v1.1  46dc8r1da

对标签进行描述:git  tag  -a v1.2  -m "this is a tag v1.3"   46dc8r1da

删除标签:git  tag -d  v1.3

推送标签:git  push origin v1.0

推送所有:git  push --tag  origin

如果本地的标签删除了,也想把远程服务端标签删除,执行如下;

git  tag  v1.3  -d

git  push  origin  :refs/tags/v1.3

4、git 别名

类似于Linux的别名alias,用来提高工作效率,可写到文件,随时拷贝到所用机器:

checkout:git  config --global alias.co checkout

commit:git  config --global alias.ci commit

branch:git  config --global alias.br branch

取消别名:git  config --global --unset alias br

查看别名:git  config --list |grep alias

查询log小技巧:

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

5、保留现场

这个功能不太常用,简单说一下:当你正进行一个项目时,突然运营找了过来,说线上有个东西bug了,需要马上处理,你又不想提交进行了一半的工作,若不提交,就会一直保留一个git状态,看起来很不舒服。此时我们就需要保留现场

保留现场:git  stash

恢复现场:git  stash  apply

查看现场:git  stash  list

指定恢复:git  stash  apply  stash@{1}

Git入门:安装环境 版本回退 仓库实战 搭建git服务端_Linux git 版本管理 实战 入门_08

【搭建git服务器】

虽然github很强大,但终归公开的,私有仓库又要花钱买,所以可以的话搭建属于公司的私有仓库。

服务器端:

yum install -y git

useradd -s /usr/bin/git-shell  git   //添加git用户,并不让git用户远程登录

cd  /home/git

mkdir  .ssh

touch  .ssh/suthorized_keys

chown  -R git.git .ssh

chmod  600 .ssh/authorized_keys

//然后将客户端的公钥放进去,测试登陆一下,会出现A shell字样,实在不放心可以先改git用户权限

//usermod -s  /bin/bash,然后登陆试试

选择作为仓库的目录

mkdir  /data/git

cd  /data/git

git init --bare sample.git  //创建裸仓库,没有工作区,只为共享。大家可以实验比较区别

chown -R  git.git sample.git

客户端:

首先要将公钥拷贝到服务端keys文件;

克隆仓库:git  clone  git@ip:/data/git/sample.git

//之后就和服务端仓库建立连接,开始上传版本等。

---------------------------------------------------------------------------------------------------