git原理与使用

这篇具有很好参考价值的文章主要介绍了git原理与使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引入

假设你的老板要你设计一个文档,当你设计好了,拿给他看时,他并不是很满意,就要你拿回去修改,你修改完后,再给他看时,他还是不满意,经过多次修改,他觉得还是你之前的第三次修改后的文档好,最终决定采用第三次修改后的文档,但因为前面你都是在一个文档上修改的,意味着前面修改的文档内容都被覆盖了,也就无法完成老板的任务
同上,吸取了之前的教训后,你明白了要保存前面的副本,因为老板可能会采纳之前的文档,所以每一次修改,你都存一份副本,这样,就能在最终选用文档时,拿出成果。
同上,上面的想法听起来确实很合理,一般情况下,也能解决问题,但是,在软件开发中,随着版本的不断增多,维护好版本是很有挑战的,那就需要我们知道每个版本各自修改的内容,才能更好地维护,而上面的生成副本的方式无法知晓当前版本在上一个版本的基础上修改了哪些内容(内容很多的情形),这种方式也就不适用了!此时,git应运而生!!!
git,是一个版本控制器,它是记录每次的修改以及版本迭代的一个管理系统,比如在文本文件的某一行前面添加了一行内容,也能清楚的找出这种修改。

基本操作

创建本地仓库
仓库本质上就是进行版本控制的一个文件目录,用git init命令创建,下图中的.git是用来跟踪管理仓库的

git原理与使用,git,大数据
配置git
用下面两个两个命令可以配置用户名和邮箱地址,这点很重要!!!其中的global表示全局,即带了这个选项,在所有仓库中都会使用你配置的这个用户名和邮箱地址,不带,则只在当前仓库有效
注意:命令必须在仓库内执行!!!
git config [–global] user.name “Your Name”
git config [–global] user.email “email@example.com”
查看配置
用git config -l命令查看配置信息
删除配置信息
git config [–global] --unset user.name
git config [–global] --unset user.email

git原理与使用,git,大数据

认识工作区、暂存区、版本库
git关注的是修改,即增加、更新、修改,而修改的工作区内容会写入对象库的一个新的git对象中,文件要被git跟踪管理,就必须得进行add和commit操作,完成这两步后,文件才会被添加到仓库管理

git原理与使用,git,大数据
add操作
git add 文件(文件名)/目录(目录名)/所有文件(.)
commit操作
git commit -m 日志信息,即提交暂存区的所有文件
commit后,可以用git log来查看提交的日志信息
如下图,是提交工作区的内容到版本库的示例流程,如果没有配置用户名和邮箱信息,就无法commit,会提示要你配置,配置完成后,再commit就可以了,而日志中的黄色的那一长串字符串,则是commit id

git原理与使用,git,大数据
如果想看简单一些的日志,可以带–pretty=oneline选项

git原理与使用,git,大数据
如下图,index就是暂存区,add后的内容都是添加到这里的

git原理与使用,git,大数据
HEAD是默认指向master分支的指针

git原理与使用,git,大数据
master保存的是当前最新的commit id

git原理与使用,git,大数据
objects,保存了git维护的所有修改
如下图,查看object时,它由两部分构成,前两位是文件夹名称,后面的38位则是文件名称

git原理与使用,git,大数据
git原理与使用,git,大数据
用git cat-file -p commit id查看版本库对象的内容

git原理与使用,git,大数据
修改文件
如下图,用git status查看工作区中状态,显示还没有添加和提交

git原理与使用,git,大数据
三天前修改的文件,到今天,我们可能就已经不记得修改了哪些内容,此时就可以用到git diff来查看修改了哪些内容。a 和 b表示从之前的a文件,修改后变成了b文件,相当于同一个文件的不同版本,-1表示改动前第一行,+1,2表示改动后第一行起连续两行的内容

git原理与使用,git,大数据
版本回退
如果你发现之前做的工作,出现了一些问题,需要解决,就得回到某一个历史版本,这时,就能用到git reset [–soft || --mixed || --hard] [HEAD]
HEAD,表示当前版本
HEAD^,表示上一个版本
HEAD^^,表示上上一个版本
也能直接使用commit id,表示回退到指定版本
mixed,表示回退到某个历史版本的暂存区,版本库也变了,但工作区不变,且这是个默认选项,即不指定时,就是mixed

