Git:如何在反向合并后提交本地更改

Git:如何在反向合并后提交本地更改,git,merge,commit,reverse,Git,Merge,Commit,Reverse,当前情况: 两名开发人员在名为Sprint1: 开发人员1:更改2个文件中的一些代码,提交(意外地添加了3个其他文件),并推送到Sprint1 开发人员2:开发人员1还意外地添加了3个我们不想推送的文件。因此,他在开发人员1的更改之前将更改反向合并回提交 此时,Developer1希望再次提交他的两个文件(而不是他仍在处理的额外的3个文件),并将其推送到远程分支(Sprint1)。问题是拉会覆盖开发人员1个本地文件,并有效地“删除”所有5个文件中的本地更改 开发人员1获取最新头部的正确方法是什么

当前情况:

两名开发人员在名为Sprint1:

开发人员1:更改2个文件中的一些代码,提交(意外地添加了3个其他文件),并推送到Sprint1

开发人员2:开发人员1还意外地添加了3个我们不想推送的文件。因此,他在开发人员1的更改之前将更改反向合并回提交

此时,Developer1希望再次提交他的两个文件(而不是他仍在处理的额外的3个文件),并将其推送到远程分支(Sprint1)。问题是拉会覆盖开发人员1个本地文件,并有效地“删除”所有5个文件中的本地更改


开发人员1获取最新头部的正确方法是什么,但这次能够在不丢失更改的情况下推送正确的文件?

让开发人员1使用其当前本地编辑创建另一个分支,然后在其本地文件上的Sprint1分支上向其Sprint1分支(不是他创建的新分支)发出拉取请求。然后,他可以对他不想在新分支中提交的三个文件运行
git rm
,然后将该分支合并回Sprint1。

git的好处是,一旦提交,就很难完全删除SMT。如果您不想执行强制推送到存储库以删除这两个提交(原始提交和恢复提交的提交)并从头提交更改,那么Developer 1可以做以下几点:

  • git pull
    -好的,我们拉还原提交,并且有这样的历史记录:

    ca798ca revert 'commit1'
    cf76cf7 commit1
    
    好吧,我们“丢失”了更改,但别担心,下一步将使它们恢复

  • git revert-n HEAD
    (或显式
    git revert-n ca798ca
    )以还原提交。现在,来自原始提交的所有更改(必要和不必要的更改)都在索引中,但尚未提交(由于
    -n
    选项)

  • git reset HEAD
    将所有更改从索引移回工作目录

  • git add required\u file&&git commit-m“required changes”
    只向索引添加必要的更改并提交它们。您不希望在此提交中进行的所有更改都将保留在您的工作目录中

  • git push
    与同事分享您的结果


  • 这些步骤是按原样提供的,因此如果您不理解上面的内容,请在执行之前询问。否则,事情可能会变得更加混乱。

    你所说的“反向合并”是什么意思?重置或恢复?Git从不“删除”数据,Dev1必须将其所需的更改合并回Sprint1的新负责人,最坏的情况是,他会留下一些冲突。我只是想添加一些有用的建议,以避免这些类型的问题。我强烈建议每个开发人员在自己的临时开发分支上工作,完成一些工作后再合并回主开发分支。然后,我想通过GUI(SmartGit)来解决这个问题,但无法解决如何以这种方式完成同样的事情?感谢您的解决方案@KL-7!