对于完全相同的错误,我也不是唯一的开发人员。
所以我同时提交并推送我的更改,在Commit 对话框弹出窗口底部看到:
...但是我犯了一个巨大的错误,忘记点击Fetch 按钮来查看我是否有最新的,而我没有。
提交成功执行,但不是推送,而是给出了相同的错误;
...即使其他开发人员没有更改与我相同的文件,我也无法提取最新的文件,因为出现了相同的错误。
图形用户界面解决方案
大多数时候我更喜欢使用 Sourcetree 的 GUI(图形用户界面)。这个解决方案可能并不理想,但这就是让我重新开始的原因,而不必担心我可能会丢失我的更改或损害其他开发人员的最新更新。
第 1 步
右键单击您之前的提交以撤消本地提交的更改并选择Reset current branch to this commit,如下所示:
第 2 步
一旦所有加载微调器消失并且 Sourcetree 完成加载上一个提交,在窗口的左上角,单击 Pull 按钮...
...然后会弹出一个对话框,点击右下角的OK按钮:
第 3 步
拉取最新后,如果您没有收到任何错误,请跳至STEP 4(下面的下一步)。否则,如果您此时发现任何合并冲突,就像我对 Web.config 文件所做的那样:
...然后点击顶部的Stash按钮,会弹出一个对话框,您需要编写一个Descriptive-name-of-your-changes,然后点击OK 按钮:
...一旦 Sourcetree 完成存储您更改的文件,重复 步骤 2 中的操作(以上步骤),然后您的本地文件将具有最新更改。现在可以通过打开 Sourcetree 左栏底部的 STASHES 重新应用您的更改,使用箭头展开您的存储,然后右键单击选择 Apply Stash 'Descriptive-name-of-your-changes',然后选择 OK 弹出对话框中的按钮:
如果您现在有任何合并冲突,请转到您喜欢的文本编辑器,例如 Visual Studio Code,并在受影响的文件中选择 Accept Incoming Change 链接,然后保存:
然后回到Sourcetree,点击顶部的Commit按钮:
然后右键单击有冲突的文件,并在Resolve Conflicts 下选择Mark Resolved 选项:
第 4 步
终于!!!我们现在可以提交我们的文件,还可以在单击 Commit 按钮之前选中 Push changes immediately to origin 选项:
附:在写这篇文章的时候,另一个开发者在我提交之前提交了一个提交,所以不得不重复很多步骤。