【问题标题】:Git: What happens if you don't commit before closing?Git:如果你在关闭前不提交会发生什么?
【发布时间】:2018-11-05 20:20:27
【问题描述】:
我很惊讶我找不到关于暂存/提交性质的更彻底的解释,所以我问自己。我是 GitHub 的新手(并且没有在这台计算机上下载 Bash,所以我宁愿有人回答)。
具体来说,假设您正在使用 GitBash 在项目目录中工作。您进行一些基本更改并保存。无需暂存或提交任何内容,您就关闭了所有应用程序。您所做的更改会发生什么变化?他们会被抹去还是留下改变?我想同样的问题也适用于如果你承诺了你的事情然后退出了。
“提交”是否存储在某个文件夹中? “暂存区”只是一个临时的 Bash 东西还是有一个物理文件夹呢?
如果退出,是否必须重新提交更改?
感谢您的帮助。
【问题讨论】:
标签:
git
git-bash
git-commit
【解决方案1】:
首先请注意GitHub 只是用于存储由Git 进行版本控制的文件的几种在线服务之一。
Git 是实际跟踪文件更改和版本的程序,无需深入了解内部结构,只需跟踪文件的不同版本。
当您对文件进行更改时,该更改会被保存,就像文件不受版本控制一样。当您关闭应用程序时,您的更改会保留,就像 git 不存在一样。提交您的更改只是将一种“检查点”保存到 git 本身。这使您可以将更改恢复到以前的提交,比较不同的版本等。如果您退出应用程序,您的提交也会被保存。
基本上是的,提交存储在某个文件夹中,但是 git 足够聪明,不会在不同时间点存储大量文件副本,而是存储尽可能少的信息,同时仍保留记录的内容改变了。暂存区只是一个决定你想让 git 跟踪哪些文件的地方。当你去提交文件时,只有那些已经添加到暂存区的文件才会提交到 git。其余的仍然正常保存更改,但是由于您没有告诉 git 关心它们,因此它们被忽略了。您可以通过更改一些文件来查看这一点,使用git add 仅将其中一些添加到暂存区,然后调用git status,这将通知您一些文件已暂存,而其他文件已“修改”或“未跟踪”,但不会被提交。
如果你真的想四处寻找,可以尝试打开存储库中隐藏的 git 文件夹(在 Mac/Linux 上以 . 为前缀),看看 git 如何存储你所做的更改。