Git

版本控制

是一种再开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份一边恢复以前的版本的软件工程技术

作用

  • 实现跨区域多人协同合作开发
  • 追踪和记载一个或者多个文件的历史记录
  • 组织和保护你的源代码和文档
  • 统计工作量
  • 并行开发、提高开发效率
  • 跟踪记录整个软件的开发过程
  • 减轻开发人员负担,节省时间,同时降低人为错误

简单来说就是用英语管理多人协同开发项目技术

主流版本控制器有如下:

  • Git
  • SVN(subversion)
  • CVS(concurrent Version System)
  • VSS(Micorosoft Visual SourceSafe)
  • TFS(Team Foundation Server)

本地版本控制

为了解决复制项目目录方式保存不同的版本带来的容易犯错,有时候会混肴所在的工作目录等问题,人们很久以前就开发了许多种本地版本控制系统,大多都是采用某种简单的数据库来记录文件的历次更新差异。

集中化版本控制

(Centralized Version Control Systems,简称 CVCS)应运而生。 这类系统,诸如 CVS、SVN以及 Perforce 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。

本地版本控制系统也存在类似问题,只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险。

分布式版本控制

每个人都拥有全部代码

不会因为服务器损坏或者网络问题,造成不能工作的情况!

于是分布式版本控制系统(Distributed Version Control System,简称 DVCS)面世了。 在这类系统中,像 Git、Mercurial、Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照, 而是把代码仓库完整地镜像下来,包括完整的历史记录。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。

许多这类系统都可以指定和若干不同的远端代码仓库进行交互。籍此,你就可以在同一个项目中,分别和不同工作小组的人相互协作。 你可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。

SVN和GIT区别

SVN:集中式版本控制系统,版本库是集中放在中央服务器对的,而攻的时候用的是自己的电脑,所以首先要从中央服务器得到最新版本,然后完成工作后,需要把自己昨晚的活推送到中央服务器。

集中式版本控制系统是必须联网才能工作的,对网络贷款要求高。

Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了。协同方式:如何两人同时修改同一个文件,这是,两人只需要把各自修改推送给对方,可以互相看到对方修改。Git可以直接看到更新了那些代码和文件。

Git是目前世界上最先进的分布式版本控制系统

Git历史

Git是免费、开源的,最初的是为了辅助Linux内核开发的,代替BitKeeper

Linux,git创始人 李纳斯·托尔

基本的linux命令学习

  1. cd : 改变目录
  2. cd…回退到上一个目录
  3. pwd:显示当前所在的目录路径
  4. ls(||):都是列出当前目录中的所有文件夹,只不过||列出的内容更加详细
  5. touch:新建一个文件 如touch index.jsp 就会在当前目录下新建一个index.js文件
  6. rm:删除一个文件 如上
  7. mkdir:新建一个目录
  8. rm-r删除一个文件夹 rm-rf /f递归/父级,删除全部文件切勿尝试
  9. mv 移动文件 mv index.jsp src index.jsp
  10. reset 重新初始化终端 清屏幕
  11. clear清屏
  12. history查看命令历史
  13. help帮助
  14. exit退出
  15. #表示注释

Git环境配置

Git Bash:Unix与linux风格的命令行,使用最多,推荐

Git cmd:windows风格命令行

Git GUI:图形界面GIT

rm -rf / linux中千万不要进行这操作,删除电脑中全部文件

GIt配置

查看不同级别的配置文件

git config --system --list //系统config
git config --global --list //查看当前用户配置

设置用户名和邮箱(用户标识,必要 文件地址C:\Users\35918\gitconfig)

git config --global user.name chencong
git config --global user.email 359183954@qq.com

环境变量只是为了全局使用而已,可以不用配

Git基本理论

工作区域

Git本地有三个工作区域:工作目录(working directory),暂存区(stage/index),资源库(repository或者git derectory),如果加上远程git仓库可以分为四个工作区域:

workspace:工作区,就是你平时存放项目代码的地方

index/stage:暂存区,用于临时存放你的改动,事实上它只是个文件,保存即将提交到文件列表信息

Respository:仓库区(本地仓库),安全存放数据的位置这里面有你提交到所有版本的数据,其中HEAD指向最新放入仓库的版本

Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目中的一台电脑用于远程数据交换

Git 的工作流程

  • 在工作区添加、修改文件;
  • 将修改后的文件放入暂存区域; git add.
  • 将暂存区域的文件提交到本地仓库;
  • 将本地仓库的修改推送到远程仓库。 git commit

Git项目搭建

创建工作目录与常用指令

创建本地仓库方法:

  • 创建全新的仓库

    $ git init
    
  • 克隆远程仓库

    $ git clone[url]   #gitee 或者github 找到项目克隆下载https://gitee.com/kuangstudy/openclass.git
    

Git文件操作

文件四种状态

  • untracked:未跟踪,此文件还在文件夹中,并没有加入到git库,不参与版本控制,通过git add状态变为stage
  • Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
  • Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改
  • Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified

查看文件状态

git status[filename]  #查看指定文件状态
git status #查看所有文件状态
git add .  #添加所有文件到暂存区
git commit -m #提交暂存区中的内容提交到本地仓库,  -m 提交信息

忽略文件

IDEA项目中不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等

主目录下建立.gitignore文件

*.txt      忽略所有.txt文件
!lib.txt    但lib.txt除外
/temp       仅忽略项目根目录下的todd文件,但不包括其他目录的temp
build/      忽略build/目录下所有文件
doc/*.txt	会忽略doc/notes.txt 但不包括/doc/server/arch.txt

使用码云

github有墙,比较慢,**国内一般使用gitee,**公司有时候会搭建自己服务器gitlab

设置本机绑定SSH公钥,实现免密码登录,码云是远程仓库,我们平时工作再本地仓库

#进入到 C:\Users\35918\.ssh
#git指令输入
ssh-keygen -t rsa
生成公钥文件.pub

IDEA中集成Git

  • 新建项目,绑定git

    将我们远程的git文件目录拷贝到项目中即可

  • 修改文件,使用IDEA操作git

    IDEA创建项目时,项目目录就是git目录

    • 添加到暂存区
    • commit提交
    • push到远程仓库

    操作可以用命令进行

  • 提交测试

Git分支

#列出所有本地分支
git branch
#列出所有远程分支
git branch -r
#新建一个分支,留在当前分支
git branch [branch-name]
#新建一个分支,切换到该分支
git checkout -b [branch]

#合并指定分支到当前分支
git merge [branch]
#删除分支
git branch -d[branch-name]
#删除远程分支
git push origin --delete[branch-name]
git branch -dr [remote/branch]

如果多个分支并行执行,就会导致我们代码不冲突,也就是同时存在多个版本!

master主分支应该分厂稳定,用来发布新版本,一般情况下不允许再上面工作,工作一般情况下再新建的dev分支上工作,工作完后,比如要发布,或者说dev分支代码稳定后可以合并到主分支master上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值