什么是GIT,什么不是GIT。版本控制?

时间:2018-12-22 01:57:13

标签: git version-control version dvcs

好,所以我很难理解git可以做什么或不可以做什么。

当我听到版本控制消息时,我认为我无需再进行稍作更改就将基本相同代码的不同文件存储在计算机上。

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

现在使用git我想我可以拥有我的代码并执行所有这些提交,并且如果我想回到原始版本,它将很好而且安全,因此可以进行版本控制。但是我正在通过有关代码学院的在线教程来尝试一些事情。

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

然后,我使用提交sha ..进行了重置。我尝试推动该重置,它说我本地的机头与遥控器不匹配。然后我检查了“自述文件”,并期望它还原为我的版本1,但没有...所以我没有文件的这些多个版本?

所以我不理解版本控制部分...我可以拥有一个文件的多个版本,而git可以跟踪所有版本,并且能够将文件还原回版本1,例如...还是我这里缺少什么?

因为我认为这样做是:

  1. 我有一个文件

  2. 我修改了文件

  3. 我使用git进行版本控制
  4. 我编辑文件,git会以某种方式将其索引为版本2,并且它将具有版本1的备份版本。
  5. 我会继续进行编辑和提交,而git会跟踪对文件的所有更改,因此我始终可以返回到文件的旧版本。

我认为这是令人惊讶的,它做到了这一点,而不仅仅是复制了我所做的文件,但是在我看来我们还不存在,而这不是git所做的。

2 个答案:

答案 0 :(得分:2)

问:我可以有一个文件的多个版本,而git可以跟踪所有版本,例如可以将文件还原回版本1吗?

A:是的。绝对没错。还有很多。

问:我真的需要Github吗?

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

问:那为什么还要麻烦GitHub?

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

在Git看来,Github是“远程存储库”的示例。

建议:

尝试一些说明基本Git工作流程的教程(签入,签出,差异更改,创建和合并分支)没有与Github混淆。

我认为这可能会减少混乱,并为您提供一个更清晰的主意“ Why Git”。

实际上,本月的Linux Magazine上有一篇很好的介绍性文章:

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

PS:

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

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

但是也许最好的办法是不要与Github混为一谈,直到您对Git本身感到更自在为止。

答案 1 :(得分:0)

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

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

编辑:我的意思是,一旦合并了分支,就不要再撤消合并了-这将再次依赖于提交历史记录。