Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I rename LOCAL, REMOTE and BASE as used in git mergetool?

Lets say I'm doing a rebase B of a branch onto master and there's a conflict. git opens up the default merge tool with 3 files as input : file.LOCAL, file.BASE, file.REMOTE (they're named a little differently, but LOCAL, BASE and REMOTE are in the file names and is how they are distinguished).

Now, according to the mergetool man page: $LOCAL is set to the name of a temporary file containing the contents of the file on the current branch; $REMOTE set to the name of a temporary file containing the contents of the file to be merged, and $BASE set to the name of a temporary file containing the common base for the merge.

That really does not make sense to me. LOCAL is the current state of the branch. Where I get lost is BASE and REMOTE. So my question is :

Is it possible to make git use the branch name instead of LOCAL and similarly more meaningful names other than BASE and REMOTE? For example, if the branch name is FeatureX and the BASE = the file as it exists in master, is there a way to get git to substitute FeatureX for LOCAL and master for BASE, so that it is more apparent where the source is coming from? This is especially a problem when doing a rebase.

like image 224
Carl Avatar asked Mar 23 '10 23:03

Carl


2 Answers

Is it possible to make git use the branch name instead of LOCAL

I don't think so, but if you declare in your mergetool a graphical merge tool, you can call that external tool with title of your choice:

(extract of a merge tool calll script)

t1="'$4 (current branch)'"
t2="'(common ancestor)'"
t3="'(to be merged)'"

    "C:/Program Files/Araxis/Araxis Merge/Compare.exe" -max -wait -merge -3 -a2 -title1:${t1} -title2:${t2} -title3:${t3} "$alocal" "$base" "$remote" "$result" 

That way, you can more easily see what is what.

like image 179
VonC Avatar answered Sep 28 '22 04:09

VonC


I'm not entirely sure this explanation is correct, but BASE will be the point at which both versions of the file were the same. It might be what you call the 'parent' in a Git tree.

When they diverged, you ended up with LOCAL and REMOTE which are conflicting with each other.

like image 45
Joe Phillips Avatar answered Sep 28 '22 04:09

Joe Phillips