soft,表示回退到某个历史版本的版本库,工作区和暂存区不变
hard,表示回退到某个历史版本的工作区,暂存区和版本库都变,慎重使用这个选项,因为是回退工作区,可能内容就找不回来了
以hard为例,进行讲解
如下图,从version3回退到version2了,工作区文件的内容也回退了

git原理与使用,git,大数据
假如我突然后悔了,想回到version3版本,但发现根本做不到,因为我们没有version3的commit id,此时,只能借助git reflog命令来尝试补救了
如下图,我们借助git reflog命令找到了version3的部分commit id,但也能代表目标版本!!!

git原理与使用,git,大数据
从下图,可以看出,版本回退非常的迅速,只需要修改指针即可!

git原理与使用,git,大数据
撤销修改
当我们觉得当前写的代码太糟糕了,想恢复到上一个版本,这时就需要用到类似于word等工具的撤销功能,分为三种情形
没有add,可以直接用git checkout – 文件名进行撤销

git原理与使用,git,大数据
已经add,但没有commit,可以使用git reset HEAD 文件名,将add的回退到工作区,然后再用如上的方式撤销

git原理与使用,git,大数据
已经add,已经commit,则能采用git reset --hard HEAD^,前提是你没有push到远程仓库
删除文件
用git rm命令,可以删除工作区和暂存区中的内容,然后再commit提交即可

git原理与使用,git,大数据

分支管理

假设你能创建自己的分身,那你就可以让自己的分身去做与自己不同的事情,比如它去学习Java,而你学习C++,在某个时间点,你们俩合并,此时,你就能既学会了Java,也学会了C++,极大地提高了你的学习效率。分支便是如此,便于团队协作,提高工作效率!!!
创建分支
用git branch来查看分支,git branch 分支名来创建分支,* 在哪儿表示HEAD指针当前指向哪一个分支,最后的cat,证明两个分支指向同一个提交

git原理与使用,git,大数据
git原理与使用,git,大数据

如下图,也可以用git checkout -b 分支名命令来创建并切换分支

git原理与使用,git,大数据

切换分支
用git checkout 分支名来切换分支

git原理与使用,git,大数据
如下图,在dev分支上创建了ReadMe文件,并写入hello world,但在master分支上却看不到,这是因为创建新分支后,master分支和dev分支是相互独立的,就如同,你并不知道你的分身干了什么事情!要想知道,就必须得将dev合并到master上

git原理与使用,git,大数据
git原理与使用,git,大数据

合并分支
用git merge 要合并到当前分支的分支名,fast-forward代表快进模式,也就是直接把master指向dev的当前提交

git原理与使用,git,大数据
git原理与使用,git,大数据

删除dev分支
当合并完成后,dev分支也就没用了,如下图,用git branch -d 分支名来删除分支,注意,不能在当前分支下删除当前分支!!!

git原理与使用,git,大数据
如果dev分支没有被合并
可以用git branch -D 命令来删除dev分支

git原理与使用,git,大数据

合并冲突
分支在合并时,是有可能发生冲突的,如下图所示,dev分支,将11111写入ReadMe文件,并添加提交,master分支,将2222写入ReadMe文件,并添加提交,将dev分支合并到master分支时,就发生了冲突,因为git无法确定要保存哪一个,就如同C++中的菱形继承中的二义性问题

git原理与使用,git,大数据
要想解决合并冲突问题,就需要我们手动修改冲突的内容,选择其中一个,然后再添加提交即可!

git原理与使用,git,大数据
git原理与使用,git,大数据
用git log --graph --pretty=oneline --abbrev-commit命令可以查看合并情况

git原理与使用,git,大数据
分支管理策略
fast-forward模式合并,删除分⽀后,查看分⽀历史时,会丢掉分⽀信息,看不出来最新提交到底是merge进来的还是正常提交的,但在合并冲突部分,解决合并冲突,就能知道是merge进来的还是正常提交的!
要想不以fast-forward模式合并,可以采用 git merge --no-ff -m “日志信息” 分支名,来合并

