您如何完成 git 项目?

How do you finish working with a git project?

我是 git 和 github 的新手,我正在努力弄清楚 cmd 中的 git 是怎么回事。我刚刚做了很多提交,并且完成了我的一个回购协议(在本地并推送到 GitHub)。

我现在想在本地处理另一个仓库,我在 GitHub 上有一个仓库,但我不确定如何停止我的本地机器和 GitHub 之间的连接回购我刚刚完成工作。有没有办法在 cmd 中断开本地仓库和 GitHub 仓库之间的连接?关闭它的正确方法?

以后,如果我想转到另一个项目,我该怎么做?我需要断开连接然后从头开始吗?即:

# after breaking previous link start again with:
git init
git remote add origin URL
git push -u origin master
# make changes to files then:
git add .
git commit -m "message"
git push

Is there a way to break the connection in cmd between the local repo and the GitHub repo? A proper way to 'close' it?

可以使用git remote remove命令断开本地和远程存储库之间的连接,但这样做不会有任何好处。

不,如果您不处理某个存储库,则无需“关闭”该存储库。你只是停止工作。

如果您不打算进一步处理存储库,您也可以只删除存储库的本地副本(假设您已将所有相关更改推送到远程)。

Subsequently, if I want to move to another project, how do I do this? Would I need to break the connection then start from scratch?

如果不断开本地和远程存储库之间的连接,则无需执行任何操作。继续处理您上次离开的其他项目。

是的,如果您开始 其他项目,您可以使用 git init 为其创建一个新的 Git 存储库。

我假设您为每个项目使用单独的目录。不要将同一个目录用于多个不相关的项目及其自己的 Git 个存储库。

您只需使用 git -init 初始化一个新的 repo 如果您想知道您的文件夹中有多少回购 运行 git remote BR,

作为 的附录——我的附录太大,需要太多的格式来作为评论——让我说这些:

  1. A remote 是您存储在本地存储库中的简称,例如 origin。大多数 Git 存储库没有远程,或者一个名为 origin.

    的远程
  2. 这个遥控器的功能主要有两个:

    • 它拥有其他 Git 存储库的 URL。
    • 它充当 remote-tracking 名称 的前缀,例如 origin/main.

    remote-tracking 名称只是您自己的 Git 存储库记住在其他 Git 存储库中找到的分支名称的一种方式。

remote-tracking 名称的要点很简单:提交哈希 ID 是通用的;每个 Git 存储库中的所有 Git 提交总是具有 不同的 哈希 ID 除非 这两个提交确实是 相同的提交。也就是说,每当您在 您的 Git 存储库中进行新提交时,您的提交都会获得一个新的 totally-unique 哈希 ID,以前从未使用过,也永远不会被使用再次。1 任何人所做的每一次提交都是如此。但是 Git 存储库偶尔会聚在一起 共享提交 ,当他们这样做时, 共享 提交 共享哈希 ID。那么,在一个非常真实的意义上,哈希 ID 提交,所以如果你有一个具有正确哈希 ID 的提交,你就有了正确的提交。如果我们(人类)使用哈希 ID,我们就不需要分支名称——但我们不使用哈希 ID,因为它们可怕

所以,我们的存储库有分支名称,这对人类大脑来说是可以正常工作的。但是分支名称存储 one 哈希 ID。我的仓库分支名称 xyzzy 只能存储 我的 最新的 xyzzy-branch 提交。如果你和我一起工作并使用第二个 and/or 第三个 Git 存储库并想在某个 shared 存储库中调用提交 xyzzy,我需要我自己的xyzzy,你需要你自己的xyzzy,我们可以fiddle共享根据需要命名以同步我们的两个独立存储库。

因此,当我从您的存储库或共享存储库复制时,我不想调用该提交 xyzzy。我想使用 remote-tracking 名称 来记住您的 xyzzy 作为 you/xyzzy,或者将共享存储库的 xyzzy 作为 origin/xyzzy ].这样 my xyzzy 就是 mine。我可以随时或需要混合搭配。

要使 remote-tracking 名称起作用,我们需要远程名称。所以远程名称为我们提供了拥有 remote-tracking 名称的能力,现在我们都很好!

因此,在您的 Git 存储库中拥有一个远程 origin 只是让您可以访问某些 other Git 存储库.您将与其他 Git 存储库共享 commits,并且它们将使用相同的原始哈希 ID。您将 与其他 Git 存储库共享 分支名称 — 不完全是:他们将 他们的 分支名称,您将在本地存储库中将其记住为 remote-tracking 名称,并且您将拥有 您的 分支名称。如果需要,您将使用这些来协调。 (根据您使用 GitHub 或其他一些共享站点的方式,您可能永远不需要它,但如果您确实需要它,它就在那里。)

你应该移除遥控器吗?

可以运行git remote remove origin,你的Git会移除name来源.这将删除存储的 URL(上面第 2 点的 (a) 部分) remote-tracking 名称(上面第 2 点的 (b) 部分)。 它没有其他影响。 在您的存储库和其他存储库之间没有活动的、持续的连接。他们只有在你说你的电脑(你的笔记本电脑或其他什么)应该联系到GitHub(或任何共享站点)时才会连接并连接到交换一些提交 and/or 更新一些 remote-tracking 名称所需的时间。然后你的电脑和他们的电脑断开连接。除了存储库中用于保存远程名称和相关数据的磁盘 space 之外,没有持续的资源使用。2

因此,在大多数情况下,移除遥控器的好处为零。它可能会变得陈旧,但那又怎样?没有持有成本。


1 pigeonhole principle tells us that this is mathematically impossible: some doomsday will eventually come when Git will stop working. How many trillions of years that may be from now, perhaps after the heat death of the universe, is a function of the size of the hash ID and random chance and, absent deliberate malice, is not worth worrying about. At least not until the birthday problem 抬起头来,但没关系。

2由于磁盘驱动器上的“块大小”(最小 512 字节,现在 4k 和更大的在不需要兼容性的地方很常见,并且会达到 64K 或 1MB或更多,因为磁盘驱动器容量超过 20 TB 标记)和巧妙的编码,保存额外信息所需的 space 可能根本没有字节,因为它可能适合正在使用的现有块。