当前位置: 首页 > article >正文

git日常学习

前言

作者:小蜗牛向前冲

名言:我可以接受失败,但我不能接受放弃

  如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正

目录

一、git的基本配置

1、git是什么

2、gitee创建仓库

3、配置SHH公钥 

4、配置本地仓库 

二、git的使用

1、git的常见命令

2、git的第一次提交

三、git冲突的解决

1、同一文件同一位置被多个分支修改


引言:最近实习用到了git,以前虽然也用过,但是都是git的三板斧操作。刚刚实现的出现的冲突让我非常头大。简单记录一下。自己的学习路径。 

一、git的基本配置

1、git是什么

Git是由Linux之父林纳斯·托瓦兹(Linus Torvalds)创造出来的。他当时的初衷是为了更好的开发管理Liunx的内核,git他能够支持人们对本地代码追踪的管理。也就是支持代码的版本管理多人开发。

核心功能:

  1. 版本跟踪 记录文件的所有修改历史,可随时查看或恢复到任意时间点的状态。

  2. 协作开发 多人可同时修改同一项目,自动合并代码变更,解决冲突。

  3. 分支管理 支持创建独立分支(如开发新功能或修复 Bug),完成后合并到主分支。

2、gitee创建仓库

对于git大家自行在官网下载就好了。有些急性的小伙伴是不认为,下载了git之后我们就能使用了。但是在实际的开发我们还需要配合Gitee、GitHub等基于 Git 的代码托管平台,提供可视化界面和协作工具。

这里我以gitee平台来为大家讲解,在使用git进行版本管理时要做的工作。

首先我们来到gitee的主页,为项目创建我们的远程仓库,点击图片上的加号

点击创建仓库,这里的配置大家可以自行选择是否开源,仓库的初始化内容,分支模型的选择等。

 当项目创建好后,就有如下文件,这里我们重点要关注的gitignore文件。这里是配置我们要忽略的文件,因为远程仓库的大小是有限的(普通用户1024MB),如果我们把可执行文件,没有传多少代码,就会导致远程仓库内存不足,无法在上传代码。

为了避免上面的问题,这里我们提前配置好自己忽略内容。在gitignore的内容,大家可以自行配置。下面是我配置的参考

# Build and Release Folders
bin-debug/
bin-release/
[Oo]bj/
[Bb]in/

# Other files and folders
.settings/

# Executables
*.swf
*.air
*.ipa
*.apk

#过滤掉不想要文件和文件夹
*.exe
*.sln
*.vcxproj
*.filters
*.user
*.suo
*.db
*.ipch
Debug/
.vs

# Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties`
# should NOT be excluded as they contain compiler settings and other important
# information for Eclipse / Flash Builder.

当我们把远程仓库创建好了后,就要创建我们的本地仓库 :

3、配置SHH公钥 

首先我们来到C盘的管理员目录下创建一个.ssh文件。如何在这个文件夹下运行:

# 生成公匙和私钥
ssh-keygen -t rsa

这里就会看到 在.ssh文件下生成了两个文件,.pub结尾的就是公钥,另外一个是私钥

我们在使用计事本打开,复制里面的公钥 。

在gitee上进行配置zhongweiliang@RD34,其中zhongweiliang是管理员的名字,RD34是主机号

 确定后验证一下就可以配置成功了

4、配置本地仓库 

 这里将远程仓库克隆到本地,按照顺序复制,在git的命令行点击就可以了

在本地我们创建一个test的文件夹,在点击右键,当你成功按照git后会发现git的图标 ,运行Open Git Bash here

复制下面的git clone输入就可以配置成功了 

 

在test文件夹下会在多了文件testgit就是我们的远程仓库就克隆到本地来了 

二、git的使用

1、git的常见命令

下面都是git的常见命令,这里我们常用的三板斧就是"git add ."。"git commit -m","git push"。其他的命令大家慢慢掌握就好

Git 提交和查看历史

  • git add <file>
    将文件添加到暂存区。
  • git commit -m "message"
    提交更改并附加提交信息。
  • git log
    查看提交历史。
  • git status
    查看当前工作区的状态。
  • git diff
    查看文件的差异。

Git 分支管理

  • git branch
    列出本地所有分支。
  • git branch <branch_name>
    创建一个新分支。
  • git checkout <branch_name>
    切换到指定的分支。
  • git checkout -b <branch_name>
    创建并切换到一个新分支。
  • git merge <branch_name>
    合并指定的分支到当前分支。
  • git branch -d <branch_name>
    删除指定的本地分支。

Git 远程操作

  • git push origin <branch_name>
    将本地分支推送到远程仓库。
  • git pull origin <branch_name>
    从远程仓库拉取并合并指定分支。
  • git fetch
    从远程仓库获取最新的更改(但不合并)。
  • git remote -v
    查看远程仓库信息。

