【设置后的使用】Git从 0 到 1 全指南【万字保姆级教程】
https://img-blog.csdnimg.cn/direct/6af9e85c4ac549d2bcc1bc11f484e6e1.jpeg🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀各种软件安装与设置_十二月的猫的博客-CSDN博客
💪🏻 十二月的隆冬拦截不了春天的脚步,十二点的黑夜掩藏不住黎明的曙光
目次
1. 媒介
2. 获取当地堆栈
3.Git的根本指令
3.1 git log查察提交日记
3.2 git reset 版本回退
3.3 添加文件至忽略列表
3.4 必记的Git指令
4. Git中的分支
4.1 分支的根本指令
4.2 怎样办理分支辩说
4.3 差别分支的作用和使用原则
5. Git的长途堆栈
5.1 进入Gitee并新建堆栈
5.2 填入堆栈根本信息
5.3 设置SSH公钥
5.3.1 天生SSH公钥
5.3.2 查察SSH公钥
5.3.2 在Gitee中设置SSH公钥
5.3.3 验证与Gitee的SSH毗连是否乐成
5.4 当地堆栈毗连长途堆栈
5.5 当地堆栈推送到长途堆栈
5.6 当地分支与长途分支的关联关系
5.7 长途堆栈clone到当地堆栈
5.8 长途堆栈抓取和拉取到当地堆栈
5.9 长途堆栈下办理归并辩说
6. 总结
1. 媒介
2. 获取当地堆栈
要使用Git对我们的代码举行版本控制/协作管理,我们起首要有本身的当地堆栈。获取当地堆栈的步调如下:
[*]创建一个目次,作为当地的Git堆栈。https://i-blog.csdnimg.cn/direct/f3accf3c347c4a84a409fe22ca0287b0.png
[*]进入目次中,右键打开Git bash窗口。https://i-blog.csdnimg.cn/direct/807873b2a5db4cbd9114660230e66c02.png
[*]实行下令 git init。https://i-blog.csdnimg.cn/direct/f6d5d739e69248be820f0a7f666c61b6.png
[*]如果创建乐成可以在文件夹下面看到潜伏的.git目次。https://i-blog.csdnimg.cn/direct/39ae9907831844fd8efa1fde0666123c.png
3.Git的根本指令
动态明白:相识状态变革。
静态明白:相识状态所属地域,以及各个地域在git status指令中的形貌
指令明白:相识指令和状态变革的关系。
状态变革形貌:
[*]新创建一个文件——》文件状态:未跟踪。
[*]修改已有文件——》文件状态:未暂存。
[*]对发生变革文件(创建或修改)git add——》文件状态:已暂存。
[*]对已暂存文件git commit——》文件状态:进入堆栈。
状态所属地域:
[*]未跟踪和未暂存都处于工作区,分析文件正在被修改。
[*]已暂存处于暂存区。
[*]commit后进入堆栈。
干系下令:
[*]git add:从工作区转向暂存区。
[*]git commit:从暂存区转向堆栈。
[*]git status:看文件现在所属的状态。
[*]git log:看文件提交的各种信息(提交人、提交时间、提交文件名、提交位置)
[*]下令背面跟 文件名 或 通配符.
差别地域在git status中的形貌:
[*]工作区:untarcked file、changes not staged for commit
[*]暂存区:changes to be commited
[*]堆栈:界面比力干净(大概为:nothing to commit,以及 on branch master等)
https://i-blog.csdnimg.cn/direct/a8cc902f8a0b4191b619d030dc6abea6.png
3.1 git log查察提交日记
git log 指令中的差别下令:
[*]--all 体现全部分支
[*]--pretty=online 将提交信息体现为一行
[*]--abbrev-commit 输出的commitid更简短
[*]--graph 以图的情势体现
[*]上面全部的下令有差别的功能,从差别方面简化git log的输出。一样平常是一起使用。
https://i-blog.csdnimg.cn/direct/f0aa38cebe1240f68dec71b256c8ba24.png
如果之前有看过我的安装与设置Git的文章。你会看到我有下面的设置:
https://i-blog.csdnimg.cn/direct/2e7deaa6f97643fba743af64f80cfdf9.png
这个设置就是将git log连续串的下令简化为缩写:git -log
一句话:平常输出用git log;优化输出用git -log
3.2 git reset 版本回退
git reset 指令中的差别下令:
[*]--hard commitID:切换到特定版本(commitID是版本号,可以用git log来查察)
git bash中的复制粘贴:
1. 复制:选中即可自动复制
2. 粘贴:点击滚轮即可粘贴
怎样查察已经删除的纪录呢(回退后最新的处置惩罚纪录会被删除)?
[*] git --reflog
https://i-blog.csdnimg.cn/direct/71aa6fdf8d4c474dbbb12530eb647ae3.png
3.3 添加文件至忽略列表
一样平常我们总会有些文件无需纳入Git的管理,也不盼望它们总出现在未跟踪文件列表。通常都是些自动天生的文件,比如日记文件,大概编译过程中创建的临时文件等。在这种情况下,我们可以在工作目次中创建一个名为.gitignore的文件(文件名称固定),列出要忽略的文件模式。下面是一个示例:
https://i-blog.csdnimg.cn/direct/cca92694d1d74fa983148077e3a235ae.png
3.4 必记的Git指令
https://i-blog.csdnimg.cn/direct/14e5be8e88ad455e90347377781800f9.png
4. Git中的分支
险些全部的版本控制体系都以某种情势支持分支。使用分支意味着你可以把你的工作从开辟主线上分离开来举行庞大的Bug修改、开辟新的功能,以免影响开辟主线。
[*]分支:每个人开辟互不影响。
[*]归并:差别人开辟的内容共同协作。
4.1 分支的根本指令
[*]git branch:查察现在分支。
[*]git branch 分支名:创建当地分支
[*]git branch -d 分支名:删除分支,并作各种查抄
[*]git branch -D 分支名:逼迫删除分支
[*]git branch -vv:看当地堆栈分支和长途堆栈分支的对应关系
[*]git checkout 分支名:切换分支
[*]git checkout -b 分支名:创建并切换分支
[*]git merge 分支名称:把分支名称地点分支归并到现在的分支中(一样平常会把其他分支归并到master上面)
增补1:逼迫删除
https://i-blog.csdnimg.cn/direct/a85128d3a7194ca3a5095c3a22788a96.png
增补2:快速提交
https://i-blog.csdnimg.cn/direct/0f3ea90a84ef49e2be862e66d00945c6.png
https://i-blog.csdnimg.cn/direct/0150a9326ea845ccb5eafc246a921612.png
一个标题:为什么此时对dev的修改并没有让上面两个分支master和dev独立成两个分支(和下面一样),而是dev直接在master上面两者并列??
快进模式:当本来雷同的两个分支中的一个出现改动时,并不代表两者肯定要分裂出两个分支,由于改动的分支本质上可以取代并为改动的分支。因此在merge时会快进模式归并。
https://i-blog.csdnimg.cn/direct/fda2f6b4ad4e480aa326294643a4890b.png
4.2 怎样办理分支辩说
两个分支上对文件的修改大概会存在辩说,例犹如时修改了同一个文件的同一行这时就须要手动办理辩说,办理辩说步调如下:
[*]手动处置惩罚文件中的辩说
[*]将办理完辩说的文件参加暂存区
[*]提交到堆栈中
https://i-blog.csdnimg.cn/direct/117a8c01ad5e4f19b7dc9d26c1a67f9b.png
4.3 差别分支的作用和使用原则
险些全部的版本控制体系都以某种情势支持分支。使用分支意味着你可以把你的工作从开辟主线上分离开来举行庞大的Bug修改、开辟新的功能,以免影响开辟主线。
差别分支的作用和使用原则:
[*]master分支:主分支,对于中小型规模项目作为线上运行应用的唯一分支。
[*]develop分支:开辟分支,是从master创建的分支,一样平常作为开辟部分的重要开辟分支,如果没有其他并行开辟差别期上线要求,都可以在此版本举行开辟,阶段开辟完成后,须要是归并到master分支,预备上线。
[*]feature分支:特性分支,从develop创建的分支,一样平常是同期并行开辟,但差别期上线时创建的分支,分支上的研发使命完成后归并到develop分支。
[*]hotfix分支:热修复分支,从master派生的分支般作为线上bug修复使用,修复完成后须要归并到master、test、develop分支。
https://i-blog.csdnimg.cn/direct/73a9c7e1fd4c4f49b691cd8303ba1798.png
5. Git的长途堆栈
前面我们已经知道了Git中存在两种范例的堆栈,即当地堆栈和长途堆栈。那么我们怎样搭建Git长途堆栈呢?我们可以借助互联网上提供的一些代码托管服务来实现,此中比力常用的有GitHub、码云、GitLab等。gitHub(地点:https://github.com/)是一个面向开源及私有软件项目标托管平台,由于只支持Git作为唯一的版本库格式举行托管,故名gitHub码云(也叫gitee)是国内的一个代码托管平台,由于服务器在国内,以是相比于GitHub,码云速率会更快。GitLab是一个用于堆栈管理体系的开源项目,使用Git作为代码管理工具,并在此底子上搭建起来的web服务,一样平常用于在企业、学校等内部网络搭建git私服。
这里我们选用gitee作为我们的解说对象
5.1 进入Gitee并新建堆栈
1. 搜刮Gitee官网:工作台 - Gitee.com
2. 点击+号,选择新建堆栈
https://i-blog.csdnimg.cn/direct/a22e551ee1b84cc097b544e22635cec8.png
5.2 填入堆栈根本信息
留意:下面的三个单选框一个都不要选,由于我们有堆栈了,只要上传而不是在这里初始化
https://i-blog.csdnimg.cn/direct/01074895f9aa490eae2e601998978212.png
5.3 设置SSH公钥
5.3.1 天生SSH公钥
ssh-keygen -t rsa 然后不停回车,如果公钥已经存在则须要覆盖
https://i-blog.csdnimg.cn/direct/d1955e03445848aa80495227c0312033.png
5.3.2 查察SSH公钥
cat ~/.ssh/id_rsa.pub https://i-blog.csdnimg.cn/direct/cf3faba0af54410fb10d4f8c4aba6e8b.png
5.3.2 在Gitee中设置SSH公钥
1. 头像-账号设置:
https://i-blog.csdnimg.cn/direct/82b5fd96b0a44244b0aa83bc809c8f9f.png
2. 左边栏-SSH公钥-复制进去:
https://i-blog.csdnimg.cn/direct/5d22ea398a374fc792da5aadc0fcf46a.png
https://i-blog.csdnimg.cn/direct/5e4ab2fc31b449c88ae9e89f38b0f036.png
5.3.3 验证与Gitee的SSH毗连是否乐成
ssh -T git@gitee.com 出现下面的图片则代表毗连乐成:
https://i-blog.csdnimg.cn/direct/604ef0c8ce54435a8238f30327a07b30.png
5.3.4 在Github中设置SSH公钥
1. 进入Settings设置:
https://i-blog.csdnimg.cn/direct/25427f80146e46d98c56d411d00c83a1.png
2. 添加ssh key,把刚才复制的内容粘贴上去生存即可:
https://i-blog.csdnimg.cn/direct/790a74c98baa416399ac341a76100d1c.png
5.3.5 验证与Github的SSH毗连是否乐成
ssh -T git@github.com
体现如下信息表明设置乐成
https://i-blog.csdnimg.cn/direct/8db70251b5604ec688773155873707d2.png
5.4 当地堆栈毗连长途堆栈
1. 克隆下载-SSH-复制长途堆栈的SSH毗连地点:
https://i-blog.csdnimg.cn/direct/23e09df8c6a647b8859057d45fec521d.png
2. 绑定当地堆栈和长途堆栈:
git remote
add 远端名称 仓库路径
[*]长途堆栈名称业内一样平常叫:origin。
[*]堆栈地点就是上面复制的地点。
https://i-blog.csdnimg.cn/direct/fc8a39dec7ce41f6971e65624f784cde.png
如上图,没有报错就是添加乐成了~~
3. 查察长途堆栈:
git remote
https://i-blog.csdnimg.cn/direct/420b5fcc115c44b89afa31303924aa8e.png
5.5 当地堆栈推送到长途堆栈
git push [-f] [--set-upstream] 远端名称 本地分支名
[*][]:中央为可选写入。
[*]-f:当地和长途堆栈修改了同样的文件,则体现逼迫覆盖。
[*]--set-upstream:推送到远端堆栈的同时创建和远端分支和当地分支的关联关系。
https://i-blog.csdnimg.cn/direct/1adabb7d9692451289ed1ab49618423c.png
然后猫猫看到了下面的标题:
https://i-blog.csdnimg.cn/direct/e18ca89910a84ac7a347d04ebced4d23.png
缘故原由:当地堆栈中是空的。因此,猫猫先后运行了git add. \ git commit -m "Init commit" 将文件夹中的文件转到当地堆栈中
然后再运行:
git push origin master https://i-blog.csdnimg.cn/direct/9acd58c6d57d47fa8dc4742a0d3b8e54.png
到Gitee中看看情况:
https://i-blog.csdnimg.cn/direct/ef120c6286504cafa3c521ea9ae7289c.png
确实是从当地堆栈中git push到长途堆栈中了
5.6 当地分支与长途分支的关联关系
git push --set-upstream origin master 将当地分支master和长途堆栈的master分支创建关联,如下图:
https://i-blog.csdnimg.cn/direct/54561995cd0d49f5be84d8f7abe6cb9a.png
然后查察关联关系:
https://i-blog.csdnimg.cn/direct/eb13daa65e274aa7ab77f42beca8bb02.png
绑定后即可直接用下面指令完成推送:
git push https://i-blog.csdnimg.cn/direct/b30f993467a246f1b98fef80c9cc789d.png
5.7 长途堆栈clone到当地堆栈
如果已经有一个远端堆栈,我们可以直接clone到当地,指令如下:
git clone 仓库路径 本地目录 https://i-blog.csdnimg.cn/direct/48914334ae194c05bf97d42f9c4366cf.png
留意:clone仅仅第一次使用项目时会用一次,不会每次都clone取得到最新的项目进度。
5.8 长途堆栈抓取和拉取到当地堆栈
抓取下令如下:
git fetch remote name branch name
[*]抓取指令就是将堆栈里的更新都抓取到当地,不会举行归并
[*]如果不指定远端名称和分支名,则抓取全部分支。
拉取下令如下:
git pull remote name branch name
[*]拉取指令就是将远端堆栈的修改拉到当地并自动举行归并,等同于fetch+merge
[*]如果不指定远端名称和分支名,则抓取全部并更新当前分支。
5.9 长途堆栈下办理归并辩说
在一段时间,A、B用户修改了同一个文件,且修改了同一行位置的代码,此时会发生归并辩说。 A用户在当地修改代码后优先推送到长途堆栈,此时B用户在当地修订代码,提交到当地堆栈后,也须要 推送到长途堆栈,此时B用户晚于A用户,故须要先拉取长途堆栈的提交,颠末归并后才华推送到远端分支, 如下图所示:
https://i-blog.csdnimg.cn/direct/ba73ca63928a4e5ebd359406f8a7f61e.png
简朴来说:假设B修改代码的时间,A提交了长途堆栈上的修改。他们又修改了同一个位置的代码,此时当B去pull的时间就会发生错误,由于辩说了无法更新。此时B就须要手动去确定辩说位置到底要以本身B的修改还是A的修改为准,末了B在决定后push推送给长途堆栈。
6. 总结
SSH验证原理:
SSH登录安全性由非对称加密包管,产生密钥时,一次产生两个密钥,一个公钥,一个私钥,在git中一样平常定名为id_rsa.pub, id_rsa。那么怎样使用天生的一个私钥一个公钥举行验证呢?
[*]当地天生一个密钥对,此中公钥放到长途主机,私钥生存在当地
[*]当本田主机须要登录长途主机时,本田主机向长途主机发送一个登录哀求,长途收到消息后,随机天生一个字符串并用公钥加密,发回给当地。当地拿到该字符串,用存放在当地的私钥举行解密,再次发送到长途,长途比对该解密后的字符串与源字符串是否等同,如果等同则认证乐成。
到这里猫猫来说一个实用的东西:
[*]我们一台电脑中的一个用户一样平常使用一个SSH即可
[*]那这个SSH的公钥给你的Github和Gitee,然后你这个用户就可以访问你的这两个账户
[*]如果我们有其他的电脑,或其他的账户,此时他们也要天生本身的SSH。同时把这个SSH的公钥输入到你的Github和Gitee中,然后你的别的一台电脑也就可以毗连上你的Github和Gitee账户啦
本文重要参考:黑马步调员的零底子入门Git同时加上了猫猫本身的明白和实践中出现的标题
保举专栏💘:
各种软件安装与设置_十二月的猫的博客-CSDN博客
保举文章💘:【一篇搞定设置】CLion安装设置与使用(含编译乱码、Build失败等标题的办理)(附破解方法)-CSDN博客 【一篇搞定设置】MySQL安装与设置_mysql设置-CSDN博客
【一篇搞定设置】小白安装labelimg常见标题及其缘故原由(带知识点明白)_python labelimg 不好用-CSDN博客
https://i-blog.csdnimg.cn/direct/41234de5bab7421aa0809996ca0e78a1.gif
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]