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他能够支持人们对本地代码追踪的管理。也就是支持代码的版本管理和多人开发。
核心功能:
版本跟踪 记录文件的所有修改历史,可随时查看或恢复到任意时间点的状态。
协作开发 多人可同时修改同一项目,自动合并代码变更,解决冲突。
分支管理 支持创建独立分支(如开发新功能或修复 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一下拉取远程分支,解决冲突后在上传是一个好习惯。