GIT版本控制工具

1 Git 概念

1.1 GIT简介

Git是目前世界上最先进的分布式版本控制系统(没有之一)

Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。项目的集成开发!

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Git 与常用的版本控制工具 CVS, Subversion(SVN) 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

1.2 GIT版本管理系统能干什么

2. GIT架构简图

一个公司的项目,团队开发,30人,怎么分工协作????  GIT / SVN

  1. 容灾能力强
  2. 本地的版本管理
  3. 异地协作开发
  4. 灵活分支

远程库使用:

  1. GitHub网站  GitHub: Let’s build from here · GitHub  国外的!访问速度慢!
  2. Gitee 码云 Gitee - 企业级 DevOps 研发效能平台 国内的 代码托管网站!
  3. 如果不用以上的代码托管平台,也可以用服务器搭建一个自己的,GitLab

3.设置全局身份标识

        git config --global user.name " 账号"

        git config --global user.email "邮箱"

Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识

--global 表示全局属性,所有的git项目都会共用属性

如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。

如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。

查看配置文件

        git config --list

(重点)工作流程

  1. 克隆 Git 资源作为工作目录。
  2. 在克隆的资源上添加或修改文件。
  3. 如果其他人修改了,你可以更新资源。
  4. 在提交前查看修改。
  5. 提交修改。
  6. 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交

4. 基本命令操作

4.1 创建仓库

Git 使用 git init 命令来初始化一个 Git 本地仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init  是使用 Git 的第一个命令。

在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变(不像 SVN 会在每个子目录生成 .svn 目录,Git 只在仓库的根目录生成 .git 目录)。

在指定目录使用git init命令,即可实现仓库的创建

初始化仓库git init
查看状态git status
git status -s
查看详细过程git diff

4.2 提交文件

1.新建文件后,要将文件添加到暂存区

git add SingerServlet.java

git add *        ------表示将所有的文件添加到暂存区

2. 将暂存区的文件提交的本地库

git commit -m '提交的注释信息"

git commit   ----   提交但是没有注释信息

4.3 查看文件提交历史记录

git log  

 git log --pretty=oneline    (简易信息查看)如果有多个版本日志 在一行上显示

4.4 回退历史

git reset --hard HEAD 版本   --------   回退到指定的版本

(HEAD始终指向当前的最新版本  ^表示上一个版本)

例如:回退到上一个版本 git reset --hard HEAD^

 例如:往前退2个版本 git reset --hard HEAD~2

4.5 版本穿越

git reflog --pretty=oneline -----------  查询之前操作的所有版本操作记录

git reset --hard 版本号    ---------------    直接回退到一个指定的版本

4.6 还原文件

使用服务器上最新的版本,替换本地的版本。例如修改了某个文件,但是还没提交,通过使用git checkout -- 文件名来还原到本地的版本

git checkout -- test1.java

4.7 删除文件

步骤:把文件或者文件夹先从硬盘上删除,然后执行 git add 文件/文件夹(相当于提交了删除操作),最后再执行 gti commit 提交删除操作

5. GIT工作原理(重点)

工作区(代码工作空间):就是你在电脑里能看到的目录。

暂存区(缓冲区):英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。

版本库(本地版本库):工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库

 图中左侧为工作区,右侧为版本库。在版本库中标记为 "index" 的区域是暂存区(stage, index),标记为 "master" 的是 master 分支所代表的目录树。

图中我们可以看出此时 "HEAD" 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。

图中的 objects 标识的区域为 Git 的对象库,实际位于 ".git/objects" 目录下,里面包含了创建的各种对象及内容。

当对工作区修改(或新增)的文件执行 "git add" 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。

当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。

当执行 "git reset HEAD" 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。

当执行 "git rm --cached <file>" 命令时,会直接从暂存区删除文件,工作区则不做出改变。

当执行 "git checkout ." 或者 "git checkout -- <file>" 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。

当执行 "git checkout HEAD ." 或者 "git checkout HEAD <file>" 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

6. 分支管理

系统上线了,但是产品经理又提了新的需求,评估一下工期要两个月,但是同时系统正在上线运行,时不时还要修改bug,如何管理几个版本?

版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。

有人把 Git 的分支模型称为"必杀技特性",而正是因为它,将 Git 从版本控制系统家族里区分出来。

  

在修改的时候修改的是子分支,子分支修改完毕后,再合并到主分支上! 保证主分支代码不受影响!

6.1 查看当前分支

git branch   ------------     列出分支,没有参数时,git branch 会列出你在本地的分支

6.2 创建新的分支

创建分支:git branch 分支名

查看分支: git branch -v 

6.3 切换分支

git checkout 分支名字

