【发布时间】:2021-10-11 01:03:06
【问题描述】:
可能是一个简单的问题,但是当您在计算机上本地使用 git 时,您是否会在计算机关闭时丢失分支和提交?
【问题讨论】:
-
不,可能不会像你说的那样发生
标签: git github git-commit
可能是一个简单的问题,但是当您在计算机上本地使用 git 时,您是否会在计算机关闭时丢失分支和提交?
【问题讨论】:
标签: git github git-commit
没有。当使用 git 初始化 repo 时,所有本地更改和分支都保存在 git 工作目录中。这有点像在您的计算机中保存文件。因此,本地更改不会丢失。
提交只是存储库内容的快照。当您提交提交时,git 会计算存储库内容的哈希值并保存存储库的状态。 Here 是记录 git 存储库更改的一个很好的参考。
【讨论】:
不,他们不会迷路的。一切都保存在您的文件系统中。只要您不格式化或丢弃 FS,您的本地存储库在重新启动后仍然存在。
提交、目录和文件内容存储在.git/objects/ 目录下,分支存储在.git/refs/ 或.git/packed-refs 下。
但是,如果您询问本地历史记录是否对可能已将您的 repo 配置为 remote 的其他人不可用,那么是的,他们将无法访问远程历史记录 而您的计算机已关闭。当您重新打开它时,他们可以再次从中获取或推送。
【讨论】:
不,关闭后分支和提交不会丢失。
Git 一般用作版本控制系统。它跟踪您对本地文件所做的更改,因此您可以记录所做的事情,并且您可以在需要时恢复到特定版本。
Git 还使协作变得更容易,允许多人进行的更改全部合并到一个源中。
【讨论】:
git 的美妙之处(有时是诅咒)在于每个用户通常在他们的机器上都有一个完整的存档或存储库,包括所有过去的修订。远程存储库和本地计算机上的存储库之间没有主要区别:两者都是从过去的共同存档状态中产生的并行未来。
Git 操作通常在该本地存储库上运行,除非您拉取或推送到远程存储库。你的操作是持久的,历史被记录下来,即使没有任何互联网连接,整个 git 工具箱也可供你使用。是的,只要您的磁盘存在,所有更改都在磁盘上并且在电源循环后仍然存在。拥有一个从不与任何东西通信的本地、自包含的存储库是一个完全有效的用例;它只是作为组织和保存您的工作的一种手段。出于备份目的,您可能希望将其克隆到另一台机器上,但您也可以简单地将其压缩到某个位置。
但 git 在协作方面大放异彩,因为存储库的克隆用于并行工作。在某些时候,您可能希望重新加入这些存储库上的并行工作,但这是另一回事 - 与在您自己的计算机上协调两个存储库没有什么不同。
【讨论】:
不,除非“关闭”是硬关机,而进程正在运行,在这种情况下文件可能已损坏,并且 Git 存储库的完整性受到损害。
除此之外,推送(即使是正在进行的工作)到远程存储库始终是一个好主意,以便更好地保证即使在灾难性的情况下也不会丢失任何东西本地计算机上的事件。
【讨论】: