Git在Merge时提示(no branch)差点丢失数据,后找回

本文介绍了一个在使用Git过程中遇到的问题——意外地在nobranch状态下工作导致的修改丢失,并提供了通过git reflog找回改动的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为与远端服务器存在冲突,在解决冲突的时候实际上是在(no branch)上做的。

修改了一段时间后,突然忘记了,以为是在某个branch中做的更改,我用git co master,然后用git branch一看,

 

git branch
* (no branch)
  master
git branch
* master

 

吓一跳,之前的好多修改没有了,只有一个master branch, 好在印象中它提示了no branch等词,在google上搜了一下,发现有人遇到过此类情况

http://serverfault.com/questions/56722/git-seemed-to-be-in-no-branch-and-then-lost-my-changes

 

其中的git reflog命令在ubuntu下并不会自动补全出来做提示。故在此记录,以备不时之需。

解决方案如上述链接,这里简单重复一下:

git reflog

可以查看一下,到底是哪个对应的版本是自己想要恢复的版本。

然后:

 

git checkout  ca2deraf(just an example)

最好再使用 git checkout -b backup

把其备份出来

### 关于 Git 分支的使用与管理 #### 创建分支 创建新分支是开发过程中常见的操作之一。可以利用 `git branch` 命令来查看当前所有的本地分支列表,或者通过指定名称参数来创建新的分支[^2]。 ```bash # 查看所有分支 $ git branch # 新建一个名为 'feature' 的分支 $ git branch feature ``` #### 切换分支 为了切换到另一个分支工作,应当先保存好现有的更改再运行如下命令: ```bash # 切换至已存在的 'develop' 分支 $ git checkout develop ``` 如果希望在一个指令里完成创建并立即切换到这个新分支,则可采用更简便的方式: ```bash # 创建并切换到 'hotfix' 分支 $ git checkout -b hotfix ``` #### 合并与删除分支 当功能开发完毕准备集成回主线,通常会把特性分支合并入主干分支中去。这可以通过下面的方法实现: ```bash # 将 'topic' 分支的内容合并不快照记录方式加入到当前分支 $ git merge --no-commit topic ``` 一旦确认无误之后就可以考虑移除不再需要的分支了: ```bash # 删除已经成功融合过的 'finished-feature' $ git branch -d finished-feature ``` 对于那些尚未被完全融入其他任何地方的工作成果所在的分支,强制性的删除动作也是可行的,但这可能会丢失未同步的数据,请谨慎行事: ```bash # 强制删除还未完全融合的 'abandoned-work' $ git branch -D abandoned-work ``` #### 远程跟踪分支 远程仓库中的各个分支也可以映射成本地环境里的对应实体以便更好地协作交流。比如拉取远端更新后的最新状态或是推送自己的改动给团队成员共享等都离不开这些概念的支持。 ```bash # 获取最新的上游变更但不尝试自动应用它们 $ git fetch origin # 显示所有包含远程追踪信息在内的全部分支详情 $ git branch -avv ``` #### 解决冲突 有不同开发者在同一文件上做出相互矛盾修改的情况下会发生冲突现象。此就需要人工介入分析具体情况从而决定保留哪些部分以及如何调整其余内容使之能够和谐共存。 ```bash # 当遇到冲突提示后编辑解决冲突区域内的差异之处 # 完成处理后再标记为已解析的状态 $ git add . # 继续完成此次合并过程 $ git commit ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值