Git 合并是不可能的,因为我有未合并的文件

Git 继续用它那些毫无用处的错误警告来迷惑我。这个真的值得奖励:

git merge is not possible because you have unmerged files

我的情况: 我在 github 上的主分支被编辑(直接在浏览器中) ,而我的本地主分支也被编辑。

我错误地认为您可以简单地合并两个版本,然后完成它,但是,我也不能合并——因为我的文件是未合并的。

git merge remote/master

结果出来了

error: merge is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.

因此,在添加和提交本地更改并尝试再次合并之后,我得到:

merge: remote/master - not something we can merge

很明显,我在这里遗漏了一些重要的东西... ... 我是否对合并的含义有错误的理解?如何解决拥有不同的远程主机/本地主机分支的问题?

284774 次浏览

The error message:

merge: remote/master - not something we can merge

is saying that Git doesn't recognize remote/master. This is probably because you don't have a "remote" named "remote". You have a "remote" named "origin".

Think of "remotes" as an alias for the url to your Git server. master is your locally checked-out version of the branch. origin/master is the latest version of master from your Git server that you have fetched (downloaded). A fetch is always safe because it will only update the "origin/x" version of your branches.

So, to get your master branch back in sync, first download the latest content from the git server:

git fetch

Then, perform the merge:

git merge origin/master

...But, perhaps the better approach would be:

git pull origin master

The pull command will do the fetch and merge for you in one step.

I ran into the same issue and couldn't decide between laughing or smashing my head on the table when I read this error...

What git really tries to tell you: "You are already in a merge state and need to resolve the conflicts there first!"

You tried a merge and a conflict occured. Then, git stays in the merge state and if you want to resolve the merge with other commands git thinks you want to execute a new merge and so it tells you you can't do this because of your current unmerged files...

You can leave this state with git merge --abort and now try to execute other commands.

In my case I tried a pull and wanted to resolve the conflicts by hand when the error occured...

I repeatedly had the same challenge sometime ago. This problem occurs mostly when you are trying to pull from the remote repository and you have some files on your local instance conflicting with the remote version, if you are using git from an IDE such as IntelliJ, you will be prompted and allowed to make a choice if you want to retain your own changes or you prefer the changes in the remote version to overwrite yours'. If you don't make any choice then you fall into this conflict. all you need to do is run:

git merge --abort # The unresolved conflict will be cleared off

And you can continue what you were doing before the break.

Another potential cause for this (Intellij was involved in my case, not sure that mattered though): trying to merge in changes from a main branch into a branch off of a feature branch.

In other words, merging "main" into "current" in the following arrangement:

main
|
--feature
|
--current

I resolved all conflicts and GiT reported unmerged files and I was stuck until I merged from main into feature, then feature into current.

It might be the Unmerged paths that cause

error: Merging is not possible because you have unmerged files.

If so, try:

git status

if it says

You have unmerged paths.

do as suggested: either resolve conflicts and then commit or abort the merge entirely with

git merge --abort

You might also see files listed under Unmerged paths, which you can resolve by doing

git rm <file>

I also had similar problems.

My probblem: when I merge branch, and resolve conflicts with IDE, the IDE will show commit panel board normally, but it does not.

I think I have merged successfully, but when I push or pull,git remind me " commit your changes before merging" or "Updates were rejected because the tip of your current branch is behind".

My solution: git merge --continue

if you want to abort this merge ,you can also run git merge --abort

Something that happened to me, if you tried to do merge before and resolved some conflicts on the incoming branch, git can do some changes on its own on your current branch, so try git status even if you are sure that no modifications have been made by yourself, then something like this might appear: They did it!

then simply do git add . git commit -m "message" and try to do the merge again

The simple way is type git status into your terminal window/cmd. This should show you the files that either need to be added or removed enter image description here

and then you can either do git add followed by the file path or remove them with git rm also followed by the file path.

try

git add *
git commit -comment
git pull

Explanation git add * : Means you are adding all files that are not added' git commit -comment : You are committing file you have just added git pull : You are now getting changes from online version

I managed to resolve this issue with these git commands in order:

git init
git rm -r -f *
git merge origin main
git add *
git commit -m 'merging'
git pull