合并来自远程分支的修订提交中的更改?

时间:2019-09-20 15:45:32

标签: git merge version-control gitlab amend

我目前在一个仓库中打开一个PR,维护者更喜欢将所有PR作为一次提交。根据维护者的要求进行更改时,这会严重影响我的工作流程。我有一台用于工作的台式机和笔记本电脑。

这可能不是“正确”的想法,但我认为我的台式机是“基准”或“原始”计算机。我的笔记本电脑始终跟踪源自该计算机的远程分支。

最近,我一直在遇到这个问题,我将在我的笔记本电脑或台式机上进行更改,并且难以将同一分支重新部署到另一台计算机上。我不是git的专家,但是我认为这与尝试根据修订的提交重新建立更改有关。我给你举个例子:

具有一次提交和一个开放PR的分支上的桌面

image/PNG

这将更新我的PR并启动自动测试脚本。现在,我必须去参加一个很长的电话会议,并且在收听时仍然可以工作,所以我拿起笔记本电脑,导航到分支上的回购,该分支正在跟踪我刚刚推送到的分支

分支上的笔记本电脑通过修订的提交跟踪远程分支

# Make requested changes
> touch changes.txt
> git add changes.txt
> git commit --amend
> git push -f origin PR_branch

在这一点上,我发现解决此问题的唯一方法是:

> git pull origin PR_branch
From gitlab:user/repo
 * branch                PR_branch -> FETCH_HEAD
CONFLICT (add/add): Merge conflict in changes.txt
Auto-merging changes.txt
Automatic merge failed; fix conflicts and then commit the result.
> git status
On branch PR_branch
Your branch is ahead of 'upstream/devel' by 1 commit.
  (use "git push" to publish your local commits)

You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add <file>..." to mark resolution)
    both added:      changes.txt

现在,我要做的是# Still on my laptop > git checkout --theirs changes.txt > git add changes.txt > git commit -m "Fixed merge conflict between desktop and laptop" 到上一个提交哈希,该哈希是经过修改的提交,它具有我的桌面上的最新更改。我的直觉是错误

reset --hard

现在,我已经从笔记本电脑的台式机上获得了更新的更改,一切似乎都变得洁净了。我已经从我的台式机->笔记本电脑->台式机->笔记本电脑->台式机来回完成了很多次。有没有更惯用的方式来处理此问题,我是否在git历史中搞砸了?

1 个答案:

答案 0 :(得分:0)

如果您使用的是普通的拉力(例如,合并的拉力),请确保..您正在用脚开枪,因为您正在修改要保持的 < / em>在您当前的分支上(您正在运行pull操作的分支,因为您已经合并了修订,这些修订现在已经在进行修改的分支的历史记录中了)。 Git不能仅仅猜测您可能是因为修改而从分支中删除了某些内容,然后想出了“嘿...。现在我可以摆脱历史上的这个修订了”。