我正在从事一个软件项目。
我使用 git/github。
我是目前唯一的开发者。
我通常在家里和工作地点工作。
在开始任何 session 之前,我执行 git pull
,完成后执行 git add。 -A && git commit -m "my commit message"&& git push --tags origin master
(我有一个 gitaddcommitpush 别名)。
昨天,在工作 session 之后,我忘记了 gitaddcommitpush,在家里:-(
This当我意识到这一点时,我的 react 是:-(
现在,问题:
我应该执行哪些操作才能在今天工作(当然是在项目的不同部分而不是我昨天在家工作),以便明天能够@home merge 我的更改昨天(在家)和今天(在工作)?
最佳答案
由于您一直在维护良好的线性 Git 工作流程,我建议您使用 rebase 来保持原样。
您今天可以照常在办公室工作,然后投入工作。当您回到家工作时,您可以执行 git pull --rebase
以引入工作中的更改。您的本地分支将落后于远程版本一个或多个提交。 rebase 将使您的家庭分支机构看起来好像您实际上是在今天的办公室工作之上完成了昨晚的工作。在家采取以下步骤:
git commit -m 'Changes from last night which I forgot'
git pull --rebase origin master
这可能会产生冲突,但如果您真的在办公室处理项目的完全独立的部分,则不太可能。
这是一张图表,显示了从昨晚开始您在家中完成工作后您的家庭和远程 master
分支的状态:
remote: A --- B --- C
\
local: D
在这里,commit C
是您今天在工作中所做的提交,commit D
是您今晚将要进行的提交(针对昨晚的工作)。现在,在你执行 git pull --rebase origin master
之后,图表将如下所示:
remote: A --- B --- C
\
local: D'
当您git push
您的更改时,远程将收到一个新的提交,这是在它已经完成的工作之上。当你明天去上类时,一切都会像以前一样。
关于git - 忘记推送提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33823316/