簡體   English   中英

合並到 master 時,Git 忽略分支上的更改

[英]Git ignores changes on branch when merging to master

假設我有分支“暫存”,並且我在其上創建了一些文件並提交了它們。 我不小心將“暫存”分支合並到 master 分支。

因為現在合並還為時過早(我在“暫存”分支上還有工作要做),我嘗試恢復合並提交(使用git revert ;我不知道確切的命令,因為我使用了 PyCharm 的 Git UI)。 現在這些更改在“主”分支上恢復,一切都很好。

在“暫存”分支上完成工作后,我嘗試使用以下命令將其合並到 master:

git checkout master
git pull
git merge staging

這是 git 的回應:

Auto-merging app/static/css/style.bundle.rtl.css
CONFLICT (content): Merge conflict in app/static/css/style.bundle.rtl.css
Removing app/static/js/main.js
Removing app/static/css/util.css
..
(All of my new files were listed here as removed)
..
Removing app/static/css/main.css
Automatic merge failed; fix conflicts and then commit the result.

由於舊的合並提交的還原,git 已將我對預先存在的文件的所有更改檢測為沖突,並刪除了所有新文件。

我通過git merge --abort中止了這個操作,現在我的文件都回來了。 但是我被卡住了,無法將此分支合並到 master 中。 我該怎么辦?

我試過:

  • 使用git merge staging -X theirs ,但這忽略了其他開發人員在 master 上所做的所有更改
  • 從另一方面合並: git checkout staging && git merge master -s ours ,與上述相同的問題

當你恢復時,你告訴 Git 你不想要這些更改(永遠(再次))。 這也意味着將分支與還原合並將刪除這些更改或不再合並它們。

換句話說:合並時,只合並“新”更改,而不是舊更改(即分支開始之前的更改)。

如果您決定確實需要還原的更改,則必須還原還原,例如

git checkout branch
git revert hash-of-revert-commit
git checkout master
git merge branch

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM