Git&GitHub

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 1.1实现了解为什么要使用git&Github(git有什么优点)1.大部分操作在本地完成,不需要联网(但是因为是外国网站使用卡,如何解决?)2.完整性保证3.尽可能添加数据而不是删除或修改(就比如小刘、小王都对此代码进行修改,但是小刘先提交,最后代码只有小王改的而没有小刘改的(被覆盖了)而git不会出现这样的问题)4.分支操作非常快捷流畅5.与Linux命令全面兼容1.2Git是干什么用的(不重要)Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。[2] Gi

1.1实现了解为什么要使用git&Github(git有什么优点)
1.大部分操作在本地完成,不需要联网(但是因为是外国网站使用卡,如何解决?)
2.完整性保证
3.尽可能添加数据而不是删除或修改(就比如小刘、小王都对此代码进行修改,但是小刘先提交,最后代码只有小王改的而没有小刘改的(被覆盖了)而git不会出现这样的问题)
4.分支操作非常快捷流畅
5.与Linux命令全面兼容
1.2Git是干什么用的(不重要)
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。[2] Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得 BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如 最近就迁移到 Git 上来了,很多 Freedesktop 的项目也迁移到了 Git 上。

1.3Git的结构

1.4git的代码托管中心
(我们对于这些的了解主要是为了在github上发代码)
代码托管中心的任务:维护远程库
局域网环境下

GitLab服务器

外网环境下
GitHub
码云

本地库和远程库
团队内部协作
跨团队协作

本地库操作
2.1本地库初始化
命令:git init(git和Linux的命令是兼容的,Linux常用命令(为了方便之后出现的Linux的命令在旁边直接附带解释))
问题:为什么不能看.git的目录

答:在Linux中以“.”开头的都隐藏文件
解决方法:在ls-lA

效果:

设置签名

2.2基本操作
2.2.1状态查看操作( git status)
查看工作区、暂存区的状态
2.2.2添加操作(git add[file name])
将工作区的新建、修改添加到暂存区
2.2.3提交操作(git commit-m”commit message”[file name])
将暂存区的内容提交到本地库
2.2.4查看历史记录操作
2.2.5前进后退
2.2.6删除文件并找回
2.2.7比较文件差异
2.2.8命令帮助
2.3分支管理
2.3.1为什么要分支
在版本控制过程中,使用多条线同时推进多个任务
2.3.2分支的好处
同时并行推进多个功能开发,提高开发效率
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
2.3.3分支操作
实战操作
1.安装
打开Git官网下载安装程序,然后按照默认选项安装即可。
安装完成后,可在window任意窗口右键,打开Git bash软件,弹出一个类似cmd的命令行窗口,证明安装成功。

2.创建文件夹
在当前目录下mkdir <文件夹名称>

3.本地库初始化(设置你的用户名和Email地址)

我们可以查看一下用户名和密码:

注:只能注册一次保存最开始你设置的用户名和密码,后来设置的都没用
如果报错了
假如我们这时候报错,证明Git的用户名和密码没有配置成功,我们还可以这样做:
在用户主目录下找到 .git 文件夹:
然后打开 config 文件,这是专门用来配置和读取相应的工作环境变量的,在里面加上如图所示内容:

这样也就完成了对Git用户名和邮箱的配置。
3.创建版本库
版本库(repository)也叫仓库,可以看做一个目录,这个目录里的所以文件都由Git进行管理,每个文件的修改、删除,Git都能跟踪。
①首先输入git status来查看工作区、暂存区的状态
一般来说我们会的得到这样的一组代码
原因是因为我们没有创建版本库导致的先输入创建一个空文本

输入一些内容,问题如何退出:先esc再:最后wq保存退出
再次输入git status,我们会得到
现在我们添加一下这个文本,当我们再次使用git status查看时就正常了,而输入则会恢复道之前的状态
输入git commit 来进行提交,我们会的得到这样的一个页面:

我们按ESC键命令模式输入:set nu再按i键进入编辑模式,输入,最后按ESC键进入命令模式,再输入:,最后输入wq进行保存就可以了
输入cat good.txt就能看见之前我们在good.txt中添加的文本
注:cat  由第一行开始显示文件内容
当我们再次输入vim good.txt添加新的信息时,
系统知道我们更新了新的内容,我们可以像之前一样输入git add good.txt再输入git commit 提交,再如之前一样。也可以输入git commit -m”...”good.txt
4.版本穿梭
多屏显示控制方式:
空格向下翻页
b向上翻页
q退出
如果添加或修改代码次数较多可以使用git log --pretty=oneline可以方便我们的查看
或者git log --oneline(只选择哈希值的其中一部分+指针)

再者是git reflog (有利于我们的版本穿梭,会显示从第一个版本到达我想去的版本需要几步)
5.前进后退
本质 空指针→HEAD@{移动到当前版本需要多少步}
基于索引值操作【推荐】

   当前版本
    
   进行版本穿梭
   

现在的版本

   
   同样操作回到原来的版本
   

使用^符号:只能后退


注:一个^表示后退一步,n个表示后退n步

使用~符合:只能后退
git reset --hard HEAD~n
注:表示后退N步
reset 命令的三个参数对比:
--soft参数 仅仅在本地数据库移动HEAD指针
--mixed参数 在本地数据库移动HEAD指针、重置暂存区
--hard参数 在本地数据库移动HEAD指针、重置暂存区、重置工作区
6.删除文件并找回
首先我们先简单的创建一个文本
再将它删除
 rm test.txt 删除test.txt的文件(带询问的删除,需输入y才能删除)