6.4 分支合并到主分支(先切换到主分支,然后合并)

先切换到主干  git checkout master 然后将分支合并到主分支

git merge 分支名  合并分支

6.5 冲突

冲突一般指两个分支上同一个文件同一行(同一位置)的代码不同,在两种版本合并时版本管理软件无法判断到底应该保留哪个版本,因此会提示该文件发生冲突,需要程序员来手工判断解决冲突。

  

合并时冲突

 解决方案:

此时通过git diff 可以找到发生冲突的文件及冲突的内容。

 然后修改冲突文件的内容,再次git add <file> 和git commit 提交后,后缀MERGING消失,说明冲突解决完成。

6.6 删除分支

git branch -d 分支名  删除的时候会提示 是否删除还没被合并的分支??

        注意不能删除当前所在分支,需要转到别的分支上。

        如果要删除的分支已经成功合并到当前分支,删除分支的操作会直接成功。

        如果要删除的分支没有合并到当前所在分支,则会出现提示,如果确定无须合并而要直接删除,则执行命令:

git branch -D 分支名 强制删除分支 不提示

6.7 提交日志

git log

git log --pretty=oneline

git log --oneline --graph

6.8 标签  TAG

如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。

比如说,我们想为我们的p2p项目发布一个"1.0"版本。 我们可以用 git tag -a v1.0 命令给最新一次提交打上(HEAD)"v1.0"的标签。

-a 选项意为"创建一个带注解的标签"。 不用 -a 选项也可以执行的,但它不会记录这标签是啥时候打的,谁打的,也不会让你添加个标签的注解。 推荐一直创建带注解的标签

git tag -a v1.0  编辑模式输入版本的说明信息,:wq保存退出

git log --oneline --decorate --graph 查看标签信息

git tag  查看历史版本

 7. 远程仓库

7.1 概述

Git 并不像 SVN 那样有个中心服务器。

目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作。 你就需要将数据放到一台其他开发人员能够连接的服务器上,Github 作为远程仓库或者gitee都可以!

 7.2 发布项目

7.3 克隆项目

对项目进行操作后提交项目

git push -u origin master

 更新项目

git pull origin master

7.4 协作冲突

在上传或同步代码时,由于你和他人都改了同一文件的同一位置的代码,版本管理软件无法判断究竟以谁为准,就会报告冲突,需要程序员手工解决。

 成员A:修改项目

        git add test.java

        git commit -m "A添加了一行"

        git push -u origin master

成员B:修改项目

        git add test.java

        git commit -m "B添加了一行"

        git push -u origin master

此时成员B更新项目时提交报异常:

 手动解决冲突问题

        成员B先更新         ------------ git pull origin master

      

        将更新后的文件里面修改冲突之后,重新提交

        git add test.java

        git commit -m "冲突解决AB"

        git push -u origin master

        成员A再更新

        git pull origin master

8. 在IDEA中配置GIT

8.1 IDEA中集成GIT

安装好IntelliJ IDEA后,如果Git安装在默认路径下,那么idea会自动找到git的位置,如果更改了Git的安装位置则需要手动配置下Git的路径。

选择File→Settings打开设置窗口,找到Version Control下的git选项:

选择git的安装目录后可以点击“Test”按钮测试是否正确配置。

8.2 将工程添加至git

1)在idea中创建一个工程,例如创建一个java工程

2)创建本地仓库

        在菜单中选择“vcs”→Create Git Repository...

 选择工程所在的上级目录。然后点击“OK”按钮,在工程的上级目录创建本地仓库,那么ideawork目录就是本地仓库的工作目录,此目录中的工程就可以添加到本地仓库中。选择之后在工具栏上就多出了git相关工具按钮

3)将工程添加至本地仓库

add按钮,将文件添加到暂存区

commit按钮,将工程提交至本地仓库。

 4)推送到远程

在github上创建一个仓库然后将本地仓库推送到远程。

在工程上点击右键,选择git→Repository→push,(或者在菜单中选择vcs→git→push)

点击“Define remote”链接,配置https形式的URL,git形式的无法通过。然后点击OK点击“push”按钮就讲本地仓库推送到远程,如果是第一次配置推送需要输入github的用户名和密码。

8.3从远程仓库克隆

关闭工程后,在idea的欢迎页上有“Git from VCS”下拉框,选择

 此处仍然推荐使用htts形式的url

 点击Clone按钮后根据提示将远程仓库克隆下来,然后倒入到idea中。

李仙桎
关注 关注
  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Git版本控制工具
