问题
I'm trying to push changes to the remote repo, but for some reason I can't.
When I git branch this is what I see:
develop
feature/all_features
* feature/Tommaso
And when I git status:
On branch feature/Tommaso
nothing to commit, working directory clean
I could clone the repo and pull from the develop, but when I do git pull this is what I get:
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> feature/Tommaso
I guess the problem is that the remote repo does not have the current branch I created locally.
EDIT: I was not sufficiently clear: I'd like to create the branch feature/Tommaso in feature/allfeatures . I say this for those of you who may have thought I was trying to create a branch of the develop
Is that it? How can I solve it?
Tell me if you need other info to address the issue. Thank you in advance
回答1:
Try below commands.
$ git pull origin <branch_name>
$ git push origin HEAD:refs/for/<branch_name>
If you want to create your own integration branch.
$ git checkout -b <integration branch name> origin/<origin branch name>
$ git push origin <integration branch name>
回答2:
If you are working with branches then you have to keep an identical branch with remote in order to be consistent. Suppose if you have a branch on remote repo named foo then you have to keep a branch name foo in the local also.
How do you do this. Assuming you don't have branch named foo in your local repo so you do
$ git fetch
It will get the information about all the branches in the remote to your local which can be clear from the output of this command.
Then you do a git branch to see what are the branches available. Now you will be able to see branch foo in your local. Do a git checkout -b foo this will switch your branch to foo. Use git log to see you have up-to-date branch with remote else do git pull origin foo. Now you can use git push origin foo.
The log mentioned in your comment suggest that you are trying to pull from a different branch and working with other branch in local repo. Switch branches before you start working otherwise you will run in merge conflicts and mess up the repo
回答3:
As other already said there is no branch named
Use this code
git push origin <your branch name>
Edited
have you already done it?
git remote set-url origin https://github.com/MyRepo/project.git
回答4:
I guess the problem is that the remote repo does not have the current branch I created locally
I also think that's the problem. First, push your current branch with -u flag (set upstream), then try git pull.
$ git push -u origin HEAD
N.B: -u = --set-upstream tells Git to remember the parameters, so that next time we can simply run git pull or git push.
When you run only git pull without mentioning branch name, git tries to pull from tracking remote branch.
$ git pull
if you want to pull another remote branch then just mention branch name.
$ git pull origin <branch-name>
If you want a new branch feature/Tommaso from feature/allfeatures then follow:
$ git checkout feature/allfeatures
$ git checkout -b feature/Tommaso
$ git push origin HEAD
Now, feature/allfeatures and feature/Tommaso have the same changes/commits.
来源:https://stackoverflow.com/questions/45143909/i-can-clone-repo-and-pull-but-i-cant-push