I've found how you can copy a file wholesale from one branch to another:
Edit please note, if you think this question is a duplicate of this, please observe that that's the question I linked above^^, and what follows below explains the different functionality that I want.
$ git checkout directory/somefile.php feature-B
However this solution stages the changes already:
$ git status
On branch feature-A
Your branch is up-to-date with 'origin/feature-A'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: directory/somefile.php
But I don't want to add all the changes. I want to do an add -p
and take most, but not all, of the changes. What I want is this:
$ git status
On branch feature-A
Your branch is up-to-date with 'origin/feature-A'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: directory/somefile.php
no changes added to commit (use "git add" and/or "git commit -a")
Of course, I can do git reset
to unstage the changes, but I would like to get what I want the first time, without a second step.
How can I copy a file from another branch without staging it?
you could use git show and then redirect... it's not very elegant, though
git show feature-B:directory/somefile.php > directory/somefile.php
You can use git restore
git restore --source feature-B directory/somefile.php
I didn't pass any option saying where it should restore the file and by befault it's working directory (without index/staging area). From documentation:
> -W > --worktree > -S > --staged > > Specify the restore location. If neither option is specified, by default the working tree is restored. Specifying --staged will only restore the index. Specifying both restores both.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With