GIT 是啥,不是啥......版本控制?

Posted

技术标签:

【中文标题】GIT 是啥,不是啥......版本控制?【英文标题】:What GIT is and what it is not.. version control?GIT 是什么,不是什么......版本控制? 【发布时间】:2019-05-22 09:08:01 【问题描述】:

好的,所以我无法理解 git 做什么或不做什么。

当我听到版本控制时,我想我不再需要在我的计算机上存储不同的文件,它们的代码基本相同,只需稍作改动。

例如,如果我有一个 C 文件,我在其中使用 timer1 生成一个 PWM 但后来我想用 timer2 测试它。我通常会将代码注释掉并尝试一下。或者我会复制 C 文件并对其进行修改,而不用担心破坏我的工作代码。然后我会继续尝试其他事情,始终拥有我的原始文件和工作代码。

现在有了 git,我想我可以拥有我的代码并完成所有这些提交,如果我想回到原始版本,它会很好而且安全,因此可以进行版本控制。但我正在尝试一些关于 codecademy 的在线教程。

我有一个本地存储库,已发送到 github。 我有一个自述文件,我对其进行编辑并发送到 git hub 并显示出来。然后我做了更多的更改并再次发送。

然后我使用提交 sha 进行了重置。我尝试推送它,它说我本地的头与遥控器不匹配。然后我检查了自述文件,我希望它恢复到我的版本 1,但它没有......所以我没有这些文件的多个版本?

所以我不了解版本控制部分...我可以拥有一个文件的多个版本,并且 git 会跟踪所有版本以及将我的文件恢复到版本 1 的能力...或者我是这里遗漏了什么?

因为我认为这样做是:

    我有一个文件

    我修改了我的文件

    我使用 git 进行版本控制 我编辑了我的文件,git 会以某种方式将其索引为版本 2,并且它将具有我的版本 1 的备份版本。 我一直在编辑和提交,git 会跟踪对我的文件所做的所有更改,并且我总是可以返回到我的文件的旧版本。

我认为它是如何做到这一点的,而不仅仅是复制我所做的文件,但在我看来我们还没有做到这一点,这不是 git 所做的。

【问题讨论】:

您的期望是良好且正确的,您可能只是想使用另一个(“由人类和为人民制造”)VCS,而不是 Git 您是reset 还是revert ?这可以对与遥控器同步产生影响 【参考方案1】:

问:我能否拥有一个文件的多个版本,并且 git 会跟踪所有版本以及将我的文件恢复到版本 1 的能力?

答:是的。绝对没错。那,还有很多很多。

问:我真的需要 Github 吗?

A:不。您可以完全在本地充分利用 Git。与 SVN 或 Visual Sourcesafe 等版本控制系统 (VCS) 不同,Git 不是 客户端/服务器。每个 Git 存储库都是完整且自给自足的。

问:那为什么还要使用 GitHub?

答:仅仅是因为有时能够从“云”同步您的本地存储库到您想要的任何位置是很有用的。或者能够与您想要的任何人共享您的存储库,无论他们是否有权访问您的工作站。

用 Git 的说法,Github 是“远程存储库”的一个示例。

建议:

尝试一些说明基本 Git 工作流程(签入、签出、差异更改、创建和合并分支)的教程不要弄乱 Github。

我认为这可能不那么令人困惑,并且可以让您更清楚地了解“为什么使用 Git”。

其实,本月的 Linux 杂志上有一篇很好的介绍性文章:

http://www.linux-magazine.com/Issues/2018/216/Version-Control-with-Git

PS:

为什么会出现错误?一些可能的原因。基本上,您的远程(Github)与您的本地存储库不同步。有很多方法可以解决它;它们都不难。

git status 是获取更多信息的一种方式。

但也许最好的办法就是不要乱用 Github,直到你对 Git 本身感觉更舒服一点。

【讨论】:

您可以完全在本地充分利用 Git。 或使用任何其他 git 托管; Github 只是众多主机之一。 问:那为什么还要使用 GitHub? Github 赢得了这场竞赛,因为他们是第一个从分叉代码存储库网络创建~社交网络~的人。【参考方案2】:

是的,Git 用于版本控制。尽管有许多其他工具用于相同目的,但 Git 是一种分布式版本控制,这意味着每个用户都可以维护一个本地 Git 存储库,该存储库可以存储在他/她的文件系统中。现在对代码所做的更改必须添加到暂存区域并提交。从每次提交中,可以签出不同的分支,可以合并分支并可以执行各种其他任务,等等。 您所指的问题是远程存储库(可以在 Github 上)是本地存储库之前的一个分支。首先,您必须从远程存储库中提取最新代码,还原它,然后在远程存储库的最新提交之上提交还原的代码。但可能有更好的解决方案。

一般来说,依靠提交历史记录并频繁进行还原并不是一个好主意 - 相反,在大多数情况下,保留每个功能的单独分支并以一种方式合并它们是一个更好的过程。 Git 有非常强大的分支支持。

编辑:通过一种方式,我的意思是一旦合并分支,您就不会返回取消合并它们 - 这将再次依赖于提交历史。

【讨论】:

以上是关于GIT 是啥,不是啥......版本控制?的主要内容,如果未能解决你的问题,请参考以下文章

git和github是啥?有啥作用?最用通俗的语言

用TortoiseGit下载代码出现不存在是啥原因?

.GIT(版本控制)目录在电脑的啥地方

git github gitlib gitlab分别是啥,有啥区别

Android Studio 的版本控制“日志”窗口中的 Author_name*(带星号)是啥意思?

Marlin固件是啥?Marlin固件有哪几种版本?Marlin固件在3D打印机中起啥作用?Marlin固件控制啥?