首页 > 其他分享 >Git基本使用

Git基本使用

时间:2024-10-29 12:48:56浏览次数:7  
标签:基本 文件 git 命令 Git 提交 使用 cpp 分支

(1)下载安装Git

前往git官网(https://git-scm.com/downloads)下载安装程序,按默认选项安装即可

安装完成后,在应用中找到“Git Bash”,出现一个类似命令行的窗口,说明git安装成功。可通过git –version查看当前git版本信息

安装成功后,还需要设置name和email地址

(2)Git本地仓库的创建和配置

在桌面打开git命令行,创建一个空目录

 

可通过pwd命令查看当前目录。为避免后续操作遇到问题,需确保目录名不包含中文

通过git init命令将该目录变成git可以管理的本地仓库

利用ls -ah命令可以发现当前目录下多了一个.git目录

(3)在本地创建一个C语言或者C++项目,将所有的项目源程序文件提交到本地库中。

在test文件夹中创建HelloWorld.cpp项目

通过git add命令将项目源程序文件添加到本地库中,没有任何显示说明添加成功

接着用git commit命令把文件提交到仓库,-m后面输入本次提交的说明

Git status命令可检查仓库是否有未提交文件

Git log命令可查看提交记录

(4)多次修改某一个源代码文件,进行多次提交。

修改HelloWorld源代码并保存

运行git status,输出显示HelloWorld.cpp文件被修改过,但还没有准备提交的修改

先将该文件添加到本地仓库,并用git status查看当前仓库状态

此时再对HelloWorld.cpp文件进行修改并保存

运行git status,可以看到有两个版本的HelloWorld.cpp,一个已经添加到了仓库准备提交,另一个还没有被添加

然后先用git commit命令提交前一版本,再运行git status时发现只剩下那个未添加版本

添加并提交该版本到仓库

(5)查看文件的历史记录,并且查看不同版本之间的差别。

通过git log命令可以查看文件的历史提交记录

可以通过git diff加上commit后的版本号来比较各历史版本之间的差别,下图中可看到第二次提交相比于第一次添加了一行输出“hello szu”

第二次和第三次相比则修改了输出语句,将szu改为shenzhen

而git diff后不加任何语句则会比较提交的最新版本与本地版本之间的差异,例如我们将HelloWorld.cpp文件进行修改并不添加至仓库,并运行git diff

(6)将文件恢复到前面的某个版本,给出详细的恢复过程。

先通过git log查看历史提交日志

先梳理一下这三次提交:

Wrote a cpp file 创建了初始的cpp文件,输出hello world;

First modify 在原先输出结果的基础上,添加了一行输出hello szu;

Second modify 将hello szu修改为了hello Shenzhen

本地HelloWorld.cpp文件保存的是第三次提交后的结果:

要将HelloWorld.cpp文件恢复到先前版本,需要用git reset命令,利用—hard参数指定回退版本,可以加上指定的版本号,或者加上HEAD^表示回退至上个版本

先尝试恢复到上个版本,即first modify版本,并发现历史提交日志中已经没有second modify,代码也回到了第二次提交时的状态

而git reset命令的原理是将其内部的HEAD指针指向了恢复的版本,因此仍可以回到第三次提交。在输入版本号时可以不写全,git会自动寻找版本

运行git log,可见已经回到了第三次提交的版本

(7)删除某一个提交文件,并且查看项目状态。

在test文件夹中新建NewFile.cpp文件,添加并提交至仓库

如果直接用rm命令删除文件,会导致工作区与版本库不一致,运行git status命令会告知文件被删除,而当前目录下也找不到该文件

此时如果确实要从版本库中删除该文件,就用git rm删除,并git commit提交删除操作

此时再运行git status,工作区与版本库已经保持一致,均没有NewFile.cpp文件,用git log命令也可以看到删除相关日志

(8)进入Github,尝试clone一个开源项目。

登录Github,选择一个开源项目,复制项目url

接着在准备存储项目的目录下打开git命令行,通过git clone命令将项目拷贝至本地

可以看到该项目已经拷贝成功,可以通过相应开发工具打开项目

(9)为某个文件创建分支,在分支中提交和对比文件。

用git branch命令创建dev分支,通过git checkout dev来切换到dev分支。这两个命令也可以用git checkout -b dev命令代替

用git branch命令可查看所有分支,当前分支前面会有一个*号

接着在dev分支上对HelloWorld.cpp文件进行修改并提交

切换回master分支

查看HelloWorld.cpp文件,发现修改不见了,因为刚才的提交是在dev分支上,master分支此时的提交点并没有变

可以通过git diff加上分支名来比较master分支和dev分支的代码差异

(10)将修改的内容合并到主分支

通过git merge命令可以将指定分支合并到当前分支

此时再运行git diff命令,master分支与dev分支此时没有差异

查看HelloWorld.cpp文件,也发现与dev分支的最新提交一样

合并完成后,可以通过git branch -d加上分支名删除指定分支

再查看branch,只剩下master分支

合并过程中还有种情况是代码发生冲突,例如feature1分支和master分支都有新的提交

运行git merge会显示与当前分支有冲突,无法自动合并

可以通过git status查看冲突文件

查看HelloWorld.cpp文件,发现git标记出了不同分支的内容

修改后重新提交即可

可通过git log加上参数查看分支的合并情况

(11)为项目增加本地和远程标签,并查看、删除标签

先在Github上创建一个远程库方便后续操作

在本地仓库下运行以下命令将本地仓库关联到Github仓库

接着用git push命令将本地库所有内容推送至远程库上

可以看到项目已成功上传

先切换到要打标签的分支,通过git tag加上标签名就可以打一个新标签

Git tag命令可查看所有标签

如果要对历史版本打标签,需要找到历史提交的commit id,可以通过git log查询

要给mergetest2这次提交打标签,就用git log加上标签名和commit id

Git show命令加标签名可查看标签信息

刚才创建的标签都只存储在本地,如果要推送某个标签到远程,可以使用命令git push origin加上标签名

可在GitHub上看到该标签

删除远程标签的话需要先从本地删除

再通过git push命令从远程删除

在GitHub上检查,删除成功

标签:基本,文件,git,命令,Git,提交,使用,cpp,分支
From: https://blog.csdn.net/Onlyyyy667/article/details/143325544

相关文章

  • Python使用AES进行盐值加密和解密
    方法一:抽象类版importbase64fromCrypto.CipherimportAESclassEncryptDate:def__init__(self,key):self.key=key.encode('utf-8')#初始化密钥self.length=AES.block_size#初始化数据块大小self.aes=AES.new(self.key,AE......
  • 使用nohup 输出到指定文件 后台运行
    在Linux系统中,使用nohup命令可以让程序在后台持续运行,即使终端会话关闭也不受影响。要将nohup命令的输出指定到特定文件,可以按照以下步骤进行操作:假设要运行的程序是your_program,希望将输出重定向到文件output.log。1、基本重定向方式使用nohup命令结合输出重定向操作符来......
  • 10.29课堂练习 AI内心独白法的使用
    在语文课堂中,向学生提问《学弈》一文中,为什么两个学生虽然一起学习下棋,但最终的学习效果却大相径庭,即“虽与之俱学,弗若之矣”,可能会得到学生以下几种回答:学生回答一:回答内容:可能是因为其中一个学生天赋比较高,所以学得快,而另一个学生天赋较差,所以学得慢。老师评价:这种回答强调了......
  • Vue3 - 完美解决html2canvas截图不全问题,截图只截取当前可视区域导出图片不全,截屏导出
    前言该解决方案任意前端技术栈通用,不仅限Vue。在vue3(手机H5移动端/微信公众号H5页面)项目开发中,使用html2canvas截屏时发现有一部分未截取到少了一块截图不完整,导出保存图片时发现截图只有一半显示不全,另外还有一个问题就是截图时截取当前可视区域的问题(出现滚动条只保......
  • 北京迅为iTOP-LS2K0500开发板快速使用编译环境虚拟机Ubuntu基础操作及设置
     迅为iTOP-LS2K0500开发板迅为iTOP-LS2K0500开发板采用龙芯LS2K0500处理器,基于龙芯自主指令系统(LoongArch)架构,片内集成64位LA264处理器核、32位DDR3控制器、2DGPU、DVO显示接口、两路PClE2.0、两路SATA2.0、四路USB2.0、一路USB3.0、两路GMAC、PCI总线、彩色黑白打印接口、HD......
  • angular - 属性修饰器的使用
    参考文章https://zhuanlan.zhihu.com/p/65764702 例子:以前的代码,针对表格的滚动区高度动态设置代码,需要在每个组件里利用ResizeObserver监听表格容器尺寸变化,然后动态修改滚动区高度,这样在代码里存在大量的相似冗余  引入属性修饰器,能够抽象公共代码,如下 业务组件......
  • .NET HangFire使用
    1.程序集Install-PackageHangfire.CoreInstall-PackageHangfire.SqlServerInstall-PackageHangfire.AspNet2.web.config加配置<connectionStrings><addname="sqlserver_connection"connectionString="DataSource=.;InitialCatalog=HangFi......
  • zblog获取tag列表函数GetTagList参数和使用方法介绍说明
    函数位置:zblogphp.php文件,大约2641行。函数参数:$select:数组,获取指定数据。$where:数组,数据获取限制规则。$order:数组,数据获取排序规则。$limit:数组,获取数据数量限制。$option:数组,附加限制选项,可用来获取指定范围内的数据。函数输出:输出一个数组。示例:{......
  • Java学习第一天《String字符串的使用》
    1.获取字符最后一次出现的位置(函数返回值为int类型)                字符串的变量名.lastIndexOf(Stringstr);                               查找a最后出现的位置               System.out.print("请......
  • 鸿蒙HarmonyOS next开发容器类库使用
    摘要容器类库是指一组用于存储和管理数据的数据结构和算法。它们提供了各种不同类型的容器,如数组、链表、树、图等,以及相关的操作和功能,如查找、插入、删除、排序等。一、容器类库线性容器1.ArrayListArrayList可以存储任意类型的对象,包括基本数据类型的包装类。与普通数......