+1

Move stash with drag'n drop

Nicolas Deveaud 2 years ago updated by Patrick Lehmann 1 year ago 5

In graph view, I would like to grab a stash and drop it on top of another commit.

This would "rebase"the stash.

This helps keeping stashes linked to a branch after rebasing this branch.

Do I understand you correctly:

  • you want to drag a stash commit from the Graph onto another non-stash commit?
  • SmartGit should check out that non-stash commit (or create a branch on it?) and
  • then apply this stash?

I did some screenshots to explain my idea on the usual use case I see :


1/ First I have a branch I want to rebase, and I have a stash on top of this branch (some changes I keep for later)



2/ I do rebase (simple rebase renaming a commit in my example)

    - Now my local branch is good, but the stash is yet on the previous commits, I'd prefer it to be on my brand new rebased branch.



3/ So I grab this stash, and put it on my branch's head

4/ great, my stash is there on top of my branch as it was before.


So you want to always drag the stash onto the HEAD commit, OK. Right-clicking the stash and selecting Apply Stash already works today.

Of course this process could lead to conflicts.... I think in such case it would be completely OK to have just an error message like "this move would cause conflicts so it can't be done this way, do it manually".

If this rejection of conflicting moves is acceptable, than the drop could be done on any commit as long as it does not conflict, not only the currently checkout-ed one.

It would really help people like me who like to keep change ideas in stashes and would just like to move those stashes as the graph grows (maybe I'm the only on using stashes that much... ? ).

I would have a similar problem / use-case.

If a branch with a stash on top was rebase-merged in GitHub, I would like to remove my local branch, because work is done, but my stash is keeping this side "branch" alive. Similar it happens, if I locally rebase a branch, then my stash is left behind somewhere deep down in history.

A "rebase" for stashes would allow to drag stashes up in history and also to keep them up-to-date / less conflicting with the current development.

(Converting stashes into real, but local branches sound to much work for a lightweight stash.)