如何在Git中保存而不提交到远程存储库

如何在Git中保存而不提交到远程存储库,git,Git,我正面临这样的问题。我修改了一个文件并对其进行了测试。让我们把这种状态称为“最后的良好状态” 然后我修改了更多的代码。现在,某个管理人员告诉我要提交并部署我所测试的内容。因此,我想要的是将文件安全地保存在远程存储库中(我不希望硬盘崩溃破坏上次良好状态后所做的更改),恢复到上次良好状态,然后提交上次良好状态 在其他VCS中,我可以选择将文件保存到远程服务器而无需提交。在Git中没有这样的选项。我可以隐藏,但这是在我的本地磁盘,是不安全的硬盘崩溃。有人有什么想法吗?您可以在代码的同一点创建一个备份分

我正面临这样的问题。我修改了一个文件并对其进行了测试。让我们把这种状态称为“最后的良好状态”

然后我修改了更多的代码。现在,某个管理人员告诉我要提交并部署我所测试的内容。因此,我想要的是将文件安全地保存在远程存储库中(我不希望硬盘崩溃破坏上次良好状态后所做的更改),恢复到上次良好状态,然后提交上次良好状态


在其他VCS中,我可以选择将文件保存到远程服务器而无需提交。在Git中没有这样的选项。我可以隐藏,但这是在我的本地磁盘,是不安全的硬盘崩溃。有人有什么想法吗?

您可以在代码的同一点创建一个备份分支。然后推送此备份分支并继续在另一个分支上工作

如果出现任何问题,您只需向备份分支机构结账

git branch backup
git checkout backup
git push origin backup <- at this point everything is saved at your remote

git checkout YOUR_OLD_BRANCH (develop maybe)

git checkout backup <- anytime that you want to get your "last good state"
git分支备份
git签出备份

git push origin backup第一步是提交需要部署的良好更改。做:

git add foo
对于要包含在该提交中的任何文件。如果只希望在良好提交中包含文件的部分更改,请执行以下操作:

git add --patch foo
然后提交并推送:

git commit -m "Foo the bar because baz"
git push
git checkout -b temp
git add .
git commit -m "Temp"
git push origin temp
正如您所提到的,此时您可以执行
git stash
,但这只会将更改保存在本地。相反,切换到新分支,在那里提交更改,然后推送:

git commit -m "Foo the bar because baz"
git push
git checkout -b temp
git add .
git commit -m "Temp"
git push origin temp
由于您已在单独的分支上提交,因此您设置的任何CI/CD都不会被临时更改触发,但您仍然可以将它们推送到服务器


要自动化后一个过程,可以定义别名:

git config alias.server-stash "! git checkout -b $1; git add .; git commit -m 'Temp'; git push $2 $1"
然后将其用作:

git server-stash temp origin


这种情况是风投口头禅中的一个很好的教训:尽早承诺,经常承诺。特别是因为您已经完成了对前面更改的测试,在继续其他操作之前,请提交!然而,即使您还没有完成测试,仍然可以自由地提交。提交在Git中是本地的,如果不想,不必推送它们。(明智地使用分支将确保未准备好的提交不会妨碍您。)

当您的经理希望您部署已测试的内容时,您应该使用未测试的更改创建分支,并将其推送到远程:

git checkout -b <your new branch>
git push origin <your new branch>
在“您的新分支”中测试更改后,将其合并回主分支:

git checkout master
git merge <your new branch>
git签出主机
git合并

这对于其他风投来说要容易得多。。我可以简单地“保存”而不是“提交”,我的文件将保存在远程repo上。@ApurvaSingh我用定义别名的说明更新了我的答案,这将简化过程。