Sourcetree提交但未推送的记录消失了!
切换回原分支后,你应该立即在 SourceTree 的主界面的提交历史图中看到你之前做的、但未推送的提交。你会看到一个列表,记录了你最近在本地仓库的所有操作(检出、提交、合并、重置等),按时间倒序列出,每个操作都有一个简短的哈希值(如。在sourcetree上提交了修改但是没有推送,结果发现没有在最新的分支上,后面切到最新的分支提交但是未推送的记录找不到了!当你从分支 A (有未推送的提交) 切换
目录
一、当时的情景
在sourcetree上提交了修改但是没有推送,结果发现没有在最新的分支上,后面切到最新的分支提交但是未推送的记录找不到了!天塌了!
其实提交并没有真正“丢失”!这是 Git 分支机制的正常现象。
二、原因分析
-
提交绑定在分支上: 当做本地提交时,这个提交是附加在当前活动分支上的。
-
切换分支不会带走提交: 当你从分支 A (有未推送的提交) 切换到分支 B 时,你只是把工作目录切换到了分支 B 的状态。分支 A 上的那些提交仍然存在于你的本地仓库中,只是你现在在分支 B 上看不到它们了,因为它们属于另一个分支的历史。
-
未推送 = 只在本地: 因为你没有推送,这些提交只存在于你的本地仓库,远程仓库并不知道它们。所以当你在分支 B 上工作时,自然看不到分支 A 的提交。
三、如何找回提交
关键就是切换回你最初做提交的那个分支。
-
在 SourceTree 中查看分支列表:
-
打开你的仓库。
-
查看左侧的 “分支” (Branches) 列表。
-
仔细找找你最初做提交时所在的分支。它可能是一个功能分支 (如
feature/my-feature)、一个开发分支 (如develop),或者你自定义的名字。
-
-
切换回原分支:
-
在左侧分支列表中找到那个分支。
-
双击它,或者右键选择 “检出” (Checkout)。
-
现在你的工作目录和 SourceTree 的提交历史视图就会显示那个分支的状态。
-
-
查看提交:
-
切换回原分支后,你应该立即在 SourceTree 的主界面的提交历史图中看到你之前做的、但未推送的提交。它们通常位于分支的顶端,并用一个特殊的图标(可能与已推送的提交不同)或标签(如
(1 ahead))表示它们是本地未推送的提交。
-
但是我忘记了原分支名啊啊啊啊!!!!!!!!!!!!!!
四、如果忘记了原分支名怎么办
-
使用
git reflog(推荐): 这是找回“丢失”操作记录的最强大工具。-
在 SourceTree 中打开 “终端” (Terminal) 标签页 (通常在窗口底部)。
-
输入命令:
git reflog -
按回车。你会看到一个列表,记录了你最近在本地仓库的所有操作(检出、提交、合并、重置等),按时间倒序列出,每个操作都有一个简短的哈希值(如
HEAD@{0}、HEAD@{1})和操作描述。 -
仔细查看列表,找到描述为
commit:后面跟着你提交信息的记录。注意看这条记录之前的一条记录,它很可能是checkout: moving from从哪个分支切换到了哪个分支。这个from后面的分支名很可能就是你要找的原分支! -
找到分支名后,回到 SourceTree 的图形界面,在分支列表中双击检出那个分支即可。
-


我当时使用git relog回的是这么一堆
$ git reflog
9edc4b18 (HEAD) HEAD@{0}: checkout: moving from Step3-Fsoe to 9edc4b18f339eaa8443355a076137b98d5ffd76e
dcbb6880 (origin/Step3-Fsoe, Step3-Fsoe) HEAD@{1}: checkout: moving from c6d19dfe5a0203b2664ec722634e9b373d6b7766 to Step3-Fsoe
c6d19dfe HEAD@{2}: checkout: moving from 9edc4b18f339eaa8443355a076137b98d5ffd76e to c6d19dfe5a0203b2664ec722634e9b373d6b7766
9edc4b18 (HEAD) HEAD@{3}: checkout: moving from Step3-Fsoe to 9edc4b18f339eaa8443355a076137b98d5ffd76e
dcbb6880 (origin/Step3-Fsoe, Step3-Fsoe) HEAD@{4}: checkout: moving from 9edc4b18f339eaa8443355a076137b98d5ffd76e to Step3-Fsoe
9edc4b18 (HEAD) HEAD@{5}: checkout: moving from Step3-Fsoe to 9edc4b18f339eaa8443355a076137b98d5ffd76e
dcbb6880 (origin/Step3-Fsoe, Step3-Fsoe) HEAD@{6}: checkout: moving from 9edc4b18f339eaa8443355a076137b98d5ffd76e to Step3-Fsoe
9edc4b18 (HEAD) HEAD@{7}: checkout: moving from Step3-Fsoe to 9edc4b18f339eaa8443355a076137b98d5ffd76e
dcbb6880 (origin/Step3-Fsoe, Step3-Fsoe) HEAD@{8}: checkout: moving from 4f754f2dd008e44e4c66e9450372ab53d2648f65 to Step3-Fsoe
4f754f2d HEAD@{9}: commit: EtherCAT一致性测试修改提交,目前还有一个waring
9edc4b18 (HEAD) HEAD@{10}: checkout: moving from Step3-Fsoe to 9edc4b18f339eaa8443355a076137b98d5ffd76e
dcbb6880 (origin/Step3-Fsoe, Step3-Fsoe) HEAD@{11}: commit: CZSC_CPU F425工程增
加兼容老硬件的3个ADDR和12v监控工程CZSC_CM_24IO4_3ADDR
:
9edc4b18 (HEAD) HEAD@{0}: checkout: moving from Step3-Fsoe to 9edc4b18f339eaa8443355a076137b98d5ffd76e
dcbb6880 (origin/Step3-Fsoe, Step3-Fsoe) HEAD@{1}: checkout: moving from c6d19dfe5a0203b2664ec722634e9b373d6b7766 to Step3-Fsoe
c6d19dfe HEAD@{2}: checkout: moving from 9edc4b18f339eaa8443355a076137b98d5ffd76e to c6d19dfe5a0203b2664ec722634e9b373d6b7766
9edc4b18 (HEAD) HEAD@{3}: checkout: moving from Step3-Fsoe to 9edc4b18f339eaa8443355a076137b98d5ffd76e
dcbb6880 (origin/Step3-Fsoe, Step3-Fsoe) HEAD@{4}: checkout: moving from 9edc4b18f339eaa8443355a076137b98d5ffd76e to Step3-Fsoe
9edc4b18 (HEAD) HEAD@{5}: checkout: moving from Step3-Fsoe to 9edc4b18f339eaa8443355a076137b98d5ffd76e
dcbb6880 (origin/Step3-Fsoe, Step3-Fsoe) HEAD@{6}: checkout: moving from 9edc4b18f339eaa8443355a076137b98d5ffd76e to Step3-Fsoe
9edc4b18 (HEAD) HEAD@{7}: checkout: moving from Step3-Fsoe to 9edc4b18f339eaa8443355a076137b98d5ffd76e
dcbb6880 (origin/Step3-Fsoe, Step3-Fsoe) HEAD@{8}: checkout: moving from 4f754f2dd008e44e4c66e9450372ab53d2648f65 to Step3-Fsoe
4f754f2d HEAD@{9}: commit: EtherCAT一致性测试修改提交,目前还有一个waring
9edc4b18 (HEAD) HEAD@{10}: checkout: moving from Step3-Fsoe to 9edc4b18f339eaa8443355a076137b98d5ffd76e
dcbb6880 (origin/Step3-Fsoe, Step3-Fsoe) HEAD@{11}: commit: CZSC_CPU F425工程增加兼容老硬件的3个ADDR和12v监控工程CZSC_CM_24IO4_3ADDR
76559869 HEAD@{12}: pull --no-commit origin Step3-Fsoe: Fast-forward
a4565da2 HEAD@{13}: checkout: moving from 9edc4b18f339eaa8443355a076137b98d5ffd76e to Step3-Fsoe
9edc4b18 (HEAD) HEAD@{14}: checkout: moving from Step3-Fsoe to 9edc4b18f339eaa8443355a076137b98d5ffd76e
a4565da2 HEAD@{15}: checkout: moving from 9edc4b18f339eaa8443355a076137b98d5ffd76e to Step3-Fsoe
9edc4b18 (HEAD) HEAD@{16}: checkout: moving from bcd95fe9c6f57d7c80db1f4a837f444b09b583e7 to 9edc4b18f339eaa8443355a076137b98d5ffd76e
bcd95fe9 HEAD@{17}: checkout: moving from 9edc4b18f339eaa8443355a076137b98d5ffd76e to bcd95fe9c6f57d7c80db1f4a837f444b09b583e7
9edc4b18 (HEAD) HEAD@{18}: checkout: moving from Step3-Fsoe to 9edc4b18f339eaa8443355a076137b98d5ffd76e
a4565da2 HEAD@{19}: reset: moving to HEAD
a4565da2 HEAD@{20}: checkout: moving from 50a6cbcbfc462215d456d6920fe5c7750784ca8e to Step3-Fsoe
50a6cbcb HEAD@{21}: checkout: moving from Step3-Fsoe to 50a6cbcbfc462215d456d6920fe5c7750784ca8e
a4565da2 HEAD@{22}: reset: moving to HEAD
:...skipping...
9edc4b18 (HEAD) HEAD@{0}: checkout: moving from Step3-Fsoe to 9edc4b18f339eaa8443355a076137b98d5ffd76e
dcbb6880 (origin/Step3-Fsoe, Step3-Fsoe) HEAD@{1}: checkout: moving from c6d19dfe5a0203b2664ec722634e9b373d6b7766 to Step3-Fsoe
c6d19dfe HEAD@{2}: checkout: moving from 9edc4b18f339eaa8443355a076137b98d5ffd76e to c6d19dfe5a0203b2664ec722634e9b373d6b7766
9edc4b18 (HEAD) HEAD@{3}: checkout: moving from Step3-Fsoe to 9edc4b18f339eaa8443355a076137b98d5ffd76e
dcbb6880 (origin/Step3-Fsoe, Step3-Fsoe) HEAD@{4}: checkout: moving from 9edc4b18f339eaa8443355a076137b98d5ffd76e to Step3-Fsoe
9edc4b18 (HEAD) HEAD@{5}: checkout: moving from Step3-Fsoe to 9edc4b18f339eaa8443355a076137b98d5ffd76e
dcbb6880 (origin/Step3-Fsoe, Step3-Fsoe) HEAD@{6}: checkout: moving from 9edc4b18f339eaa8443355a076137b98d5ffd76e to Step3-Fsoe
9edc4b18 (HEAD) HEAD@{7}: checkout: moving from Step3-Fsoe to 9edc4b18f339eaa8443355a076137b98d5ffd76e
dcbb6880 (origin/Step3-Fsoe, Step3-Fsoe) HEAD@{8}: checkout: moving from 4f754f2dd008e44e4c66e9450372ab53d2648f65 to Step3-Fsoe
4f754f2d HEAD@{9}: commit: EtherCAT一致性测试修改提交,目前还有一个waring
9edc4b18 (HEAD) HEAD@{10}: checkout: moving from Step3-Fsoe to 9edc4b18f339eaa8443355a076137b98d5ffd76e
dcbb6880 (origin/Step3-Fsoe, Step3-Fsoe) HEAD@{11}: commit: CZSC_CPU F425工程增加兼容老硬件的3个ADDR和12v监控工程CZSC_CM_24IO4_3ADDR
76559869 HEAD@{12}: pull --no-commit origin Step3-Fsoe: Fast-forward
a4565da2 HEAD@{13}: checkout: moving from 9edc4b18f339eaa8443355a076137b98d5ffd76e to Step3-Fsoe
9edc4b18 (HEAD) HEAD@{14}: checkout: moving from Step3-Fsoe to 9edc4b18f339eaa8443355a076137b98d5ffd76e
a4565da2 HEAD@{15}: checkout: moving from 9edc4b18f339eaa8443355a076137b98d5ffd76e to Step3-Fsoe
9edc4b18 (HEAD) HEAD@{16}: checkout: moving from bcd95fe9c6f57d7c80db1f4a837f444b09b583e7 to 9edc4b18f339eaa8443355a076137b98d5ffd76e
bcd95fe9 HEAD@{17}: checkout: moving from 9edc4b18f339eaa8443355a076137b98d5ffd76e to bcd95fe9c6f57d7c80db1f4a837f444b09b583e7
9edc4b18 (HEAD) HEAD@{18}: checkout: moving from Step3-Fsoe to 9edc4b18f339eaa8443355a076137b98d5ffd76e
a4565da2 HEAD@{19}: reset: moving to HEAD
a4565da2 HEAD@{20}: checkout: moving from 50a6cbcbfc462215d456d6920fe5c7750784ca8e to Step3-Fsoe
50a6cbcb HEAD@{21}: checkout: moving from Step3-Fsoe to 50a6cbcbfc462215d456d6920fe5c7750784ca8e
a4565da2 HEAD@{22}: reset: moving to HEAD
a4565da2 HEAD@{23}: commit: EtherCAT一致性测试修改提交
a1ba25d0 HEAD@{24}: pull --no-commit origin Step3-Fsoe: Fast-forward
2477c368 HEAD@{25}: commit: EtherCAT一致性测试修改提交
54692e4d HEAD@{26}: commit: EtherCAT一致性测试修改提交
404e8747 HEAD@{27}: checkout: moving from 50a6cbcbfc462215d456d6920fe5c7750784ca8e to Step3-Fsoe
50a6cbcb HEAD@{28}: checkout: moving from 24f3f025e2114112980ca53c7e0c83082d0e3377 to 50a6cbcbfc462215d456d6920fe5c7750784ca8e
24f3f025 (tag: CPU新硬件使用) HEAD@{29}: checkout: moving from Step3-Fsoe to CPU新硬件使用
404e8747 HEAD@{30}: reset: moving to HEAD
根据我的 git reflog 输出,来分析提交时的分支情况:
关键提交记录
4f754f2d HEAD@{9}: commit: EtherCAT一致性测试修改提交,目前还有一个waring
提交时的分支状态
-
提交操作发生在
HEAD@{9}:-
提交哈希:
4f754f2d -
提交信息:
EtherCAT一致性测试修改提交,目前还有一个waring
-
-
提交前的操作(紧邻的上一条记录):
9edc4b18 (HEAD) HEAD@{10}: checkout: moving from Step3-Fsoe to 9edc4b18f339eaa8443355a076137b98d5ffd76e
-
这表示我在提交前做了一次 分离头指针(detached HEAD) 操作:
-
从分支
Step3-Fsoe切换到了一个具体的提交9edc4b18(而不是分支) -
此时已不在任何分支上(处于游离状态)
-
啊啊啊我处于游离状态所以根本找不到提交记录!!!!
提交后的操作:
dcbb6880 (origin/Step3-Fsoe, Step3-Fsoe) HEAD@{8}: checkout: moving from 4f754f2dd0... to Step3-Fsoe
-
我从提交
4f754f2d(你的提交)切换回了分支Step3-Fsoe
为什么提交消失了?
-
提交不在分支上:
-
我在 分离头指针状态(游离状态)下提交了代码
-
Git 不会自动将游离状态的提交绑定到分支
-
-
切换分支时未保留提交:
-
提交后我直接切回了
Step3-Fsoe分支 -
该分支指向的是之前的提交
dcbb6880(不是我新提交的4f754f2d)
-
五、找回提交的方法
步骤 1:切换到游离提交
git checkout 4f754f2d # 直接检出你的提交
现在你会处于 detached HEAD 状态,但你的代码文件会恢复。
步骤 2:创建新分支保存提交
git branch rescue-branch # 创建新分支 rescue-branch 指向该提交
git checkout rescue-branch # 切换到新分支
现在你的提交已安全保存在 rescue-branch 分支上。
步骤 3:合并到目标分支(可选)
如果你想将提交合并到 Step3-Fsoe:
git checkout Step3-Fsoe # 切回原分支
git merge rescue-branch # 合并提交
最终总算是正常提交了

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)