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

[经验分享] 谈谈分布式版本管理工具Git

[复制链接]

尚未签到

发表于 2018-1-12 21:43:08 | 显示全部楼层 |阅读模式
一.主流的版本管理工具
  目前在企业中比较主流的版本管理工具有:GIT、SVN、CVS等等。

二.什么是Git?
  Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

三.Git与SVN的的主要区别?

  Git是分布式版本控制系统,那么它不但和SVN一样有中央服务器,而且每个人的电脑也是一个完整的版本库,这样,工作的时候联网就不是必须的了,因为版本可以先在自己的电脑上进行管理。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给中央服务器,然后再重新去拉下代码,就可以互相看到对方的修改了。

  SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就尴尬了。
四.如何安装Git?

1. windows下安装git
  在网上下载如下图所示的安装文件
  
  进行默认安装以后,就会在开始菜单中找到如下图所示的客户端快捷方式
  
2. linux下安装git  

sudo yum -y install git  


3. 安装成功后,还需要进行如下设置:

因为git是分布式版本控制系统,所以安装成功首先设置一个用户名和一个邮箱作为一个标识.
4. 注意:git config –global 参数,有了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。
五.Git的基本操作

1. 版本库
  版本库又名仓库,英文名repository,你可以简单的理解一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”.
2. 创建版本库(初始化)  

git init  


这时候你当前目录下会多一个.git的目录,这个目录是Git来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,否则会把git仓库给破坏了.
3. 说明
  首先要明确下,所有的版本控制系统,只能跟踪文本文件的改动,比如txt文件,网页,所有程序的代码等,Git也不列外,版本控制系统可以告诉你每次的改动,但是图片,视频这些二进制文件,虽能也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是知道图片从1kb变成2kb,但是到底改了啥,版本控制也不知道。
4. 添加文件到暂存区  

git add fileName1,fileName2...  git add . (添加所有已经修改的文件到暂存区)
  


5. 提交暂存区文件到远程仓库  

git commit -m 'commit description'  


6. 查看暂存区状态  

git status  


7. 查看暂存区中代码的改变  

git diff fileName  


8. 查看暂存区的提交日志  

git log  


9. 回退已提交到暂存区但尚未push到远程仓库的代码  

git reset --hard commit_version  


其中commit_version就是通过日志看到的每次提交的全局唯一版本号
10. 回退到上一版本  

git reset --hard HEAD^  


11. 查看暂存区内容  

git reflog  


12. 查看当前分支,其中前面有*符号的表示当前分支  

git branch  


13. 查看远程分支信息  

git branch -a  


14. 切换分支  

git checkout branchName  


15. 新建分支  

git checkout -b newBranchName  


16. 合并分支  

git merge branchName  


17. 删除本地分支  

git branch -D branchName  


18. 删除远程分支  

git branch -r -d origin/branch-name (只删除远程仓库test分支,本地保留)  
git push origin :branch-name
  


19. 添加远程仓库位置  

git remote add origin remote_url  


这样我们就指定了当前git的远程仓库地址。
20. push本地代码到远程仓库  

git push -u origin master (-u是把本地分支和远程分支做关联,第一次提交代码到新分支的时候需要,以后只需要使用git push就可以)  


注:-u 等于 git push --set-upstream origin branch-name
21. 克隆远程仓库代码到本地  

git clone remote_url  


22. 隐藏本地修改到缓存区  

git stash  


23. 恢复缓存区中的修改
  1).恢复修改,且不删除stash内容  

git stash apply  


  2).恢复以后,直接删除stash内容  

git stash pop  


24. 查看远程仓库信息  

git remote -a  


25. 查看远程仓库的详细信息  

git remote -v  


26. 拉取远端最新代码  

git pull  


27. 设置全局别名
  

git config --global alias.ac '!git add -A && git commit -m'  

  这样我们就可以直接使用:git ac 'why you modify' 就可以完成git add和git commit -m 操作
  28. 删除文件
  

git rm file-name  

  29. 删除暂存区或分支上的文件,但本地工作区间保留,只是不希望这个文件被版本控制
  

git rm --cache file-name  

  30. 从远程获取最新的版本信息到本地有以下两个命令:
  

git fetch origin master  
git pull origin master
  

  上面的命令相当于:
  

git fetch origin master (从远程的origin的master主分支下载最新的版本到origin/master分支上)  
git log -p master..origin/master (比较本地的master分支和origin/master分支的差别)
  
git merge origin/master  (将远程的最新版本合并到本地)
  

  还相当于如下:
  

git fetch origin master:tmp (从远程获取最新的版本到本地tmp分支)  
git diff tmp (比较不同)
  
git merge tmp (进行合并)
  

  现实情况下git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并.
  31. rebase指定分支(把指定分支上的新提交在当前分支做一次)
  

git fetch  
git rebase origin/branch-name
  
解决冲突
  
git add .
  
git rebase --continue
  
git push
  


高效撤销各个阶段的代码的方法请移步:如何高效撤销Git管理的文件在各种状态下的更改

六.总结

  到这里,我们就对git的使用以及与svn的不同有了一个大致的了解,这可以帮助我们很好的使用git,并且让我们可以应对大多数开发中使用的情况,下次有机会我们再来聊一聊gitflow以及我们公司使用的变种来更好地促进团队协助开发以及分支管理。

运维网声明 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-434426-1-1.html 上篇帖子: 如何发布一个自定义Node.js模块到NPM(详细步骤,附Git使用方法) 下篇帖子: git常用命令及分支简介
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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