欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Git

程序员文章站 2022-02-16 19:22:38
...

版本控制

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

作用

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

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

主流版本控制器有如下:

  • 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 [email protected]

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

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-****** -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上

相关标签: 知识点 git