Reputation: 10231
I have started collaborating with a few friends on a project & they use the heroku git repository.
I cloned the repository a few days ago and they have since made some changes so I am trying to get the latest updates
I ran the git pull --rebase
command as stated here(Is this the right way to do it?): https://devcenter.heroku.com/articles/sharing#merging-code-changes
I get the following error:
$ git pull --rebase
Cannot pull with rebase: You have unstaged changes.
Please commit or stash them.
My guess is that I messed around with the code and now it wants me to either commit or discard(is that what does stash means?) the changes. Is this what is happening? If this is the case I would like to discard any changes I might have made and just get the updated code from the git repository.
Any idea of what I can do?
Upvotes: 295
Views: 537029
Reputation: 29
Step1 : git stash // It is stash your local changes in a safe place
Step2 : git pull // Pull the latest changes
Step3 : git stash pop // It will move the stash file to your branch
To verify please run : git status
Upvotes: 2
Reputation: 1215
This is because you made some changes on your workspace, but you do not commit
that changed codes into local repository via
git add/rm <file> && git commit -m "Add/Delete file."
Just use git status
to check which files have been changed, as you say
I would like to discard any changes I might have made and just get the updated code from the git repository.
I just recommend you to delete your older cloned repository, then clone the latest updates if that works for you.
Or, just use git reset --hard && git pull --no-rebase && git push
if this works for you.
Upvotes: 2
Reputation: 821
there you just need to restore the unstagged changes with this command below
for my case i had errors in yarn file for your case it can be another file
git restore --staged yarn.lock
Upvotes: 0
Reputation: 14563
First start with a
git status
See if you have any pending changes. To discard them, run
note that you will lose your changes by running this
git reset --hard
Upvotes: 54
Reputation: 25
Follow the below steps
From feature/branch (enter the below command)
git checkout master
git pull
git checkout feature/branchname
git merge master
Upvotes: 0
Reputation: 2938
If you want to automatically stash your changes and unstash them for every rebase, you can do this:
git config --global rebase.autoStash true
Upvotes: 88
Reputation: 2884
When the unstaged change is because git is attempting to fix eol conventions on a file (as is always my case), no amount of stashing or checking-out or resetting will make it go away.
However, if the intent is really to rebase and ignore unstaged changed, then what I do is delete the branch locally then check it out again.
git checkout -f anyotherbranchthanthisone
git branch -D thebranchineedtorebase
git checkout thebranchineedtorebase
Voila! It hasn't failed me yet.
Upvotes: 7
Reputation: 47269
If you want to keep your working changes while performing a rebase, you can use --autostash
. From the documentation:
Before starting rebase, stash local modifications away (see git-stash[1]) if needed, and apply the stash when done.
For example:
git pull --rebase --autostash
Upvotes: 383
Reputation: 6068
Pulling with rebase is a good practice in general.
However you cannot do that if your index is not clean, i.e. you have made changes that have not been committed.
You can do this to work around, assuming you want to keep your changes:
git stash
git stash apply stash@{0}
or the simpler git stash pop
Upvotes: 66
Reputation: 7277
You can always do
git fetch && git merge --ff-only origin/master
and you will either get (a) no change if you have uncommitted changes that conflict with upstream changes or (b) the same effect as stash/pull/apply: a rebase to put you on the latest changes from HEAD and your uncommitted changes left as is.
Upvotes: 11
Reputation: 43710
Do git status
, this will show you what files have changed. Since you stated that you don't want to keep the changes you can do git checkout -- <file name>
or git reset --hard
to get rid of the changes.
For the most part, git will tell you what to do about changes. For example, your error message said to git stash
your changes. This would be if you wanted to keep them. After pulling, you would then do git stash pop
and your changes would be reapplied.
git status
also has how to get rid of changes depending on if the file is staged for commit or not.
Upvotes: 257