首页 > 解决方案 > 如何从 git 中的先前状态创建分支?

问题描述

我正在学习一个在线课程,其中包括一些使用托管在 github 存储库上的笔记本的练习。

我在 github 中分叉了他们的存储库,然后将其克隆到本地进行练习。在进行更改之前,我没有采取预防措施来创建一个单独的分支——回想起来,这可能不是一个好主意。

现在我在其中一个文件上发现了一个错字,并想向作者发送一个拉取请求,以便他们可以审查和修复它。我只想在拉取请求中包含对这个错字的更正,而不是我在文件中为解决练习而修改的所有内容。

我的意图是恢复到我下载的存储库的原始版本(在我进行任何更改之前),从那时起创建一个新分支,在那里修复错字并从该分支发送一个拉取请求,但我正在努力。语境:几个月前我上过关于 git 和 github 的课程,但实践经验很少。

我试图通过向git log --oneline --graph -allID 发出相关的 COMMIT_ID 然后git checkout COMMIT_ID恢复到那里来做到这一点。不幸的是,这并没有像我预期的那样奏效。git 告诉我我处于“分离 HEAD”状态,并建议使用git switch -c NEWBRANCH. 我试过了,但是从这个新分支我仍然可以看到所有修改过的文件(只是它们还没有添加到提交中,但是更改仍然存在),此外远程仓库不是原始的,而是我的分叉到我的github。我可以手动更改遥控器,手动撤消文件中的更改......但我有强烈的感觉我做错了什么。必须有一个简单的方法来做到这一点。

任何人都可以帮助我了解我做错了什么,并找到更好的方法吗?

标签: gitgithub

解决方案


添加和获取后upstream,您可以使用更新的(Git 2.23+)git switch命令轻松创建新的修复分支,比以下命令更容易混淆git checkout

git switch -c issue_fix upstream/main
# work and commit
git push -u origin issue_fix

推荐阅读