Git 恢复和撤销

  • git reset --hard
    重置工作区和暂存区为最近一次提交的状态。
  • git reset <file>
    将文件从暂存区移除。
  • git revert <commit_hash>
    创建一个新的提交来撤销指定的提交。
  • git clean -f
    删除未跟踪的文件。

查看和比较

  • git diff <commit1> <commit2>
    比较两个提交之间的差异。
  • git show <commit_hash>
    查看某个提交的详细信息。
  • git blame <file>
    查看文件的每一行由谁最后修改。

2、git的第一次提交

这里输入在git的终端上输入我们的三板斧,就可以完成第一次提交。

在远程我也看到对应的文件 

三、git冲突的解决

刚刚我直接在master分支传代码肯定是不会存在冲突的,但是如果在进行多人开发情况下,就有可能存在冲突。比如嘟嘟和兔兔二个人联合开发一个项目,为了同时候进行开发,他们利用git进行版本管理,在gitee上创建一个项目远程仓库。他们二个人都创建二个分支,在这个分支上进行开发,开发完毕在合并到master分支上。大家看到这里可能有点不理解。分支是个什么东西。下面直接看例子理解就好了。

这里我为二人创建了二个分支:ping和zhang

git checkout -b ping
git checkout -b zhang

这里我们可以清晰看到分支的变化,最开始是在master分支上(也就是主分支),然后我创建二个从分支。这里-b指令是创建分支后,并且而且到新分支上。 

1、同一文件同一位置被多个分支修改

指令我让兔兔在他的分支zhang上,新开发了一个功能。

通过三板斧提交到远程仓库中 

在当前远程分支上我们也能看到对应的 

 

指令我在切换到ping分支,也就是嘟嘟在开发的分支上进行新的开发。,并且提交到远程。

 远程对应分支上也能看到嘟嘟的提交

但是是我们切换到master分支上,仍然是我们最初的代码

这里时候我们就要合并代码。到master分支。

虽然我们能通过切换到matser分支上,进行git merge <branch_name>。但是在实际开发中是不被运行的。而且我们往往是没有权限,这里时候我们往往是在gitee上一个发一个pull Request请求合并。

然后有权限的相关人员就要进行代码审查(也就是解决冲突),代码测试等相关操作。 

 这里查看如果是绿色表示可以直接合并

没有什么问题,我们就可以合并分。

下面我们同理在和并兔兔的开发代码zhang分支:

但是当我们请求的时候,发现无法自动合并的冲突,这是为什么呢

我们切换都zhang分支进行查看,发现maser分支领先了我们。 我们查看matser分支的网络图可以发现,我们二个人其实都在简单提交那个版本,创建的分支分支。但是嘟嘟ping这个分支先将他的代码提交到master中去了。也就是说此时master板块是领先zhang分支的。这个时候肯定是存在冲突的。

 ​​​​​​

这里时候对于zhang分支,我们可以就要先拉取master分支合并到zhang分支进行更新。

这里我们可以通过gitee界面进行:

 也可以通过命令行的形式进行 

git pull origin master

 这意味着在文件 test/test/mian.cpp 中,存在冲突的内容,你需要手动解决冲突。

 这里打开对应的文件进行冲突解决。因为我们当时都是对function2这个变量进行续改,所有我们需要选择保留其中一个版本就可以了

那我们这里保留嘟嘟的版本就可以了

这里我在去gitee上处理pull Request就可以了

总结: 

其实每次我们在push的时候,都可以pull一下拉取远程分支,解决冲突后在上传是一个好习惯。

 


http://www.kler.cn/a/598036.html

相关文章:

  • prompt工程起步
  • AI基础01-文本数据采集
  • C语言-装饰器模式详解与实践 - LED控制系统
  • 【MySQL】从零开始:掌握MySQL数据库的核心概念(三)
  • 对接OpenAI 4O RealTime实现语音实时翻译
  • 【Json-RPC框架】:Json存储结构,operator[ ]返回的就是对应的value对象
  • nnunet复现第一天
  • 【weixin9006】优购电商小程序的设计与实现
  • 人工智能之数学基础:特征值和特征向量
  • Pytorch深度学习教程_9_nn模块构建神经网络
  • 数据建模流程: 概念模型>>逻辑模型>>物理模型
  • 大数据驱动:UI设计如何更懂用户
  • 数据结构与算法:宽度优先遍历
  • [node] 4 http模块
  • 【C++教程】break语句
  • MOE框架详解与实现
  • hackmyvm-lookup
  • 数组,指针 易混题解析(二)
  • golang Error的一些坑
  • 唯品会商品详情页架构设计与实现:高并发场景下的技术实践‌