无需远程回购的git的可行性

无需远程回购的git的可行性,git,Git,因此,在我看来,最基本的git操作可以在没有远程设备的情况下有效地完成。也就是说,你可以添加,你可以毫无问题地提交 似乎没有遥控器的git回购的最大问题是类似于git reset的东西。比如,如果您想将代码还原为20次提交之前的特定提交—只是为了测试是否有什么东西在那个时候起作用,或者其他什么—您似乎无法做到这一点。您执行了git重置--hard…,然后您丢失了20个最新提交,并且无法将其恢复 还有什么不起作用呢?您可以创建一个指向所需特定提交的分支,然后切换到该分支: git checkout

因此,在我看来,最基本的git操作可以在没有远程设备的情况下有效地完成。也就是说,你可以添加,你可以毫无问题地提交

似乎没有遥控器的git回购的最大问题是类似于git reset的东西。比如,如果您想将代码还原为20次提交之前的特定提交—只是为了测试是否有什么东西在那个时候起作用,或者其他什么—您似乎无法做到这一点。您执行了git重置--hard…,然后您丢失了20个最新提交,并且无法将其恢复


还有什么不起作用呢?

您可以创建一个指向所需特定提交的分支,然后切换到该分支:

git checkout -b test-branch <commit-id>

您可以创建指向所需特定提交的分支,并切换到该分支:

git checkout -b test-branch <commit-id>

我从不为测试而重置,只是签出到那个提交,是的,你们将处于一个分离的头部模式,但谁在乎呢,你们只是在测试,若你们决定要重置,那个么就去做。我总是这样做

git checkout HEAD~
这意味着从当前头部返回1次提交,当我完成后,我可以简单地签回分支名称,因为它仍然指向原始提交

git checkout master # or any other branch
要从当前提交创建新分支,可以执行以下操作

git branch some-new-name
如果您需要创建一个新分支并对其进行
签出
,您可以像@mamapitufo建议的那样执行
签出-b
,但不需要提交id,默认情况下它将当前头作为新分支

顺便说一句,即使你不想创建一个遥控器,在其他地方有另一个备份也是很有用的,这就是“遥控器”,遥控器可以是同一硬盘中的另一个文件夹,或者是一个网络文件夹,或者是一台网络pc,只要想想不要把所有鸡蛋都放在一个篮子里

PS:实际上
git reset
会起作用,因为默认情况下,git不会立即删除任何东西,如果您真的想重置,如果您仍然有旧的提交哈希,您可以通过执行
git reset
重置,然后返回


但请记住,这不包括未提交的文件或未跟踪的文件

我从不为测试而重置,只是签出该提交,是的,你将处于分离头部模式,但谁在乎呢,你只是在测试,如果你决定要重置,那么就去做。我总是这样做

git checkout HEAD~
这意味着从当前头部返回1次提交,当我完成后,我可以简单地签回分支名称,因为它仍然指向原始提交

git checkout master # or any other branch
要从当前提交创建新分支,可以执行以下操作

git branch some-new-name
如果您需要创建一个新分支并对其进行
签出
,您可以像@mamapitufo建议的那样执行
签出-b
,但不需要提交id,默认情况下它将当前头作为新分支

顺便说一句,即使你不想创建一个遥控器,在其他地方有另一个备份也是很有用的,这就是“遥控器”,遥控器可以是同一硬盘中的另一个文件夹,或者是一个网络文件夹,或者是一台网络pc,只要想想不要把所有鸡蛋都放在一个篮子里

PS:实际上
git reset
会起作用,因为默认情况下,git不会立即删除任何东西,如果您真的想重置,如果您仍然有旧的提交哈希,您可以通过执行
git reset
重置,然后返回


但请记住,这不包括未提交的文件或未跟踪的文件

有多种方法可以避免您担心的问题

正如@mamapitufo所建议的,您可以主动地创建一个分支,然后再执行类似于
git reset--hard
的操作。这很好,只要你记得定期做

如果你没有透视能力,在你意识到你已经丢失了一些你想要的提交后,使用git reflog
git
在存储库中保留不可访问的提交,即从任何分支提示中找不到的提交30天
git reflog branch name
显示命名分支的头部最近的所有更改,从中您可以再次使用
git reset--hard
返回您的位置

您可以使用
git checkout sha1
在历史记录中移动,而无需更改分支提示。完成探索后,使用
git checkout branchname
与分支头同步

最后,如果所有其他操作都失败,您可以使用
git fsck
查找悬空提交。如果
git fsck
找不到所需的提交,则可能只有在该提交之后才会从存储库中清除


顺便说一句,远程存储库可以是同一台机器上的另一个存储库,因此即使没有网络,您也可以使用git的远程repo功能。

有多种方法可以避免您担心的问题

正如@mamapitufo所建议的,您可以主动地创建一个分支,然后再执行类似于
git reset--hard
的操作。这很好,只要你记得定期做

如果你没有透视能力,在你意识到你已经丢失了一些你想要的提交后,使用git reflog
git
在存储库中保留不可访问的提交,即从任何分支提示中找不到的提交30天
git reflog branch name
显示命名分支的头部最近的所有更改,从中您可以再次使用
git reset--hard
返回您的位置

您可以使用
git checkout sha1
在历史记录中移动,而无需更改分支提示。完成探索后,使用
git checkout branchname
与分支头同步

最后,如果所有其他操作都失败,您可以使用
git fsck
查找悬空提交。如果
git fsck
找不到所需的提交,则可能只有在该提交之后才会从存储库中清除

顺便说一句,远程重置