Git 修复功能分支上的常规错误

Git 修复功能分支上的常规错误,git,Git,我试图用git改进我的工作流程 为了开发一个新特性,我基于我的Dev分支创建了一个myFeature分支 在使用此功能时,我发现我的应用程序中存在一个常规错误。我想在Dev分支中提交我的修复,但我在myFeature分支上编写了修复,因此git禁止我在将修复提交到当前分支之前切换分支 git checkout dev error: Your local changes to the following files would be overwritten by checkout: 是否有一种方

我试图用git改进我的工作流程

为了开发一个新特性,我基于我的
Dev
分支创建了一个
myFeature
分支

在使用此功能时,我发现我的应用程序中存在一个常规错误。我想在
Dev
分支中提交我的修复,但我在
myFeature
分支上编写了修复,因此git禁止我在将修复提交到当前分支之前切换分支

git checkout dev
error: Your local changes to the following files would be overwritten by checkout:

是否有一种方法可以提交此修复而无需将文件从我的git repo中复制出来,对其执行
git签出--
,更改为
Dev
分支并复制修复文件?

我看到两种方法:

  • git stash
    ->
    git签出开发人员
    ->
    git stash pop
    ->
    git提交
  • git提交
    生成SHA->
    git签出开发
    ->
    git cherry pick SHA
  • 对于这两种解决方案,您将在之后执行git checkout myFeature
    ->
    git rebase Dev

    隐藏更改(这实际上创建了匿名提交),以便工作目录是干净的。然后更改分支,将隐藏应用于新分支,然后提交

    git stash
    git checkout dev
    git stash pop
    

    git-stash-pop
    具有类似合并提交的潜力;如果有必要,您需要解决这些问题,但是您可以像往常一样
    git add
    git commit

    最好的方法是选择提交

    首轮

    git log
    
    然后获取提交的哈希值,该哈希值位于修复位置

    签出您的目标分支(在您的情况下是Dev)

    git签出
    
    并在提交的哈希上应用cherry-pick命令

    git cherry-pick <commitHash>
    
    git樱桃采摘
    
    检查此链接,其中详细解释了您的案例


    为什么
    git stash pop
    而不是
    git stash drop
    ?@IggY,因为您希望将更改应用于
    Dev
    分支
    git stash drop
    只是删除了你的补丁。为什么
    git stash drop
    因为,根据它的答案下的Nils_M评论,它会删除补丁?因为这两个词太相似了,我写错了。
    git cherry-pick <commitHash>