git原理与使用,git,大数据
当我在dev分支上开发时,突然发现master分支上有个bug需要解决,而我才开发到一半,没办法提交,这时,就需要保存工作区现场,可以用git stash命令,来讲工作区信息隐藏,用git stash list可以查看刚才的隐藏信息保存在哪个分支上,用git stash pop命令来恢复现场信息,并将stash删除

git原理与使用,git,大数据
建议:当我们建立分支去写代码要合并时,可以先将master分支合并到当前分支,如果发生合并冲突,就可以在当前分支解决,从而不会影响master

远程操作

远程仓库
如下图,是在gitee上新建远程仓库的步骤,Readme文件是一些说明,可以自己去填写,便于别人使用,比如软件的安装步骤等等,而Issue则可以用来提bug等等,Pull Request在远程合并分支时使用, 比如你在dev分支开发完,需要合并到master分支,就需要填写Pull Request申请单

git原理与使用,git,大数据
而要想本地与远程建立联系,就必须先将仓库拷贝到本地,即使用git clone 下面的url

git原理与使用,git,大数据
在本地查看远程仓库,可以用git remote命令,想查看详细信息,可以带-v选项,远程仓库的默认名称是origin,下面显示了拉取和推送的地址,表明可以向远程仓库推送信息,也能获取远程仓库的信息

git原理与使用,git,大数据
向远程仓库推送,可以用git push <远程主机名> <本地分⽀名>:<远程分⽀名>来推送,如果本地分支名和远程分支名相同,则可以省略冒号及它后面的,如下图,我删除了本地仓库的文件,同时也想把远程的也给删掉,就用到了push操作

git原理与使用,git,大数据
git原理与使用,git,大数据
拉取远程仓库

拉取远程仓库内容和推送一样,只不过要把push改为pull,如下图,先在远程仓库创建了一个file.txt文件,并写入hello world,在本地pull后,就能把远程仓库的内容拉取到本地仓库中

git原理与使用,git,大数据
git原理与使用,git,大数据
git原理与使用,git,大数据
配置Git
在上面创建仓库时,有一个添加ignore文件,可以勾选,就会在远程仓库生成该文件,该文件用于添加提交文件时,可以忽略指定的部分文件,比如写入了账号密码信息的文件,我不想推送,让别人看到,我就不提交,但文件太多了,add 指定文件太麻烦,就只能add . ,所以就有了ignore文件的产生,直接在该文件中写入你想忽略的文件即可,如下图所示。

git原理与使用,git,大数据
git原理与使用,git,大数据
git原理与使用,git,大数据
如果是使用的*.txt,来忽略所有txt后缀文件,而又要某个.txt文件不被忽略,就能在该文件前面加个!xxx.txt,表示不忽略。git add -f可以强制添加文件,但不建议使用
给命令配置别名
如下图,这条命令太长了,写起来太麻烦,就可以对其起别名

git原理与使用,git,大数据
如下图,用git config --global alias.别名 ‘命令’

git原理与使用,git,大数据

标签管理

因为commit id太长了,很难记住,所以我们可以用标签来作为commit的别名,这样也方便后续使用
可以用git tag 标签名来创建一个标签,git tag查看标签

git原理与使用,git,大数据
如下图,可以看出,默认打的标签是打在最新的一次commit上的

git原理与使用,git,大数据
如下图,给指定commit打标签,用git tag 标签名 commit id

git原理与使用,git,大数据
如下图,用git show 标签名查看标签信息

git原理与使用,git,大数据
如下图,可以带-a选项,对标签进行说明

git原理与使用,git,大数据
git原理与使用,git,大数据
如下图,可以用-d选项,来删除标签。

git原理与使用,git,大数据
如下图,要推送至远程,可以用git push origin 标签名

git原理与使用,git,大数据
git原理与使用,git,大数据
如下图,删除标签,先在本地删除,再推送至远程仓库

git原理与使用,git,大数据
git原理与使用,git,大数据文章来源地址https://www.toymoban.com/news/detail-634860.html

