设为首页 收藏本站
查看: 1150|回复: 0

[经验分享] Git入门:安装环境 版本回退 仓库实战 搭建git服务端

[复制链接]

尚未签到

发表于 2018-9-17 09:16:32 | 显示全部楼层 |阅读模式
  备份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本次修改了什么内容,相比较仓库里面的版本
  到此为止,一些简单常用的命令,也就熟悉了一些。
DSC0000.png

  【版本回退】
  实验版本回退功能,首先要多提交几次仓库更新内容,即变动仓库,执行add 和 commit。
  查看日志:git  log
  显示所有:git  reflog
  逐行查看:git  log --pretty=oneline
DSC0001.png

  指定版本回退: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 ,我们也先登录注册一个账号,之后创建一个仓库,
DSC0002.png DSC0003.png

  我们在下载克隆仓库的时候,都会指定路径,如右上有两种可选方式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
DSC0004.png

  扩展:有时我们看懂了别人的仓库有好东西,想克隆到本地,之后是上传到自己的仓库,如下:
  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创建分支:
DSC0005.png

DSC0006.png

  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)%Creset' --abbrev-commit"
  5、保留现场
  这个功能不太常用,简单说一下:当你正进行一个项目时,突然运营找了过来,说线上有个东西bug了,需要马上处理,你又不想提交进行了一半的工作,若不提交,就会一直保留一个git状态,看起来很不舒服。此时我们就需要保留现场
  保留现场:git  stash
  恢复现场:git  stash  apply
  查看现场:git  stash  list
  指定恢复:git  stash  apply  stash@{1}
DSC0007.png

  【搭建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
  //之后就和服务端仓库建立连接,开始上传版本等。
  ---------------------------------------------------------------------------------------------------



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-588091-1-1.html 上篇帖子: 【Step by step】win10下使用git(修改中) 下篇帖子: 提交到git时忽略.project等文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表