m0_51636525的博客
09-01 1771
版本控制能在软件开发中,确保由不同的人编辑同一程序文件能同步。可以帮助程序员进行代码的追踪、维护、控制等操作。使用比较广泛的有三个版本控制工具:CVS、SVN、Git第一个被大规模使用的版本控制工具,诞生于1985年;由荷兰阿姆斯特丹VU大学的Dick Grune教授实现的,也算是SVN的前身(SVN的出现就是为了取代CVS的)。因其命令行工具名为因此通常被简称为SVN;SVN由CollabNet公司于2000年资助并发起开发,目的是取代CVS,对CVS。...............
git版本控制工具
12-27
标题“git版本控制工具”指的是Git在软件开发中的作用,即帮助开发者追踪和管理代码的版本变化。描述中提到“git之前的版本”,暗示了这是一个较旧的Git版本,可能是为了应对某些用户遇到的新版本兼容性问题。文件名...
Git 版本管理工具(一)
编程开发资料库
05-02 1982
Git是一个分布式版本控制工具,它的作者Linus Torvalds 是这样给我们介绍 Git ——The stupid content tracker(傻瓜式的内容跟踪器) 1、 Git 背景 Git 最初由Linus Torvalds编写,用于 Linux 内核开发的版本控制工具Git 与常用的版本控制工具 CVS、Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软...
版本管理工具 Git 的下载安装及使用
最新发布
2301_76144723的博客
08-31 1099
(1)分支可以有多个(根据业务需求)(2)如果各分支没有交集,始终平行发展,则不需要合并(merge)(3)如果两个分支,需要合并,则执行 merge 操作(4)分支合并示意图。
git版本控制工具
m0_48884170的博客
04-19 1546
分支管理git branchgit mergegit rebase等命令用于管理和操作分支。标签管理git tag命令用于管理标签,可以用来标记重要的提交或版本。查看提交历史git log命令用于查看提交历史,可以显示提交的作者、日期、提交信息等。查看状态和差异git statusgit diff命令用于查看工作目录的状态和文件之间的差异。撤销操作:除了git revert,还有git reset和等命令可以用来撤销操作。存储临时更改git stash命令用于将当前工作目录的临时更改存储起来,以便稍后恢复。
版本控制工具-Git
weixin_43807956的博客
11-04 538
版本控制工具-Git 一、概述 学习资料: https://git-scm.com/book/zh/v2 什么是版本控制系统? 版本控制软件提供完备的版本管理功能,用于存储、追踪目录(文件夹)和文件的修改历史,是软件开发者的必备工具,是软件公司的基础设施。版本控制软件的最高目标,是支持软件公司的配置管理活动,追踪多个版本的开发和维护活动,及时发布软件。 一句话总结:版本控制是一种记录一个或若干...
版本控制工具git
weixin_51729463的博客
08-08 562
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。[1] 也是[Linus Torvalds](https://baike.baidu.com/item/Linus Torvalds/9336769)为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。在协作开发中,项目中会有很多成员对同一个项目的代码进行编写、调试、修改,所有成员的代码同步就成了问题。而使用git可以很好的解决协同开发中代码同步的问题。...
Git版本控制工具知识
03-04
总结起来,Git是现代软件开发中不可或缺的工具,其强大的版本控制功能和灵活的工作流极大地提高了团队协作效率和代码管理质量。通过理解和熟练掌握Git,开发者可以更好地管理和保护自己的代码。
Git版本控制工具介绍
02-25
Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git是LinusTorvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。许多人习惯用复制整个项目目录的方式来...
Git版本管理工具
07-27
附件是使用Git版本管理工具进行开发过程中版本管理必不可少的工具,其中也包含了Git的界面工具TortoiseGit和中文简体语言包,方便大家一键下载
git版本管理工具
知识,既贵,又便宜。
06-01 1791
git是代码版本控制工具github是基于git实现的代码管理平台。
版本控制工具--git
泉涸的博客
08-21 689
工作区:就是你在电脑上创建的文件,可以看见的暂存区:英文名叫stage或者index,可以暂时存储临时代码,可以撤销本地库:把暂存区代码提交到本地库,生成历史版本,历史记录不可删除。
版本控制工具 Git
qq_60796259的博客
06-25 1809
在项目开发的过程中,项目每开发到一个关键阶段/节点就会对当前项目进行备份,我们对象项目的每一次备份就是一个版本。需要手动维护版本的更新日志,记录每个版本发生的变化;当需要恢复到某个版本时,需要手动查询更新日志,当版本比较多的时候,查找工作就异常繁琐;当我们需要回退到指定的版本时,只能通过手动使用IDE工具打开指定的备份。基于项目版本的手动管理、团队协同开发进行手动项目整合遇到的诸多问题,Git就应运而生了。Git是一个进行项目的版本管理以及团队协同开发管理的工具
GIT 版本控制工具
lilygg的博客
06-20 1201
1.版本控制的起源 现在的软件项目通常是由一个研发小组共同分析、设计、编码、维护以及测试的 针对团队开发需要解决以下问题: 备份多个版本,费空间,费时间 难以恢复至以前正确版本 难以解决代码冲突困难 难以追溯问题代码的修改人与修改时间 无法进行权限控制 项目版本发布困难 源代码管理工具就是为了解决上述问题便运营而生 2.常见的版本控制工具 CVS 开启版本控制之门 SVN 集中式版本控制 GIT 分布式版本控制 集中式: 分布式: 集中式与分布式最大的区别: 集...
git-版本控制工具
che_j的博客
12-01 291
目录Git是什么下载地址git客户端安装1.鼠标快捷菜单2.运行说明3.换行符转换常用git命令版本库初始化本地仓库设置签名形式:命令:查看状态添加到缓存区从缓存区移除从暂存区提交到本地仓库添加备注提交上次提交补充查看提交日志版本回退/前进reset命令的三个参数比较:softmixedhard命令帮助删除文件找回比较比较本地和暂存区比较本地某个版本:比较所有文件分支查看分支创建分支切换分支远程库地址别名push远程库下载到本地邀请成员加入团队githubPull解决冲突跨团队协作SSH免密登录在线学习 G
写文章

热门文章

  • 全网最全最细的PLSQL下载、安装、永久激活PLSQL产品、配置、使用指南;以及使instantclient下载、安装、配置、使用实现连接远程ORACLE数据库 5518
  • 2024激活Typora,最新版本的1.8.10.0可用 4916
  • Windows系统中下Oracle 19C数据库超级详细安装、设置教程(自己电脑上安装Oracle学习,保姆级教学,亲测有效) 3815
  • MyBatis基础应用(三)——使用MyBatis关联映射实现多表查询 2073
  • MySQL中order by排序时,数据存在null,排序在最前面 1847

分类专栏

  • 数据结构与算法 4篇
  • 操作系统
  • MySQL数据库 5篇
  • Oracle数据库 6篇
  • mybatis 8篇
  • 开发工具 1篇
  • Java 1篇
  • spring boot 5篇
  • spring 8篇

最新评论

  • 2024激活Typora,最新版本的1.8.10.0可用

    zjdkfjdodmdhkddnfb: 最火的几个激活攻略有问题,还是up的这种方法好

  • 2024激活Typora,最新版本的1.8.10.0可用

    李仙桎: 是的,写错了

  • 2024激活Typora,最新版本的1.8.10.0可用

    程序小兵的成长: 楼上说的对

  • 2024激活Typora,最新版本的1.8.10.0可用

    qq_23188475: 应该是说错了,是替换app.asar文件

  • 《数据结构》C语言版 (清华严蔚敏考研版) 第三章 栈和队列 队列相关知识梳理与总结

    普通网友: 每当我阅读你的编程博客文章时,我总能感受到你的专业水平和耐心解答的精神。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

大家在看

  • Python爬虫教程:Selenium可视化爬虫的快速入门
  • Tree-of-Reasoning Question Decomposition for Complex Question Answering with Large Language Models
  • CEP 复杂事件处理引擎进阶:股票中高频 CTA 策略实现与并行回测
  • Javascript算法——双指针法移除元素、数组去重、比较含退格字符、有序数组平方 63
  • 快手API调用问题集锦以及解决方案

最新文章

  • Java 中的基础语法(7千字零基础超全详解)
  • 2024激活Typora,最新版本的1.8.10.0可用
  • MySQL中order by排序时,数据存在null,排序在最前面
2024年12篇
2023年36篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李仙桎

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

深圳坪山网站建设公司江苏扬州网站优化民权专业网站关键词优化多少钱重庆网站优化电池网站的优化推荐j火21星网站优化关键词外包js优化对网站有影响吗普陀区公司官方网站优化定制网站优化公司哪家公司好商洛网站优化排名多少钱东港网站推广优化青岛网站优化廊坊网站首页关键词优化营销网站优化实战保定网站搜索优化多少钱靠谱网站优化系统招商潍坊网站优化电池seo企业网站优化成都网站seo优化网站南京官网网站优化推荐福建网站关键词排名优化方案网站域名对seo优化的影响吐鲁番网站seo优化平台网站的搜索优化网站的优化是什么如何优化网站换云速捷豪杰怎么优化网站推崇易速达做国外网站优化费用多少新乡获嘉网站优化排名网站搜索优化推荐n火10星咸宁产品网站优化公司香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化