git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: git diff --text does not work during rebase for binary files

From
ДПДилян Палаузов <dilyan.palauzov@aegee.org>
Date
Mar 22, 2021, 08:45 UTC
Message-ID
<3807b29f442ab7026418511f058ff9513ee200ec.camel@aegee.org>
In-Reply-To
<4ef94ca7-ec69-f350-1d76-6bb8745786f1@gmail.com>
Hello,
I mean:

git init echo -e "AB RA\nCADABRA\0" > a.txt && git add a.txt && git commit - m"Initial" echo -e "AB2RA\nCADABRA\0" > a.txt && git add a.txt && git commit - m"Second" echo -e "AB3RA\nCADABRA\0" > a.txt && git add a.txt && git commit - m"Third"

git log -pa   show the diffs and handles the file as text.
git rebase -i HEAD~2

I EDIT the “Second” commit (the one before “Third”, not the second in the editor).

master|REBASE 1/2$ echo -e "AB4RA\nCADABRA\0" > a.txt && git add a.txt && git rebase --continue

[detached HEAD 78408d2] Second
 Date: Mon Mar 22 10:35:57 2021 +0200
 1 file changed, 0 insertions(+), 0 deletions(-)
warning: Cannot merge binary files: a.txt (HEAD vs. 149b67e (Third))
Auto-merging a.txt
CONFLICT (content): Merge conflict in a.txt
error: could not apply 149b67e... Third
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase
--abort".
Could not apply 149b67e... Third
master|REBASE 2/2$
And now `git diff` and `git diff --text` both print:

diff --cc a.txt index ee95164,d7db2f0..0000000 Binary files differ

But git diff --text should show how the files differ.
Greetings
  Дилян
On Mon, 2021-03-22 at 12:53 +0700, Bagas Sanjaya wrote:
Show 77 quoted lines
> 
> 
> On 22/03/21 00.30, Дилян Палаузов wrote:
> > Hello,
> > 
> > I create a small text file ending with \0 and add it to git:
> 
> Did you mean `echo -e "\0" >> a.txt`?
> 
> > In .gitattributes I specify:
> > 
> > *.txt diff merge=text text
> > 
> > I create several commits by changing the small text file.
> > 
> > The result is at https://github.com/dilyanpalauzov/git-diff-biinary .
> > 
> > I do now
> > 
> >    git rebase -i HEAD~2
> > and before the “second commit” type E to edit that commit.
> > 
> > I change the small file.
> > 
> > git add a.txt && git rebase --continue
> > 
> > git says:
> > 
> > [detached HEAD bc00e34] second commit
> >   Date: Sun Mar 21 19:16:15 2021 +0200
> >   1 file changed, 2 insertions(+), 1 deletion(-)
> > warning: Cannot merge binary files: a.txt (HEAD vs. 04c77de (third
> > commit))
> > Auto-merging a.txt
> > CONFLICT (content): Merge conflict in a.txt
> > error: could not apply 04c77de... third commit
> > Resolve all conflicts manually, mark them as resolved with
> > "git add/rm <conflicted_files>", then run "git rebase --continue".
> > You can instead skip this commit: run "git rebase --skip".
> > To abort and get back to the state before "git rebase", run "git
> > rebase
> > --abort".
> > Could not apply 04c77de... third commit
> > 
> > 
> > 'git diff' and 'git diff --text' show:
> > 
> > diff --cc a.txt
> > index 7a61015,dc817ec..0000000
> > --- a/a.txt
> > +++ b/a.txt
> > 
> > The file does not contain <<HEAD===>>> markers, despite having
> > merge=text attribute.
> > 
> > HOW CAN I force git diff to show the differences and git merge to
> > include the <<<===>>> markers?
> > 
> > I have to say, that at different occassions git diff --text does work
> > ass expected (e.g. when I call git diff --cached --text).
> > 
> > I call now
> > git rebase --abort
> > git log -p
> > 
> > git shows the differences in the small text file ending with \0.  So
> > apparently log reads the option, but diff does not.
> > 
> > Using git 2.30.2.
> > 
> > Greetings
> >    Дилян
> > 
> 
> Does `file a.txt` shows it as being binary file? I do the similar and
> it just says "data".
> 
Previous: Bagas SanjayaNext: Jeff King
Message 3 of 4 in “git diff --text does not work during rebase for binary files”
  1. Дилян ПалаузовMar 21, 2021
  2. Bagas SanjayaMar 22, 2021
  3. Дилян ПалаузовMar 22, 2021
  4. Jeff KingMar 26, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.