到了这里,关于git原理与使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Git--原理与使用

    1. 技术⽬标 :掌握Git企业级应⽤,深刻理解Git操作过程与操作原理,理解⼯作区,暂存区,版本库 的含义。 2. 技术⽬标 :掌握Git版本管理,⾃由进⾏版本回退、撤销、修改等Git操作⽅式与背后操作原理。 3. 技术⽬标 :掌握Git分⽀管理,从分⽀创建,切换,合并,删除的整个

    2024年04月29日
    浏览(23)
  • 【Git原理与使用】-- 远程操作

    目录 ​​​​​​​ 理解分布式版本控制系统 远程仓库 新建远程仓库 lssue 与 Pull Request模板文件 知识铺垫 lssue 模板文件 Pull Request模板文件 克隆远程仓库 使用 HTTPS 方式 使用 SSH 方式 第一步:创建SSH Key 向远程仓库推送 过程梳理 实操 拉取远程仓库 配置 Git 忽略特殊文件

    2024年02月12日
    浏览(24)
  • 【Git原理与使用】-- 多人协作

    目录 多人协作一(多人同一分支) 开发者一(Linux) 开发者二(Windous) master合并 远端上的合并 本地上的合并 总结 多人协作一(多人多分支) 开发者一(Linux) 开发者二(Windous) master合并 合并function-2 合并function-1 远程分支删除后,本地 git branch -a 依然能看到的解决办法

    2024年02月08日
    浏览(41)
  • 【Git原理与使用】-- 分支管理

    目录 理解分支 创建分支 查看当前分支 创建本地分支 切换分支 合并分支 删除分支 合并冲突 分支管理策略 分支策略  bug 分支 不建议的合并方式 建议的合并方式 第一步 第二步 删除临时分支         分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习 C++ 的时候,

    2024年02月05日
    浏览(30)
  • 【Git原理与使用】-- 基本操作

    目录 添加文件 查看objects中的文件 小结 修改文件 版本回退 回退的回退 小结 撤销修改 情况一:对于工作区的代码,还没有 add 情况二:已经 add ,但没有 commit 情况三:已经 add ,并且也 commit 了 小结  删除文件 #: 首先引入一个未进行任何操作的 ./git 内部情况         我

    2024年02月11日
    浏览(40)
  • Git原理与使用(二):分支管理

    分支管理是Git的杀手锏之一 威力无比强大 下面就让我们一起开始分支管理的探索之旅吧 注意: HEAD指向的是当前分支!!! 这就是master分支移动的大致草图 既然分支这么强大, 那么我们如何创建分支呢? 默认情况下,我们只有master这一个分支 然后我们又创建了一个分支:dev 此时我们

    2024年02月03日
    浏览(35)
  • 【Git原理与使用】-- 企业级开发模型

    目录 引入 系统开发环境 Git 分支设计规范 master 分支 release 分支 develop 分支 feature 分支 hotfix 分支 开发场景 - 基于git flow模型的实践 DevOps研发平台 修复测试环境 Bug 修改预发布环境 Bug 修改正式环境 Bug 紧急修复正式环境 Bug 拓展实践 都说: 对于开发者,Git是非常的重要的,

    2024年02月13日
    浏览(90)
  • Git的原理与使用(一):Git的基本操作(包含:版本回退)

    Git是一个版本控制器 在这里我们重点介绍Linux操作系统下的Git的使用 因为在未来的开发过程中Linux操作系统的使用更为频繁 而且Git最初就是在Linux操作系统下面开发的 1.git命令与git help(Git下的\\\"man手册\\\") 首先我们可以使用git命令来查看我们有没有安装Git 如果结果是这样的 说明

    2024年02月05日
    浏览(36)
  • 【数据库原理】(13)视图的使用

    视图(View) 是一种虚拟的表,它的内容由查询定义,但不存储实际的数据。视图是从一个或多个基本表(或其他视图)生成的。 特点: 虚拟性 :视图不包含数据本身,仅保存了一个查询,这个查询在每次访问视图时动态地执行。 动态性 :视图显示的数据是从基本表中实时

    2024年02月02日
    浏览(36)
  • HBase的数据结构原理与使用

    HBase是一个开源的、分布式的、版本化的NoSQL数据库(即非关系型数据库),依托Hadoop分布式文件系统HDFS提供分布式数据存储,利用MapReduce来处理海量数据,用Zookeeper作为其分布式协同服务,一般用于存储海量数据。HDFS和HBase的区别在于,HDFS是文件系统,而HBase是数据库。H

    2024年02月08日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包