当我们再次查看时,就只有我们原先创造的文件,并且这次的操作会不被记录
所以删除这个行为我们也需要进行提交

注:(在此我解释一下我们这里的删除并不是真正意义上的删除只是在我们现在这个版本下此文件不存在,但在上一个版本中他是存在的,其中两个时间点的关联是你已经将这个文件提交了,而我们找回已删除的文本的方法就是返回删除之前的那个版本,如果想要彻底删除,除非你把这个文本库删除掉)

7.比较文件
git diff[文件名] 将工作区中的文件和暂存区进行比较
(我自己的话:将本次改完的文件与改之前的那个版本进行比较)

git diff本地库中历史版本 将工作区中的文件和本地库历史记录比较
(我自己的话:将此次的版本与之前修改的任意一版进行比较)

不带文件名比较多个文件
(我自己的话:将当前版本和之前修改的每一个版本都进行比较)
像这次我将good.txt的文本进行更改

而我对比不带文件名的话它会将所有文件进行对比

8.分支操作
创建分支
git branch[文件名]

查看分支
git branch -v(绿色的地方就是显示你现在所处的分支上,其实后面的蓝字也是我们所在的分支的提示)

切换分支
git checkout[分支名]

这是最终效果

合并分支

    ①切换到接受修改的分支(被合并,添加新内容)上
      git checkout [被合并的分支的文件名]

    ②执行merge命令
      git merge[有新内容分支名]

而最终的效果是我的second.txt文件添加了新的文本

解决冲突

冲突的表现

冲突的解决
①编辑文件,删除特殊符号

②把文件修改到满意的程度,保存退出
③git add[文件名]
④git commit -m”日志信息”
注:此时commit一定不能带具体文件名不然会显示错误

Hash算法(了解)
哈希是一个系列的加密算法,各个不同的哈希算法虽然加密强度不同,但是有以下几个共同点:
①不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定。
②哈希算法确定,输入数据确定,输出数据能够保证不变Ⅰ
③哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大
④哈希算法不可逆
Git底层采用的是 SHA-1算法。

以下是git分支管理机制,用我自己的话说:
首先我们刚刚了解了Hash的管理原理,而知道它是因为数据改变不断更新加密密码而git是内容更新加密密码改变但是不覆盖原来的加密密码。
而git的分支管理的本质是创建和移动指针
在Java中我们移动指针需要new进行初始化,但是在git中我们可以通过checkout来移动指针HEAD的位置

相关文章
|
1月前
|
开发工具 git
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
185 69
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
|
3天前
|
网络安全 开发工具 git
解决 Git 访问 GitHub 时的 SSL 错误
通过上述步骤,可以有效解决 Git 访问 GitHub 时的 SSL 错误。推荐优先更新 CA 证书和正确配置 Git 使用 CA 证书,避免禁用 SSL 验证。如果问题持续,可以切换到 SSH 方式访问 GitHub,确保连接的安全性和稳定性。希望这些内容对您的学习和工作有所帮助。
43 3
|
1月前
|
Devops Shell 网络安全
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
84 16
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
|
3月前
|
网络安全 开发工具 git
解决fatal:remote error:You can’t push to git://github.com/username/*.g
通过上述诊断与修复步骤,绝大多数的推送错误都能得到有效解决,确保您的Git工作流顺畅无阻。
295 1
|
3月前
|
Linux 网络安全 开发工具
IDEA如何配置git和github
【11月更文挑战第14天】本指南详细介绍了如何在 IntelliJ IDEA 中配置 Git 和 GitHub,包括检查和设置 Git 路径、测试配置,以及通过 SSH 或 HTTPS 方式配置 GitHub 仓库的具体步骤。完成配置后,用户可在 IDEA 中轻松进行版本控制操作。
462 0
|
4月前
|
Unix Shell 网络安全
git学习六:(bug总结)git@github.com: Permission denied (publickey).等
本文是关于解决在使用Git和GitHub时遇到的“git@github.com: Permission denied (publickey)”错误的指南。文章提供了详细的步骤,包括确认SSH Agent运行状态、检查密钥配置、确保密钥匹配、验证仓库URL、检查权限和代理设置,以及配置SSH文件。这些步骤帮助用户诊断并解决SSH认证问题。
502 0
|
5月前
|
开发工具 git 开发者
掌握版本控制的艺术:Git 与 GitHub 的高效使用指南
在软件开发中,版本控制对于代码管理和团队协作至关重要。本文详细介绍了 Git 的核心概念与命令,包括初始化、创建仓库、文件跟踪、分支管理和远程仓库操作。同时,探讨了如何利用 GitHub 进行项目组织、代码审查及自动化工作流。通过遵循最佳实践,如频繁提交、清晰的信息记录和合理使用分支,开发者可以提升工作效率和团队协作能力,确保项目的持续成功。
|
5月前
|
Shell 网络安全 开发工具
Git,GitHub,Gitee&IDEA集成Git
Git提交项目到GitHub简洁版、版本控制、安装、常用命令、分支、团队协作机制、Github、Gitee远程仓库、IDEA集成Git、IDEA集成Github、IDEA集成Gitee
|
5月前
|
Shell 网络安全 开发工具
fatal: unable to access 'https://github.com/wolfcw/libfaketime.git/': Encountered end of file
fatal: unable to access 'https://github.com/wolfcw/libfaketime.git/': Encountered end of file
|
7月前
|
网络安全 开发工具 git
【git】解决git报错:ssh:connect to host github.com port 22: Connection timed out 亲测有效
【git】解决git报错:ssh:connect to host github.com port 22: Connection timed out 亲测有效
2454 1