如何在 git 分支中重新提交相同的更改

How to re commit same changes in git branch

我已经使用 git 一个星期了。我在一个功能分支中工作,有时当我将代码推送到我的分支时,它显示出与开发分支的很多冲突。所以这次我按照以下步骤避免在工作场所发生不必要的冲突和问题:(

  1. git分支abc

  2. git结帐abc

  3. 完成我的工作
  4. git 隐藏
  5. git拉源开发
  6. 有冲突
  7. 解决了冲突,git 隐藏了 pop
  8. git commit-m'message' // 不知道如何合并不属于冲突的已删除行
  9. git 推送原点

现在这些步骤导致提交了 2 个文件,一个是我解决冲突的,另一个是我工作的。分别说File1和File2。

现在我需要重新推送我的代码,但只有文件 2,即我工作的那个文件,而不是我在其中解决冲突的文件。

但是 git 状态不会显示任何内容,因为我已经完成了所有的提交和推送。 此外,在某些自动合并期间,必要的代码也会从 File1 中删除。如何恢复?

如有任何帮助,我们将不胜感激?

因为我还在学习GIT所以任何解释都会对我和其他人有所帮助。

我正在使用 BITBUCKET。

谢谢!!

对于 #1 和 #2:它们可以组合 -- git checkout -b abc

对于 #4:你为什么藏起来?我相信你应该在这里提交你的更改。

对于#6:冲突在哪里?在您新创建的功能分支上?那应该是不可能的。

典型的工作流程如下:

  1. 确保主分支(master 或 developer 或其他)是最新的。在本例中,我将使用 master
    • git checkout master
    • git fetch
    • git rebase origin/master
  2. 创建并签出功能分支
    • git checkout -b featureBranch
  3. 进行更改
  4. 提交对 featureBranch 的更改(理想情况下,这将完成多次;而不是一次大的提交)
    • git add . # 这只是一个例子;适当地有选择地添加
    • git commit
  5. 将本地 featureBranch 推送到远程,以供审查或其他
    • git push origin featureBranch
  6. 准备就绪后(例如审查和批准),将 featureBranch 合并到 master
    1. 根据最新的 master 重新设置 featureBranch
      • git checkout featureBranch
      • git fetch
      • git rebase origin/master
    2. 确保 master 是最新的
      • git checkout master
      • git rebase origin/master
    3. 合并
      • git merge --no-fast-forward featureBranch

这个工作流程,通过在合并和使用非快进合并之前重新设置 featureBranch,将导致 master[ 的线性但被描述的历史记录=77=].

祝你好运!

为了扩展之前的答案,我要补充:Git stash 将在 "pocket" 中保存您的更改(如果它们尚未准备好提交)。但是您的更改已经准备就绪,因此没有必要。

关于你在之前评论中的问题(我没有足够的声誉在评论中回答你):git 使用远程存储库中的更改拉更新你的本地存储库和你的工作目录,是一个git 获取的快捷方式,然后是 git 合并。但是,由于 git merge 在历史方面有一些缺点,因此使用 git fetch + git rebase 可能会有用。

Git rebase 在本地工作,因此它可以以与 git merge 类似的方式使用,但不能用于 git pull!。关于git rebase,很多回答都比我解释得好,希望能帮到一点点。