Re: git rebase interactive breaks when working on a secondary worktree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 26/06/2025 11:49, Denilson Sá Maia wrote:
git rebase interactive breaks when working on a secondary worktree

## What did you do before the bug happened?

1. `git clone` a repository.
2. `git worktree add` to have a second branch checked out in another directory.
3. Continue working as normal. The main branch has a bunch of extra
commits (at the main worktree).
4. At the second worktree, after a while, try `git rebase -i
hash_of_a_few_commits_ago`, or `git rebase -i main` (where main is the
main branch at the main worktree).
5. Approve the plan, even without any changes.

## What did you expect to happen?

It should work.

## What happened instead?

I get this error:

     error: Your local changes to the following files would be
overwritten by checkout:

Followed by a list of several files that were NOT changed in my
secondary branch at my secondary worktree.

Do you have any line ending or filter attributes set on those files? Another possibility is that we're failing to refresh the index before the checkout. Looking at the code the index is definitely refreshed before the checkout when '--autostash' is given but I'm not sure it is otherwise.

What's more, if I redo the `git rebase` but without `-i`, it works
fine without any errors.

## What's different between what you expected and what actually happened?

If I try following the exact same steps (the exact same git rebase -i)
on the exact same branch, but this time having it checked out at the
main worktree, then everything works.

## Anything else you want to add:

I've been hitting this error for several months.

It doesn't happen every time, it depends on the commits from both
branches. Thus, it's hard for me to give you a minimal reproducible
example git repository.

Unfortunately that makes it hard to figure out what is wrong.

Given the circumstances, I believe some part of the `git rebase
--interactive` codepath is not working correctly with worktrees, and
thus it's misbehaving.

I'd be surprised if the fact that it was a secondary worktree was the problem. Is the worktree on the same file system as the main repository? Is the worktree synced to a cloud service?

Thanks

Phillip



[System Info]
git version:
git version 2.49.0
cpu: arm64
no commit associated with this build
sizeof-long: 8
sizeof-size_t: 8
shell-path: /bin/sh
feature: fsmonitor--daemon
libcurl: 8.7.1
zlib: 1.2.12
uname: Darwin 24.5.0 Darwin Kernel Version 24.5.0: Tue Apr 22 19:54:29
PDT 2025; root:xnu-11417.121.6~2/RELEASE_ARM64_T6030 arm64
compiler info: clang: 17.0.0 (clang-1700.0.13.3)
libc info: no libc information available
$SHELL (typically, interactive shell): /bin/zsh


[Enabled Hooks]
applypatch-msg
commit-msg
post-applypatch
post-checkout
post-commit
post-merge
post-rewrite
pre-applypatch
pre-auto-gc
pre-commit
pre-merge-commit
pre-push
pre-rebase
prepare-commit-msg







[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux