简体   繁体   中英

Careful pulling with Git: selective (manual) merge from origin/master to master

When using git, it seems to be a good idea to fetch and merge (as pointed out in this blog ) instead of just pulling in order to allow yourself to view the changes before merging. This seems a reasonable and safe way to do things and I can follow so far.

However, what if I then do a git diff between master and origin/master and decide that most of the updates are good, but a couple of things need fixing? Is there a way to "manually" merge? I am looking for something similar to the editing that you get after a merge conflict which lets you decide on each single change - a little bit like git add --patch .

What I want is to have the power of editing things before merging origin/master into my own master, ideally with my favourite difftool . I understand this could be done by applying the changes to master and then force pushing it with git push -f , but this seems a little brutal and unnecessary.

On the other hand, cherrypick sounds like a very promising name, but only allows to select commits, not actual changes on files.

How can one do a highly selective/manual merge? None of the merge strategies from the docs seems to allow enough manual control for this.

The moment you do the merge, use the parameter --no-commit .

git merge --no-commit <branch>

This will stop the merge at the time of creating the commit, leaving your status as a pending merge, which is exactly the same as when a conflict happens.

From this status, you can diff and make the necessary changes.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM