I'm kind of new to Git and I don't feel safe running commands. I'm working on Branch A and I made a lot of changes. I need to work on another branch (Branch B) that doesn't have the files of Branch A. I'm not ready to make a merge of the branches.
Is it the right way if I commit and push to Branch A then fetch --all and checkout to Branch B. Then I pull from Branch B do the required work with the files of Branch B and commit and push in Branch B to later return to Branch A and pull the pushed files I made before?
I read about stash but I'm not sure if in this case it would be useful.
CodePudding user response:
It's sort of a matter of opinion, but I don't like stashing if I don't have to; if I'm in the middle of unfinished work on Branch A and I'm told to work on Branch B, I do an add-and-commit with a wip commit message (to indicate that this is "work in progress"), and then git fetch; git switch branchB.
No need to say fetch --all. No need to push Branch A (and it's probably a bad idea to do so, since it isn't baked yet). No need to pull because the fetch updated everything.
But if you already had a local Branch B, then after you switch to Branch B you might need to say git merge to update the local branch.
CodePudding user response:
If you want to preserve the work done on branch A and switch to branch B, then later return to your unfinished work on branch A you could:
git stash push(save your uncommited work to stash);git checkout B(switch branch to B);git pull(integrate the latest remote state into B);- do some work;
git add <pathspec> && git commit(commit your work on Branch B);
When you are ready to continue on branch A you would do:
git checkout A(switch branch to A);git stash pop(apply the state previously saved to stash).
