草庐IT

Git工具的使用

小威要向诸佬学习呀 2023-07-17 原文

前言:
对于我们程序员来讲,在做一些大的项目时,Git工具是必不可少的本篇主要讲解了Git工具的指令,以及在idea软件上面的使用。非常地详细,确实比较适合小白,也适合大佬复习,看完之后还需要大家动手自己使用。
如果文章有什么写的不对或者需要改进的地方,还请大佬不吝赐教。
小威在此感谢各位小伙伴儿的支持😘😘😘

🏠个人主页:小威要向诸佬学习呀
🧑个人简介:大家好,我是小威,一个想要与大家共同进步的男人😉😉
目前状况🎉:目前大二,在一家满意的公司实习👏👏

🎁如果大佬在准备面试,可以使用我找实习前用的刷题神器哦刷题神器点这里哟
💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,我亲爱的大佬😘

以下正文开始

文章目录

🍺Git概述

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持

🥂Git常用命令

版本库:.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等。
工作区:包含.git文件夹的目录就是工作区,也称为工作目录,主要用于存放开发的代码;
暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方

Git工作区中文件的状态
Git工作区中的文件存在两种状态:

1.untracked 表跟踪(未被纳入版本控制)
2.tracked 已跟踪(被纳入版本控制)
(1)Unmodified 未修改状态 ;
(2)Modified 已修改状态;
(3) Staged 已暂存状态

注意:这些文件的状态会随着我们执行Git的命令发生变化

Git全局设置
当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息。

设置用户信息
git config --global user.name “小威要好好学习呀”
git config --global user.name “3078686780@qq.com”
查看配置信息
git config --list
上面设置的user,name和user.email并不是在注册码云账户时使用的用户名和邮箱,此处可以任意设置。

🍻本地仓库命令

  • git status 查看文件状态
  • git add 将文件的修改添加到暂存区
  • git reset 将暂存区的文件取消暂存或切换到指定版本
  • git commit 将暂存区的文件修改提交到版本库
  • git log 查看日志

例子:在hello-git文件夹下新建一个文件User.java。

第一步的add *把User.java文件纳入了版本控制,因此展现为绿色
执行完第一张图,再创建user.xml文件而不执行add命令,则user.xml没有纳入版本控制,会变红。

此时再执行add * 命令则会把user.xml纳入版本控制。如下图:

commit 提交命令,-m为注释, 后面引号内容为注释内容,User.java是要从暂存区中提交的文件。但是出现了邮箱地址错误

出错原因是没有进行用户名、邮箱设置所导致

此时如果修改文件中的内容

文件会变为modified变红状态

再次添加即可恢复,放到缓存区

打印log日志,可以看到commit后面的版本号

使用reset命令可以回到版本号之前的状态

结果显示建立的user.xml已经没有了,因为在此版本号时user.xml还没有建立

🥃远程仓库命令

前面执行的命令操作都是针对的本地仓库,下面是远程仓库命令。

  • git remote 查看远程仓库
  • git remote add shortname 添加远程仓库
  • git clone 从远程仓库克隆
  • git pull 从远程仓库拉取
  • git push 推送到远程仓库

如果想查看已经配置的远程仓库服务器,可以运行git remote 命令,它会列出每一个远程服务器的简写如果已经克隆了远程仓库,那么至少应该能看到origin,这是Git克隆的仓库服务器的默认名字。

添加远程仓库之后

新建text.txt文档,并提交,然后使用push命令将文件推到gitee上面

打开gitee,上面显示下图,表示已经上传上去,其中master表示默认主分支

此时编辑text.txt文件内容

重新将text.txt加入到缓冲区,提交,并推到gitee上面

git上面显示内容

需要注意事项
在使用git push 命令将本地文件推送至码云仓库时,需要进行身份认证,认证通过才可以推送。
博主在运行的时候也出现了**Incorrect username or password ( access token )**错误,解决方法如下
1.第一步,打开控制面板

2.点击用户账户,管理你的凭据

3.点击Windows凭据,普通凭据里有gitee相关的数据

4.如果用户名账户密码错的话,点击编辑即可修改完成

以上就是push命令发生错误时的修改方法

创建另一个仓库 hello-java。
pull命令如下,其中origin是别名,此时显示 Already up to date 表示已经更新了,这个命令表示从gitee仓库中获取文件

上一张图已经将gitee仓库的文件拉取到了xiaohei文件夹中,此时新建xiaowei.txt文件

利用老方法将xiaowei.txt文件上传并提交

此时xiaohei在gitee上这样显示

xiaobai此时的文件是这样

将gitee上面的文件用pull命令给xiaobai,所以xiaobai文件夹里会多出来一个文件。

🍹分支操作

此操作以hello-world文件为例。
分支是Git使用过程中非常重要的概念。使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。同一个仓库可以有多个分支,各个分支相互独立,互不干扰。
通过git init 命令创建本地仓库时默认会创建一个master分支。
关于分支的相关命令,具体如下:

  • git branch 查看本地所有分支
  • git branch -r 查看远程所有分支
  • git branch -a 查看本地和远程所有分支
  • git branch [name] 创建分支
  • git checkout [name] 切换分支
  • git push [shortName] [name] 推送至远程仓库分支
  • git merge [name] 合并分支


创建b1,b2分支,checkout命令是切换分支,后面括号里写什么就代码在那个分支上。

将b1分支上传到远程仓库,b1–>b1是指本地b1到远程b1

gitee仓库显示,此时b2分支还没有上传到仓库,因此仓库里还没有b2分支


下面我们切换到master分支,看看master分支上都有什么文件


切换到b1目录,b1目录下有这些文件



将master分支上传到仓库


b1分支上传到仓库,相比master少了xiaowei.txt文件

给b2分支创建b2.txt文件,并将b2分支上传到远程仓库


将b2.txt文件添加到master分支并上传

gitee仓库显示

b2分支修改文件


此时如果将master分支和b2分支合并,会发生错误,因为master分支中的b2.txt文件和b2分支下的b2.txt文件冲突,内容不一样

会发生如图冲突错误


完成会仓库显示

🥤标签操作

Git中的标签,指的是某个分支某个特定时间点的状态。通过标签,可以很方便的切换到标记时的状态。
比较有代表性的是人们会使用这个功能来标记发布结点(v1.0、v1.2等)。下面是mybatis-plus的标签:

标签常用命令

  • git tag 列出已有的标签
  • git tag [name] 创建标签
  • git push [shortName] [name] 将标签推送至远程仓库
  • git checkout -b [branch][name] 检出标签



v1标签下的文件


v2标签下的文件

可以看出两个标签的状态是不一样的。标签就像我们照照片一样,不同时期的照片我们状态可能不一样。

🍷Idea上执行Git

将我们在前面创建的文件导入idea中,创建两个controller类,点击上面的Git创建即可

第二种方式,点击图中的箭头也可以提交,左边箭头为更新项目,右边箭头为推送

图中也可以管理远程仓库,填写仓库的路径即可

下图为将idea中的项目推送到远程仓库

下图为将项目推送到仓库的结果

idea上的git在右下角有很多功能,比如分支等。

文章到此就结束了,在idea上的操作将比较少,大致讲了一下,还需各位小伙伴儿在idea上动手操作操作。
文章有什么写的不准确的地方还请大佬斧正😙😙😏

再次感谢各位小伙伴儿们的支持🤞

有关Git工具的使用的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  3. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  4. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  5. ruby - 在 Ruby 中使用匿名模块 - 2

    假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

  6. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  7. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  8. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  9. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  10. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

随机推荐