当我将本地更改提交到新分支,推送该分支,然后切换分支并切换回来时,我的所有文件更改都将丢失

  • 本文关键字:分支 回来 文件 新分支 提交 然后 git github
  • 更新时间 :
  • 英文 :


我的工作流程如下。我有一个只有一个分支(主(的远程存储库。

在我的本地存储库中,我有一个文件。我编辑了它。然后,我使用git checkout -b newbranchname创建了一个新分支。我将我的文件添加到这个新分支以暂存提交。然后我提交了这个文件。然后我使用git push -u origin newbranchname推送了这个文件。我去了我的远程存储库,瞧,我的新分支和文件可用于拉取请求。

然后,在我的本地存储库中,我决定使用git checkout master返回到我的主分支。然后,我添加、提交并将另一个文件推送到我的远程主分支。然后,我使用git checkout newbranchname返回到我创建的分支。当我打开我推送的第一个文件时,我所有的编辑都消失了。在我的远程存储库中,我可以看到我推送和拉取的所有更改。但是,我不明白为什么我所有的本地更改都消失了。有人可以解释一下吗?

编辑:添加来自git reflog的输出以提供更多上下文。此外,"缩放"是我创建的新分支:

`brendathompson@Brendas-Air Coding % git reflog
71a7da2 (HEAD -> master) HEAD@{0}: checkout: moving from master to master
71a7da2 (HEAD -> master) HEAD@{1}: commit: setting up site queries
cab9374 HEAD@{2}: checkout: moving from zoom to master
db8374a (origin/zoom, zoom) HEAD@{3}: commit: added zoom to map
cab9374 HEAD@{4}: checkout: moving from master to zoom
cab9374 HEAD@{5}: commit: added modal popup feature
0b51d5c HEAD@{6}: commit: added alert popup, deleted unecessary extra shape
8a0654f HEAD@{7}: commit: deleted unecessary background image code
a73475c HEAD@{8}: pull origin master: Merge made by the 'recursive' strategy.
4d9eb53 HEAD@{9}: commit: changed height and width in past map css
acbb2a7 HEAD@{10}: pull origin master: Merge made by the 'recursive' strategy.
8f5c8c0 HEAD@{11}: commit: edited height and width of image map
f02c46c HEAD@{12}: checkout: moving from IMAGE-MAP-EDITS to master
dd534f9 (origin/IMAGE-MAP-EDITS, IMAGE-MAP-EDITS) HEAD@{13}: commit: added javascript to make map responsive successfully
2f5a2af HEAD@{14}: checkout: moving from master to IMAGE-MAP-EDITS
f02c46c HEAD@{15}: checkout: moving from IMAGE-MAP-EDITS to master
2f5a2af HEAD@{16}: commit: added a more detailed title
92559fe HEAD@{17}: pull origin master: Fast-forward
a2e05cc HEAD@{18}: commit: changed title of image map
f02c46c HEAD@{19}: checkout: moving from master to IMAGE-MAP-EDITS
f02c46c HEAD@{20}: pull origin master: Merge made by the 'recursive' strategy.
6552161 HEAD@{21}: commit: removed unecessary lines from present_map.html`

编辑#2:好的,因此当我在新分支上提交更改时,我看不到文件外观的原因是,当我尝试切换到新分支时,我从未真正切换到新分支,因为我收到此错误:brendathompson@Brendas-Air Coding % git checkout zoom error: Your local changes to the following files would be overwritten by checkout: present_map.html Please commit your changes or stash them before you switch branches. Aborting 但是,我确实将更改提交到新分支(缩放(上的文件,因为我可以在远程存储库上看到更改...

编辑#3:为了响应之前的错误消息,我在引发错误的html文件上提交了更改。但是,当我尝试结帐时,我仍然收到相同的错误。

编辑#4:其他用户评论说,我在这里描述的工作流程与git reflog中显示的工作流程不匹配。首先,我会注意到我在问题中列出的命令之后做了一些额外的事情(例如,我试图通过从远程存储库中提取来解决问题(,因此这些额外的命令不包括在我的问题中列出的命令中。其次,我在这里列出了命令,它们在终端中的样子——因为我在发布问题之前根本没有清除我的终端,所以我能够准确地列出我的命令是如何编写的。所以,我不确定为什么 git reflog 不能反映我的工作流程。我现在不记得了,因为这大约是 24 小时前,但也许这是因为我关闭了终端,再次打开它,做了一些事情,然后调用了 reflog(我不知道 reflog 是如何工作的,我也不记得这是否是我实际所做的(。

编辑#5:要访问分支,我在分支上使用git stash save filemaster然后使用git checkout newbranchname。这使我能够成功访问分支和我的文件。

当您将本地更改推送到新分支时,这意味着您已经保存了它们,因此您必须从界面 GitHub 或(GitLab 用户的合并请求(发出拉取请求,然后将新分支合并到 master 分支中

请在这里查看我的答案 Git:将本地分支合并到远程分支 A 和 B,而无需将代码从 A 插入 B/B 到 A 中

最新更新