git - 在进行分支合并时,我应该怎么做才能避免丢失与 Git 的提交?
问题描述
我最近与一个使用 GitHub Enterprise 的开发人员团队合作。
我在一个分支上工作origin/feature1
了几个小时,我们称之为它,并做了几个我有效推送的提交。与此同时,一位同事正在从origin/master
to合并origin/feature1
。当他完成合并时,似乎我最近的几个提交现在丢失了,因为我在注意到问题之前就拉了,所以我也在本地丢失了它们。
问题:
是否有可能实际上丢失被推送的提交,或者一切都可以恢复(即使这意味着运行大量神秘的命令)?
如果是,这是否意味着 Git 以某种方式……坏了?我的意思是,作为一个快乐的 SVN 用户,我从未丢失过任何使用 SVN 的工作。顺便说一句,2013 年的 TFS 也没有。
执行合并时我在这里。进行合并的人似乎没有做任何“特别”的事情,也没有执行任何看起来可以丢弃一些提交的命令。我不认为这是一个错误(Git 客户端和 GitHub Enterprise 几乎都是最新的)。那么在进行合并时是否有一些不应该指定的特定论点?或者可能是某些特定的合并模式,默认情况下会导致提交丢失?
从本质上讲,如何避免在未来失去半天的工作?
解决方案
可能您的同事在-f
没有合并您的更改的情况下推送了他的分支,因此,在该分支上,您的更改会“丢失”。你总是可以保留你的本地分支,这样你仍然可以用它做一些事情......如果你已经删除了本地分支,你总是可以检查 reflog 来取回旧的提交。
如何避免浪费时间?我猜你(不是你,而是你,你的团队)应该学习如何使用他们面前的工具。如果开发人员想玩牛仔(为了好玩,或者可能对强制推送的后果无知)......好吧,放轻松。目前,请尝试恢复您的更改。
PS哦...不用担心。个人观点免责声明:在使用了几轮 git 并了解了它的工作原理之后,你会想知道你是如何通过使用 SVN 这么久的。:-D
推荐阅读
- python - 使用 exec 定义变量并从变量中获取值会引发 NameError
- character-encoding - Telnet-Client EL5(centos5)中的编码
- swift - 图像数量仅跟随 int 一次
- mysql - 使用 AND NOT CONTAINS (mysql 5.7) 查询 mysql json 列数组
- c# - Xamarin Android 迁移到 AndroidX 后找不到类“androidx.lifecycle.ProcessLifecycleOwnerInitializer”
- c# - 使用 OpenXML 更改保存 Excel 文件 创建日期
- javascript - 抽屉以 50% 滚动打开
- c# - 在组合框WPF中的文本下方添加边框
- r - 在 WordR 上打印一个闪亮的反应值
- c# - 为什么异步扩展方法会抛出 System.NullReferenceException