
Fix All Conflicts: Easy-To-use CUI for Fixing Git Conflicts - ingve
https://github.com/mkchoi212/fac#readme
======
vemv
One thing I miss on every merge tool is full history context for both sides
("side" == ours/theirs).

i.e., I don't want to just see the _final_ state of ours/theirs, but the
_changes_ that us/them did in order to get to those final states.

IOW, often, both sides of the diff are nearly identical, and I have to squint
to see the actual difference, and make some additional effort to figure out
the _intent_ of each side.

A better format would be, for each side:

Original state -> change -> final state

\- "Original state" would be normally identical for both sides

\- "change" would be tiny and unique for each side, helps you see the intent
of each side clearly

\- "final state" is normally pretty similar between sides, (which is what
troubles me, if no context given).

Maybe I'm missing something, feel free to correct

~~~
azernik
This is one reason I enjoy doing rebases more than merges - you apply one
change at a time, and so get to see the history for at least one of the sides.

~~~
jchw
One thing that always hits me during rebasing is trying to figure out which
side is which. Somehow it feels like sometimes they switch, though I'm sure
that doesn't make sense.

~~~
falsedan
I usually can keep it straight by thinking, which branch would Linus think is
his? That’s ‘ours’, and the new, potentially code-breaking branch is ‘theirs’.

------
eridius
Any non-trivial merge conflict requires producing a hybrid of the two
versions. From the screenshot it looks like all you can do is select one of
the two versions. Isn't that extremely limiting?

Also it looks like this doesn't show the ancestor version, which is a shame as
that's extremely useful.

------
tbrock
What I frequently have trouble with is knowing what is represented by “theirs”
and “ours”. I wish it would just tell me the branch name instead because
sometimes both commits are logically “ours” or “theirs”.

Obviously that would only work for ‘git merge branch’ scenarios and the like
but it’d be great.

------
ggm
If I hate one thing, its merges denoted by <<<< old blah >>>> new bleaugh <<<<

of all the diff notations, for some reason FreeBSD updater and git merge chose
the worst (for me at least)

~~~
z1mm32m4n
What is your favorite notation for merge boundaries?

~~~
ggm
See above: the one which provides the most context.

------
Rjevski
For anyone using JetBrains tools like IntelliJ or similar, note that they all
include a nice diff/merge tool: [https://www.jetbrains.com/help/idea/running-
intellij-idea-as...](https://www.jetbrains.com/help/idea/running-intellij-
idea-as-a-diff-or-merge-command-line-tool.html)

------
horo42
If you can't install with brew:
[https://github.com/mkchoi212/fac/issues/9](https://github.com/mkchoi212/fac/issues/9)

~~~
mkchoi212
It works now! `brew tap mkchoi212/fac
[https://github.com/mkchoi212/fac.git](https://github.com/mkchoi212/fac.git)
&& brew install fac`

------
fao_
What's the difference between a TUI and a CUI?

~~~
philipov
Curses User Interface?

------
jbergens
I like the merge tool i Gitkraken, it makes it easy to choose one side for
each conflict or edit the result directly.

[https://support.gitkraken.com/working-with-
repositories/bran...](https://support.gitkraken.com/working-with-
repositories/branching-and-merging)

------
eitland
Haven't tested this yet but for now my preferred solution is to edit the
conflict markers directly in vs code then stage.

------
jdc0589
I have basically the same complaint about most of the mergetools I've used;
they tend to just do more than I want. I'm sure that's largely a PEBKAC
problem, but..... ¯\\_(ツ)_/¯

Definitely going to take a look at this; you screenshots look promising.

~~~
Peaker
Have you looked at [https://github.com/Peaker/git-
mediate](https://github.com/Peaker/git-mediate) ?

Everyone I talked into using it had always initially thought "meh" but later
thanked me - claiming it's a huge life-saver :)

It makes solving conflicts into a fun mechanical game while reducing erroneous
merges by a lot.

------
barrystaes
Yeah most CLI mergetools are awefull.. if you want a nice git GUI, just use
SmartGit. [https://www.syntevo.com/smartgit](https://www.syntevo.com/smartgit)

~~~
jhasse
Or Visual Studio Code.

------
bitwave
I use mostly [https://github.com/mhagger/git-
imerge](https://github.com/mhagger/git-imerge) for complex merges. imerge +
meld is wonderful...

------
cynix
Looks nice! Would be great if it could show a 3-way diff with the common
parent.

------
topher200
I had a merge to do today so I installed and tried it. I liked it! Great
context for each side of the change and great keyboard controls.

Thanks for creating this mkchoi212!

------
partycoder
The diff/merge tools shipped with Perforce are good.

They can be used with git as well.

~~~
piscisaureus
I find "beyond compare" to be a very good merge tool. It's not free, but not
very expensive either, and works well with git.

(I'm not affiliated with them in any way)

~~~
partycoder
Beyond Compare is a good tool. It allows to compare full directories, ignore
whitespace, etc.

I recommend Perforce's as a merge tool because it is better than average at
the specific task of merging.

------
cpxPratik
First, what is CUI??

~~~
jolmg
Following links on github, apparently it's Console User Interface. Looking at
the project, it's what I've always known as a TUI (Text User Interface). I
wonder why this new acronym appeared. It's even causing confusion with
Commandline User Interface which sounds like CLI (Command Line Interface)
which should be a different type of interface from TUI.

------
marcofatica
wow!

------
anaran
What's
[https://avatars0.githubusercontent.com/u/5487597](https://avatars0.githubusercontent.com/u/5487597)
supposed to be, funny?

~~~
jacobparker
[https://en.wikipedia.org/wiki/Maggot_Brain](https://en.wikipedia.org/wiki/Maggot_Brain)

