Howto resolve “git merge” issues when attempting to keep PR's in sync with master

Multi tool use
Multi tool use

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
0
down vote

favorite
1












As I understand from answers given elsewhere on StackExchange - the process is suppossed to be simple:



a) git checkout master
b) git fetch origin
c) git pull origin
d) git push myremote # named aixtools
e) git checkout bpo-XXXXX
f) git merge master
g) git push myremote


Until step g) everything works as expected. And when it is a tag from the 'origin' rather than a 'PR' I am trying to keep in sync, the process works fine.



Help, wisdom, guidance, et al is much appreciated:



step g currently



michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git status
On branch bpo-11191
Your branch is ahead of 'aixtools/bpo-11191' by 564 commits.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git push aixtools
Username for 'https://github.com':
Password for 'https://aixtools@github.com':
To https://github.com/aixtools/cpython.git
! [rejected] bpo-11191 -> bpo-11191 (non-fast-forward)
error: failed to push some refs to 'https://github.com/aixtools/cpython.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.



A day further: I am thinking, after reading up more on reset and merge, and some of the examples there - that rather than a pull to my local master, commit of local master, and then merge local branch with local 'master' I should also just 'pull' from 'other remote' as a kindof merge.



In any case - I restored a backup of the local situation (always make a copy when I try some 'new' for me with git) And I hope the following answers the comment/query regarding the status of the 'local'



michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git branch
* bpo-11191
master
michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git status
On branch bpo-11191
Your branch is up-to-date with 'aixtools/bpo-11191'.
nothing to commit, working tree clean
michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git diff aixtools/bpo-11191
michael@x071:[/data/prj/python/git0/gcc-python3-3.7]


Or



michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git log --oneline | head -1
5a3284f (HEAD -> bpo-11191, aixtools/bpo-11191) Fix test_run and related tests Almost fix test_search_cpp
michael@x071:[/data/prj/python/git0/gcc-python3-3.7] aixtools/bpo-11191 | head -1 <
5a3284f (HEAD -> bpo-11191, aixtools/bpo-11191) Fix test_run and related tests Almost fix test_search_cpp



So, maybe the question needs to be rephrased:



  • should I merge locally?

  • pull from "other remote" aka 'project owners'?

  • something else entirely?


Next attempt - using merge (maybe I should have merged from a different branch. "master" was what is now 3.7 (I am guessing) - so maybe I should have merged from cpython/3.7.



So, now I feel "howto"ish again.



Basically, I have a PR that I would like to keep/verify that it is still "in sync" with current developments - and update the PR with the current status. A (desired by me) side-effect is that the PR will be re-evaluated again by the "verification process".



I may be facing a situation that "cpython" does not merge my PR before the next release. Should that happen I would like to use, as much as possible, git "merge" and/or "pull" of my open PR (aka bpo-XXXXX) into a "AIX-release" branch.



The steps I see for that would be:



a) checkout the official release branch
b) create and checkout a new "aix-release" branch
c) merge my (local) branches, one at a time, into the new branch
d) commit (and push) the new "release"


So, to simplify/verify the merge into the new release I would like to know, and "store" the bpo-XXXXX with the most recent "sync" with the master and/or named branches.



I am aware that - when it comes to git - I am a Sunday driver. It may be obvious to you. But I think for many (at least I hope I am not alone :smile:) git is not straightforward in what does what. Very powerful - yes - but I feel overwhelmed by it's power. Thx for your assistance!



(FYI: last attempt, new failure - I am very curious about what specific steps were used to -- checkout, merge, and push - and have it all work? Did you get my bpo, push that, then merge, then commit (local), then push - or use some other workflow. Probably - what I am looking for is the workflow that came ' naturally' to you.



michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git merge cpython/master
...
Merge made by the 'recursive' strategy.
...

michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git status
On branch bpo-11191
Your branch is ahead of 'aixtools/bpo-11191' by 564 commits.
(use "git push" to publish your local commits)
nothing to commit, working tree clean

michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git push aixtools
Username for 'https://github.com':
Password for 'https://aixtools@github.com':
To https://github.com/aixtools/cpython.git
! [rejected] bpo-11191 -> bpo-11191 (non-fast-forward)
error: failed to push some refs to 'https://github.com/aixtools/cpython.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git pull cpython
remote: Counting objects: 1908, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 1908 (delta 752), reused 751 (delta 751), pack-reused 1153
Receiving objects: 100% (1908/1908), 1.11 MiB | 2.01 MiB/s, done.
Resolving deltas: 100% (1334/1334), completed with 161 local objects.
From https://github.com/aixtools/cpython
fea0a12..b94d739 3.7 -> cpython/3.7
You asked to pull from the remote 'cpython', but did not specify
a branch. Because this is not the default configured remote
for your current branch, you must specify a branch on the command line.

michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git pull cpython 3.7
From https://github.com/aixtools/cpython
* branch 3.7 -> FETCH_HEAD
Auto-merging README.rst
CONFLICT (content): Merge conflict in README.rst
Auto-merging Python/importlib_external.h
CONFLICT (content): Merge conflict in Python/importlib_external.h
Auto-merging Python/importlib.h
CONFLICT (content): Merge conflict in Python/importlib.h
Auto-merging Python/compile.c
CONFLICT (content): Merge conflict in Python/compile.c
Auto-merging Objects/frameobject.c
CONFLICT (content): Merge conflict in Objects/frameobject.c
Auto-merging Lib/test/test_sys_settrace.py
CONFLICT (content): Merge conflict in Lib/test/test_sys_settrace.py
Auto-merging Lib/test/test_random.py
CONFLICT (content): Merge conflict in Lib/test/test_random.py
Auto-merging Lib/pydoc_data/topics.py
CONFLICT (content): Merge conflict in Lib/pydoc_data/topics.py
Auto-merging Lib/importlib/_bootstrap_external.py
CONFLICT (content): Merge conflict in Lib/importlib/_bootstrap_external.py
Auto-merging Lib/enum.py
Auto-merging Include/patchlevel.h
CONFLICT (content): Merge conflict in Include/patchlevel.h
Auto-merging Doc/whatsnew/3.7.rst
CONFLICT (content): Merge conflict in Doc/whatsnew/3.7.rst
Auto-merging Doc/tools/templates/indexsidebar.html
CONFLICT (content): Merge conflict in Doc/tools/templates/indexsidebar.html
Auto-merging Doc/tools/extensions/pyspecific.py
Auto-merging Doc/library/re.rst
CONFLICT (content): Merge conflict in Doc/library/re.rst
Auto-merging Doc/library/dis.rst
CONFLICT (content): Merge conflict in Doc/library/dis.rst
Auto-merging Doc/library/configparser.rst
CONFLICT (content): Merge conflict in Doc/library/configparser.rst
Auto-merging .travis.yml
CONFLICT (content): Merge conflict in .travis.yml
Auto-merging .github/appveyor.yml
CONFLICT (content): Merge conflict in .github/appveyor.yml
Automatic merge failed; fix conflicts and then commit the result.






share|improve this question





















  • That’s rather odd, how did you build your local bpo-11191 branch? I forked your repository, and ran git checkout bpo-11191; git merge master; git push and it worked fine, as you can see on github.com/skitt/cpython/tree/bpo-11191.
    – Stephen Kitt
    Apr 28 at 21:18










  • The fast-forward rejection basically means you did something to rewrite history (such as a rebase). You need to force push to get it to work, but also consider the implications - if someone else already has a checkout of that branch they will not be able to pull your changes without a git reset --hard.
    – jordanm
    Apr 28 at 21:52










  • as far as I understand it, my local is what I pushed. They should be the same. However, if a checkout from the remote, and then a merge plus push solves it - I am happy. I'll reply again later. I have a copy of the local situation - if my local is not the same as my remote there should be a git diff command I can run to see the difference. I thought I check that already - before the question. I'll rinse and repeat. Not the first time I have not understood the magic of git. :) In any case - thx for the hope! (p.s. not done a rebase - that I can recall. 3 months ago that I did anything on this.)
    – Michael Felt
    Apr 28 at 22:07










  • @StephenKitt - yes I see 564 commits ahead - same status I get locally, but I cannot push my local. Do you have a better idea? And, git merge master - which master (aixtools - that I had updated, or from cpython? - Do you perhaps have a git-config setting that you try to ff merges whenever possible - while mine seem to be using "recursive" strategy?
    – Michael Felt
    Apr 29 at 12:12










  • so, left to my own devices it seems. :)
    – Michael Felt
    Apr 30 at 18:32














up vote
0
down vote

favorite
1












As I understand from answers given elsewhere on StackExchange - the process is suppossed to be simple:



a) git checkout master
b) git fetch origin
c) git pull origin
d) git push myremote # named aixtools
e) git checkout bpo-XXXXX
f) git merge master
g) git push myremote


Until step g) everything works as expected. And when it is a tag from the 'origin' rather than a 'PR' I am trying to keep in sync, the process works fine.



Help, wisdom, guidance, et al is much appreciated:



step g currently



michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git status
On branch bpo-11191
Your branch is ahead of 'aixtools/bpo-11191' by 564 commits.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git push aixtools
Username for 'https://github.com':
Password for 'https://aixtools@github.com':
To https://github.com/aixtools/cpython.git
! [rejected] bpo-11191 -> bpo-11191 (non-fast-forward)
error: failed to push some refs to 'https://github.com/aixtools/cpython.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.



A day further: I am thinking, after reading up more on reset and merge, and some of the examples there - that rather than a pull to my local master, commit of local master, and then merge local branch with local 'master' I should also just 'pull' from 'other remote' as a kindof merge.



In any case - I restored a backup of the local situation (always make a copy when I try some 'new' for me with git) And I hope the following answers the comment/query regarding the status of the 'local'



michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git branch
* bpo-11191
master
michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git status
On branch bpo-11191
Your branch is up-to-date with 'aixtools/bpo-11191'.
nothing to commit, working tree clean
michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git diff aixtools/bpo-11191
michael@x071:[/data/prj/python/git0/gcc-python3-3.7]


Or



michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git log --oneline | head -1
5a3284f (HEAD -> bpo-11191, aixtools/bpo-11191) Fix test_run and related tests Almost fix test_search_cpp
michael@x071:[/data/prj/python/git0/gcc-python3-3.7] aixtools/bpo-11191 | head -1 <
5a3284f (HEAD -> bpo-11191, aixtools/bpo-11191) Fix test_run and related tests Almost fix test_search_cpp



So, maybe the question needs to be rephrased:



  • should I merge locally?

  • pull from "other remote" aka 'project owners'?

  • something else entirely?


Next attempt - using merge (maybe I should have merged from a different branch. "master" was what is now 3.7 (I am guessing) - so maybe I should have merged from cpython/3.7.



So, now I feel "howto"ish again.



Basically, I have a PR that I would like to keep/verify that it is still "in sync" with current developments - and update the PR with the current status. A (desired by me) side-effect is that the PR will be re-evaluated again by the "verification process".



I may be facing a situation that "cpython" does not merge my PR before the next release. Should that happen I would like to use, as much as possible, git "merge" and/or "pull" of my open PR (aka bpo-XXXXX) into a "AIX-release" branch.



The steps I see for that would be:



a) checkout the official release branch
b) create and checkout a new "aix-release" branch
c) merge my (local) branches, one at a time, into the new branch
d) commit (and push) the new "release"


So, to simplify/verify the merge into the new release I would like to know, and "store" the bpo-XXXXX with the most recent "sync" with the master and/or named branches.



I am aware that - when it comes to git - I am a Sunday driver. It may be obvious to you. But I think for many (at least I hope I am not alone :smile:) git is not straightforward in what does what. Very powerful - yes - but I feel overwhelmed by it's power. Thx for your assistance!



(FYI: last attempt, new failure - I am very curious about what specific steps were used to -- checkout, merge, and push - and have it all work? Did you get my bpo, push that, then merge, then commit (local), then push - or use some other workflow. Probably - what I am looking for is the workflow that came ' naturally' to you.



michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git merge cpython/master
...
Merge made by the 'recursive' strategy.
...

michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git status
On branch bpo-11191
Your branch is ahead of 'aixtools/bpo-11191' by 564 commits.
(use "git push" to publish your local commits)
nothing to commit, working tree clean

michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git push aixtools
Username for 'https://github.com':
Password for 'https://aixtools@github.com':
To https://github.com/aixtools/cpython.git
! [rejected] bpo-11191 -> bpo-11191 (non-fast-forward)
error: failed to push some refs to 'https://github.com/aixtools/cpython.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git pull cpython
remote: Counting objects: 1908, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 1908 (delta 752), reused 751 (delta 751), pack-reused 1153
Receiving objects: 100% (1908/1908), 1.11 MiB | 2.01 MiB/s, done.
Resolving deltas: 100% (1334/1334), completed with 161 local objects.
From https://github.com/aixtools/cpython
fea0a12..b94d739 3.7 -> cpython/3.7
You asked to pull from the remote 'cpython', but did not specify
a branch. Because this is not the default configured remote
for your current branch, you must specify a branch on the command line.

michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git pull cpython 3.7
From https://github.com/aixtools/cpython
* branch 3.7 -> FETCH_HEAD
Auto-merging README.rst
CONFLICT (content): Merge conflict in README.rst
Auto-merging Python/importlib_external.h
CONFLICT (content): Merge conflict in Python/importlib_external.h
Auto-merging Python/importlib.h
CONFLICT (content): Merge conflict in Python/importlib.h
Auto-merging Python/compile.c
CONFLICT (content): Merge conflict in Python/compile.c
Auto-merging Objects/frameobject.c
CONFLICT (content): Merge conflict in Objects/frameobject.c
Auto-merging Lib/test/test_sys_settrace.py
CONFLICT (content): Merge conflict in Lib/test/test_sys_settrace.py
Auto-merging Lib/test/test_random.py
CONFLICT (content): Merge conflict in Lib/test/test_random.py
Auto-merging Lib/pydoc_data/topics.py
CONFLICT (content): Merge conflict in Lib/pydoc_data/topics.py
Auto-merging Lib/importlib/_bootstrap_external.py
CONFLICT (content): Merge conflict in Lib/importlib/_bootstrap_external.py
Auto-merging Lib/enum.py
Auto-merging Include/patchlevel.h
CONFLICT (content): Merge conflict in Include/patchlevel.h
Auto-merging Doc/whatsnew/3.7.rst
CONFLICT (content): Merge conflict in Doc/whatsnew/3.7.rst
Auto-merging Doc/tools/templates/indexsidebar.html
CONFLICT (content): Merge conflict in Doc/tools/templates/indexsidebar.html
Auto-merging Doc/tools/extensions/pyspecific.py
Auto-merging Doc/library/re.rst
CONFLICT (content): Merge conflict in Doc/library/re.rst
Auto-merging Doc/library/dis.rst
CONFLICT (content): Merge conflict in Doc/library/dis.rst
Auto-merging Doc/library/configparser.rst
CONFLICT (content): Merge conflict in Doc/library/configparser.rst
Auto-merging .travis.yml
CONFLICT (content): Merge conflict in .travis.yml
Auto-merging .github/appveyor.yml
CONFLICT (content): Merge conflict in .github/appveyor.yml
Automatic merge failed; fix conflicts and then commit the result.






share|improve this question





















  • That’s rather odd, how did you build your local bpo-11191 branch? I forked your repository, and ran git checkout bpo-11191; git merge master; git push and it worked fine, as you can see on github.com/skitt/cpython/tree/bpo-11191.
    – Stephen Kitt
    Apr 28 at 21:18










  • The fast-forward rejection basically means you did something to rewrite history (such as a rebase). You need to force push to get it to work, but also consider the implications - if someone else already has a checkout of that branch they will not be able to pull your changes without a git reset --hard.
    – jordanm
    Apr 28 at 21:52










  • as far as I understand it, my local is what I pushed. They should be the same. However, if a checkout from the remote, and then a merge plus push solves it - I am happy. I'll reply again later. I have a copy of the local situation - if my local is not the same as my remote there should be a git diff command I can run to see the difference. I thought I check that already - before the question. I'll rinse and repeat. Not the first time I have not understood the magic of git. :) In any case - thx for the hope! (p.s. not done a rebase - that I can recall. 3 months ago that I did anything on this.)
    – Michael Felt
    Apr 28 at 22:07










  • @StephenKitt - yes I see 564 commits ahead - same status I get locally, but I cannot push my local. Do you have a better idea? And, git merge master - which master (aixtools - that I had updated, or from cpython? - Do you perhaps have a git-config setting that you try to ff merges whenever possible - while mine seem to be using "recursive" strategy?
    – Michael Felt
    Apr 29 at 12:12










  • so, left to my own devices it seems. :)
    – Michael Felt
    Apr 30 at 18:32












up vote
0
down vote

favorite
1









up vote
0
down vote

favorite
1






1





As I understand from answers given elsewhere on StackExchange - the process is suppossed to be simple:



a) git checkout master
b) git fetch origin
c) git pull origin
d) git push myremote # named aixtools
e) git checkout bpo-XXXXX
f) git merge master
g) git push myremote


Until step g) everything works as expected. And when it is a tag from the 'origin' rather than a 'PR' I am trying to keep in sync, the process works fine.



Help, wisdom, guidance, et al is much appreciated:



step g currently



michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git status
On branch bpo-11191
Your branch is ahead of 'aixtools/bpo-11191' by 564 commits.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git push aixtools
Username for 'https://github.com':
Password for 'https://aixtools@github.com':
To https://github.com/aixtools/cpython.git
! [rejected] bpo-11191 -> bpo-11191 (non-fast-forward)
error: failed to push some refs to 'https://github.com/aixtools/cpython.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.



A day further: I am thinking, after reading up more on reset and merge, and some of the examples there - that rather than a pull to my local master, commit of local master, and then merge local branch with local 'master' I should also just 'pull' from 'other remote' as a kindof merge.



In any case - I restored a backup of the local situation (always make a copy when I try some 'new' for me with git) And I hope the following answers the comment/query regarding the status of the 'local'



michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git branch
* bpo-11191
master
michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git status
On branch bpo-11191
Your branch is up-to-date with 'aixtools/bpo-11191'.
nothing to commit, working tree clean
michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git diff aixtools/bpo-11191
michael@x071:[/data/prj/python/git0/gcc-python3-3.7]


Or



michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git log --oneline | head -1
5a3284f (HEAD -> bpo-11191, aixtools/bpo-11191) Fix test_run and related tests Almost fix test_search_cpp
michael@x071:[/data/prj/python/git0/gcc-python3-3.7] aixtools/bpo-11191 | head -1 <
5a3284f (HEAD -> bpo-11191, aixtools/bpo-11191) Fix test_run and related tests Almost fix test_search_cpp



So, maybe the question needs to be rephrased:



  • should I merge locally?

  • pull from "other remote" aka 'project owners'?

  • something else entirely?


Next attempt - using merge (maybe I should have merged from a different branch. "master" was what is now 3.7 (I am guessing) - so maybe I should have merged from cpython/3.7.



So, now I feel "howto"ish again.



Basically, I have a PR that I would like to keep/verify that it is still "in sync" with current developments - and update the PR with the current status. A (desired by me) side-effect is that the PR will be re-evaluated again by the "verification process".



I may be facing a situation that "cpython" does not merge my PR before the next release. Should that happen I would like to use, as much as possible, git "merge" and/or "pull" of my open PR (aka bpo-XXXXX) into a "AIX-release" branch.



The steps I see for that would be:



a) checkout the official release branch
b) create and checkout a new "aix-release" branch
c) merge my (local) branches, one at a time, into the new branch
d) commit (and push) the new "release"


So, to simplify/verify the merge into the new release I would like to know, and "store" the bpo-XXXXX with the most recent "sync" with the master and/or named branches.



I am aware that - when it comes to git - I am a Sunday driver. It may be obvious to you. But I think for many (at least I hope I am not alone :smile:) git is not straightforward in what does what. Very powerful - yes - but I feel overwhelmed by it's power. Thx for your assistance!



(FYI: last attempt, new failure - I am very curious about what specific steps were used to -- checkout, merge, and push - and have it all work? Did you get my bpo, push that, then merge, then commit (local), then push - or use some other workflow. Probably - what I am looking for is the workflow that came ' naturally' to you.



michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git merge cpython/master
...
Merge made by the 'recursive' strategy.
...

michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git status
On branch bpo-11191
Your branch is ahead of 'aixtools/bpo-11191' by 564 commits.
(use "git push" to publish your local commits)
nothing to commit, working tree clean

michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git push aixtools
Username for 'https://github.com':
Password for 'https://aixtools@github.com':
To https://github.com/aixtools/cpython.git
! [rejected] bpo-11191 -> bpo-11191 (non-fast-forward)
error: failed to push some refs to 'https://github.com/aixtools/cpython.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git pull cpython
remote: Counting objects: 1908, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 1908 (delta 752), reused 751 (delta 751), pack-reused 1153
Receiving objects: 100% (1908/1908), 1.11 MiB | 2.01 MiB/s, done.
Resolving deltas: 100% (1334/1334), completed with 161 local objects.
From https://github.com/aixtools/cpython
fea0a12..b94d739 3.7 -> cpython/3.7
You asked to pull from the remote 'cpython', but did not specify
a branch. Because this is not the default configured remote
for your current branch, you must specify a branch on the command line.

michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git pull cpython 3.7
From https://github.com/aixtools/cpython
* branch 3.7 -> FETCH_HEAD
Auto-merging README.rst
CONFLICT (content): Merge conflict in README.rst
Auto-merging Python/importlib_external.h
CONFLICT (content): Merge conflict in Python/importlib_external.h
Auto-merging Python/importlib.h
CONFLICT (content): Merge conflict in Python/importlib.h
Auto-merging Python/compile.c
CONFLICT (content): Merge conflict in Python/compile.c
Auto-merging Objects/frameobject.c
CONFLICT (content): Merge conflict in Objects/frameobject.c
Auto-merging Lib/test/test_sys_settrace.py
CONFLICT (content): Merge conflict in Lib/test/test_sys_settrace.py
Auto-merging Lib/test/test_random.py
CONFLICT (content): Merge conflict in Lib/test/test_random.py
Auto-merging Lib/pydoc_data/topics.py
CONFLICT (content): Merge conflict in Lib/pydoc_data/topics.py
Auto-merging Lib/importlib/_bootstrap_external.py
CONFLICT (content): Merge conflict in Lib/importlib/_bootstrap_external.py
Auto-merging Lib/enum.py
Auto-merging Include/patchlevel.h
CONFLICT (content): Merge conflict in Include/patchlevel.h
Auto-merging Doc/whatsnew/3.7.rst
CONFLICT (content): Merge conflict in Doc/whatsnew/3.7.rst
Auto-merging Doc/tools/templates/indexsidebar.html
CONFLICT (content): Merge conflict in Doc/tools/templates/indexsidebar.html
Auto-merging Doc/tools/extensions/pyspecific.py
Auto-merging Doc/library/re.rst
CONFLICT (content): Merge conflict in Doc/library/re.rst
Auto-merging Doc/library/dis.rst
CONFLICT (content): Merge conflict in Doc/library/dis.rst
Auto-merging Doc/library/configparser.rst
CONFLICT (content): Merge conflict in Doc/library/configparser.rst
Auto-merging .travis.yml
CONFLICT (content): Merge conflict in .travis.yml
Auto-merging .github/appveyor.yml
CONFLICT (content): Merge conflict in .github/appveyor.yml
Automatic merge failed; fix conflicts and then commit the result.






share|improve this question













As I understand from answers given elsewhere on StackExchange - the process is suppossed to be simple:



a) git checkout master
b) git fetch origin
c) git pull origin
d) git push myremote # named aixtools
e) git checkout bpo-XXXXX
f) git merge master
g) git push myremote


Until step g) everything works as expected. And when it is a tag from the 'origin' rather than a 'PR' I am trying to keep in sync, the process works fine.



Help, wisdom, guidance, et al is much appreciated:



step g currently



michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git status
On branch bpo-11191
Your branch is ahead of 'aixtools/bpo-11191' by 564 commits.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git push aixtools
Username for 'https://github.com':
Password for 'https://aixtools@github.com':
To https://github.com/aixtools/cpython.git
! [rejected] bpo-11191 -> bpo-11191 (non-fast-forward)
error: failed to push some refs to 'https://github.com/aixtools/cpython.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.



A day further: I am thinking, after reading up more on reset and merge, and some of the examples there - that rather than a pull to my local master, commit of local master, and then merge local branch with local 'master' I should also just 'pull' from 'other remote' as a kindof merge.



In any case - I restored a backup of the local situation (always make a copy when I try some 'new' for me with git) And I hope the following answers the comment/query regarding the status of the 'local'



michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git branch
* bpo-11191
master
michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git status
On branch bpo-11191
Your branch is up-to-date with 'aixtools/bpo-11191'.
nothing to commit, working tree clean
michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git diff aixtools/bpo-11191
michael@x071:[/data/prj/python/git0/gcc-python3-3.7]


Or



michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git log --oneline | head -1
5a3284f (HEAD -> bpo-11191, aixtools/bpo-11191) Fix test_run and related tests Almost fix test_search_cpp
michael@x071:[/data/prj/python/git0/gcc-python3-3.7] aixtools/bpo-11191 | head -1 <
5a3284f (HEAD -> bpo-11191, aixtools/bpo-11191) Fix test_run and related tests Almost fix test_search_cpp



So, maybe the question needs to be rephrased:



  • should I merge locally?

  • pull from "other remote" aka 'project owners'?

  • something else entirely?


Next attempt - using merge (maybe I should have merged from a different branch. "master" was what is now 3.7 (I am guessing) - so maybe I should have merged from cpython/3.7.



So, now I feel "howto"ish again.



Basically, I have a PR that I would like to keep/verify that it is still "in sync" with current developments - and update the PR with the current status. A (desired by me) side-effect is that the PR will be re-evaluated again by the "verification process".



I may be facing a situation that "cpython" does not merge my PR before the next release. Should that happen I would like to use, as much as possible, git "merge" and/or "pull" of my open PR (aka bpo-XXXXX) into a "AIX-release" branch.



The steps I see for that would be:



a) checkout the official release branch
b) create and checkout a new "aix-release" branch
c) merge my (local) branches, one at a time, into the new branch
d) commit (and push) the new "release"


So, to simplify/verify the merge into the new release I would like to know, and "store" the bpo-XXXXX with the most recent "sync" with the master and/or named branches.



I am aware that - when it comes to git - I am a Sunday driver. It may be obvious to you. But I think for many (at least I hope I am not alone :smile:) git is not straightforward in what does what. Very powerful - yes - but I feel overwhelmed by it's power. Thx for your assistance!



(FYI: last attempt, new failure - I am very curious about what specific steps were used to -- checkout, merge, and push - and have it all work? Did you get my bpo, push that, then merge, then commit (local), then push - or use some other workflow. Probably - what I am looking for is the workflow that came ' naturally' to you.



michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git merge cpython/master
...
Merge made by the 'recursive' strategy.
...

michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git status
On branch bpo-11191
Your branch is ahead of 'aixtools/bpo-11191' by 564 commits.
(use "git push" to publish your local commits)
nothing to commit, working tree clean

michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git push aixtools
Username for 'https://github.com':
Password for 'https://aixtools@github.com':
To https://github.com/aixtools/cpython.git
! [rejected] bpo-11191 -> bpo-11191 (non-fast-forward)
error: failed to push some refs to 'https://github.com/aixtools/cpython.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git pull cpython
remote: Counting objects: 1908, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 1908 (delta 752), reused 751 (delta 751), pack-reused 1153
Receiving objects: 100% (1908/1908), 1.11 MiB | 2.01 MiB/s, done.
Resolving deltas: 100% (1334/1334), completed with 161 local objects.
From https://github.com/aixtools/cpython
fea0a12..b94d739 3.7 -> cpython/3.7
You asked to pull from the remote 'cpython', but did not specify
a branch. Because this is not the default configured remote
for your current branch, you must specify a branch on the command line.

michael@x071:[/data/prj/python/git0/gcc-python3-3.7]git pull cpython 3.7
From https://github.com/aixtools/cpython
* branch 3.7 -> FETCH_HEAD
Auto-merging README.rst
CONFLICT (content): Merge conflict in README.rst
Auto-merging Python/importlib_external.h
CONFLICT (content): Merge conflict in Python/importlib_external.h
Auto-merging Python/importlib.h
CONFLICT (content): Merge conflict in Python/importlib.h
Auto-merging Python/compile.c
CONFLICT (content): Merge conflict in Python/compile.c
Auto-merging Objects/frameobject.c
CONFLICT (content): Merge conflict in Objects/frameobject.c
Auto-merging Lib/test/test_sys_settrace.py
CONFLICT (content): Merge conflict in Lib/test/test_sys_settrace.py
Auto-merging Lib/test/test_random.py
CONFLICT (content): Merge conflict in Lib/test/test_random.py
Auto-merging Lib/pydoc_data/topics.py
CONFLICT (content): Merge conflict in Lib/pydoc_data/topics.py
Auto-merging Lib/importlib/_bootstrap_external.py
CONFLICT (content): Merge conflict in Lib/importlib/_bootstrap_external.py
Auto-merging Lib/enum.py
Auto-merging Include/patchlevel.h
CONFLICT (content): Merge conflict in Include/patchlevel.h
Auto-merging Doc/whatsnew/3.7.rst
CONFLICT (content): Merge conflict in Doc/whatsnew/3.7.rst
Auto-merging Doc/tools/templates/indexsidebar.html
CONFLICT (content): Merge conflict in Doc/tools/templates/indexsidebar.html
Auto-merging Doc/tools/extensions/pyspecific.py
Auto-merging Doc/library/re.rst
CONFLICT (content): Merge conflict in Doc/library/re.rst
Auto-merging Doc/library/dis.rst
CONFLICT (content): Merge conflict in Doc/library/dis.rst
Auto-merging Doc/library/configparser.rst
CONFLICT (content): Merge conflict in Doc/library/configparser.rst
Auto-merging .travis.yml
CONFLICT (content): Merge conflict in .travis.yml
Auto-merging .github/appveyor.yml
CONFLICT (content): Merge conflict in .github/appveyor.yml
Automatic merge failed; fix conflicts and then commit the result.








share|improve this question












share|improve this question




share|improve this question








edited Apr 29 at 12:07
























asked Apr 28 at 19:38









Michael Felt

865516




865516











  • That’s rather odd, how did you build your local bpo-11191 branch? I forked your repository, and ran git checkout bpo-11191; git merge master; git push and it worked fine, as you can see on github.com/skitt/cpython/tree/bpo-11191.
    – Stephen Kitt
    Apr 28 at 21:18










  • The fast-forward rejection basically means you did something to rewrite history (such as a rebase). You need to force push to get it to work, but also consider the implications - if someone else already has a checkout of that branch they will not be able to pull your changes without a git reset --hard.
    – jordanm
    Apr 28 at 21:52










  • as far as I understand it, my local is what I pushed. They should be the same. However, if a checkout from the remote, and then a merge plus push solves it - I am happy. I'll reply again later. I have a copy of the local situation - if my local is not the same as my remote there should be a git diff command I can run to see the difference. I thought I check that already - before the question. I'll rinse and repeat. Not the first time I have not understood the magic of git. :) In any case - thx for the hope! (p.s. not done a rebase - that I can recall. 3 months ago that I did anything on this.)
    – Michael Felt
    Apr 28 at 22:07










  • @StephenKitt - yes I see 564 commits ahead - same status I get locally, but I cannot push my local. Do you have a better idea? And, git merge master - which master (aixtools - that I had updated, or from cpython? - Do you perhaps have a git-config setting that you try to ff merges whenever possible - while mine seem to be using "recursive" strategy?
    – Michael Felt
    Apr 29 at 12:12










  • so, left to my own devices it seems. :)
    – Michael Felt
    Apr 30 at 18:32
















  • That’s rather odd, how did you build your local bpo-11191 branch? I forked your repository, and ran git checkout bpo-11191; git merge master; git push and it worked fine, as you can see on github.com/skitt/cpython/tree/bpo-11191.
    – Stephen Kitt
    Apr 28 at 21:18










  • The fast-forward rejection basically means you did something to rewrite history (such as a rebase). You need to force push to get it to work, but also consider the implications - if someone else already has a checkout of that branch they will not be able to pull your changes without a git reset --hard.
    – jordanm
    Apr 28 at 21:52










  • as far as I understand it, my local is what I pushed. They should be the same. However, if a checkout from the remote, and then a merge plus push solves it - I am happy. I'll reply again later. I have a copy of the local situation - if my local is not the same as my remote there should be a git diff command I can run to see the difference. I thought I check that already - before the question. I'll rinse and repeat. Not the first time I have not understood the magic of git. :) In any case - thx for the hope! (p.s. not done a rebase - that I can recall. 3 months ago that I did anything on this.)
    – Michael Felt
    Apr 28 at 22:07










  • @StephenKitt - yes I see 564 commits ahead - same status I get locally, but I cannot push my local. Do you have a better idea? And, git merge master - which master (aixtools - that I had updated, or from cpython? - Do you perhaps have a git-config setting that you try to ff merges whenever possible - while mine seem to be using "recursive" strategy?
    – Michael Felt
    Apr 29 at 12:12










  • so, left to my own devices it seems. :)
    – Michael Felt
    Apr 30 at 18:32















That’s rather odd, how did you build your local bpo-11191 branch? I forked your repository, and ran git checkout bpo-11191; git merge master; git push and it worked fine, as you can see on github.com/skitt/cpython/tree/bpo-11191.
– Stephen Kitt
Apr 28 at 21:18




That’s rather odd, how did you build your local bpo-11191 branch? I forked your repository, and ran git checkout bpo-11191; git merge master; git push and it worked fine, as you can see on github.com/skitt/cpython/tree/bpo-11191.
– Stephen Kitt
Apr 28 at 21:18












The fast-forward rejection basically means you did something to rewrite history (such as a rebase). You need to force push to get it to work, but also consider the implications - if someone else already has a checkout of that branch they will not be able to pull your changes without a git reset --hard.
– jordanm
Apr 28 at 21:52




The fast-forward rejection basically means you did something to rewrite history (such as a rebase). You need to force push to get it to work, but also consider the implications - if someone else already has a checkout of that branch they will not be able to pull your changes without a git reset --hard.
– jordanm
Apr 28 at 21:52












as far as I understand it, my local is what I pushed. They should be the same. However, if a checkout from the remote, and then a merge plus push solves it - I am happy. I'll reply again later. I have a copy of the local situation - if my local is not the same as my remote there should be a git diff command I can run to see the difference. I thought I check that already - before the question. I'll rinse and repeat. Not the first time I have not understood the magic of git. :) In any case - thx for the hope! (p.s. not done a rebase - that I can recall. 3 months ago that I did anything on this.)
– Michael Felt
Apr 28 at 22:07




as far as I understand it, my local is what I pushed. They should be the same. However, if a checkout from the remote, and then a merge plus push solves it - I am happy. I'll reply again later. I have a copy of the local situation - if my local is not the same as my remote there should be a git diff command I can run to see the difference. I thought I check that already - before the question. I'll rinse and repeat. Not the first time I have not understood the magic of git. :) In any case - thx for the hope! (p.s. not done a rebase - that I can recall. 3 months ago that I did anything on this.)
– Michael Felt
Apr 28 at 22:07












@StephenKitt - yes I see 564 commits ahead - same status I get locally, but I cannot push my local. Do you have a better idea? And, git merge master - which master (aixtools - that I had updated, or from cpython? - Do you perhaps have a git-config setting that you try to ff merges whenever possible - while mine seem to be using "recursive" strategy?
– Michael Felt
Apr 29 at 12:12




@StephenKitt - yes I see 564 commits ahead - same status I get locally, but I cannot push my local. Do you have a better idea? And, git merge master - which master (aixtools - that I had updated, or from cpython? - Do you perhaps have a git-config setting that you try to ff merges whenever possible - while mine seem to be using "recursive" strategy?
– Michael Felt
Apr 29 at 12:12












so, left to my own devices it seems. :)
– Michael Felt
Apr 30 at 18:32




so, left to my own devices it seems. :)
– Michael Felt
Apr 30 at 18:32










2 Answers
2






active

oldest

votes

















up vote
0
down vote













As an answer - as I have something working for me.



First of all - I seem to have been following the wrong process.



The process I use now is: - startup -



  1. fork from somewhere

  2. clone my fork "as origin"

  3. add "somewhere" as remote_origin

This directory I call "master", e.g., cpython-master for my cpython fork



The 'only' activity I do with this directory is "fetch and/or pull" from the remote_origin and then push to "origin".



This was working before - but I was getting lost when I had made a branch (that was submitted as a PR but not (yet) merged into remote_origin) and wanted to update that PR to include the latest updates.



So, what works now?



  1. start with a new clone "of my fork!"

  2. switch to the tagged branch that I consider 'latest'

  3. pull/fetch my previous branch into new branch

  4. get everything working - maybe needing to rinse and repeat back to this step

  5. choose a branch name (maybe same as old one, maybe new)

  6. commit locally

  7. push to github

What made a difference for me is not trying to merge the updates from either origin into my 'existing' branch but instead go to the 'new' remote_origins tag on a clone from my fork, and then "pull" my pull request into that situation.



While I am not absolutely clear on why this works better - at least I do not see:



hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.


Hope this helps others - it has certainly helped me! :)






share|improve this answer























  • @muru - personally, I prefer the steps "tighter" together, which is why I was not using the automated "1. 2. 3., etc.. C'est la vie.
    – Michael Felt
    May 13 at 15:55










  • Maybe, but that's not what code formatting is for and neither are any of the other features of code formatting needed here otherwise. Presenting simple text as a code block doesn't help readability or accessibility. If you want lines close together, I'd suggest using Stylish and some custom CSS. For example, compare: i.stack.imgur.com/0sBl9.png and i.stack.imgur.com/ovkZi.png
    – muru
    May 13 at 16:03











  • I’ll never remember how to do that. If I have to spend more time trying to get it formatted “properly” than I do working on the Q or A - guess I will contribute less rather than more. So just my thanks for your making it proper. :)
    – Michael Felt
    May 13 at 16:32

















up vote
0
down vote













You might want to try git pull -r. This (tries to) add remote changes "below" your local changes, then you can git push the result back.






share|improve this answer





















    Your Answer







    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "106"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    convertImagesToLinks: false,
    noModals: false,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );








     

    draft saved


    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f440640%2fhowto-resolve-git-merge-issues-when-attempting-to-keep-prs-in-sync-with-maste%23new-answer', 'question_page');

    );

    Post as a guest






























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    0
    down vote













    As an answer - as I have something working for me.



    First of all - I seem to have been following the wrong process.



    The process I use now is: - startup -



    1. fork from somewhere

    2. clone my fork "as origin"

    3. add "somewhere" as remote_origin

    This directory I call "master", e.g., cpython-master for my cpython fork



    The 'only' activity I do with this directory is "fetch and/or pull" from the remote_origin and then push to "origin".



    This was working before - but I was getting lost when I had made a branch (that was submitted as a PR but not (yet) merged into remote_origin) and wanted to update that PR to include the latest updates.



    So, what works now?



    1. start with a new clone "of my fork!"

    2. switch to the tagged branch that I consider 'latest'

    3. pull/fetch my previous branch into new branch

    4. get everything working - maybe needing to rinse and repeat back to this step

    5. choose a branch name (maybe same as old one, maybe new)

    6. commit locally

    7. push to github

    What made a difference for me is not trying to merge the updates from either origin into my 'existing' branch but instead go to the 'new' remote_origins tag on a clone from my fork, and then "pull" my pull request into that situation.



    While I am not absolutely clear on why this works better - at least I do not see:



    hint: Updates were rejected because the tip of your current branch is behind
    hint: its remote counterpart. Integrate the remote changes (e.g.
    hint: 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.


    Hope this helps others - it has certainly helped me! :)






    share|improve this answer























    • @muru - personally, I prefer the steps "tighter" together, which is why I was not using the automated "1. 2. 3., etc.. C'est la vie.
      – Michael Felt
      May 13 at 15:55










    • Maybe, but that's not what code formatting is for and neither are any of the other features of code formatting needed here otherwise. Presenting simple text as a code block doesn't help readability or accessibility. If you want lines close together, I'd suggest using Stylish and some custom CSS. For example, compare: i.stack.imgur.com/0sBl9.png and i.stack.imgur.com/ovkZi.png
      – muru
      May 13 at 16:03











    • I’ll never remember how to do that. If I have to spend more time trying to get it formatted “properly” than I do working on the Q or A - guess I will contribute less rather than more. So just my thanks for your making it proper. :)
      – Michael Felt
      May 13 at 16:32














    up vote
    0
    down vote













    As an answer - as I have something working for me.



    First of all - I seem to have been following the wrong process.



    The process I use now is: - startup -



    1. fork from somewhere

    2. clone my fork "as origin"

    3. add "somewhere" as remote_origin

    This directory I call "master", e.g., cpython-master for my cpython fork



    The 'only' activity I do with this directory is "fetch and/or pull" from the remote_origin and then push to "origin".



    This was working before - but I was getting lost when I had made a branch (that was submitted as a PR but not (yet) merged into remote_origin) and wanted to update that PR to include the latest updates.



    So, what works now?



    1. start with a new clone "of my fork!"

    2. switch to the tagged branch that I consider 'latest'

    3. pull/fetch my previous branch into new branch

    4. get everything working - maybe needing to rinse and repeat back to this step

    5. choose a branch name (maybe same as old one, maybe new)

    6. commit locally

    7. push to github

    What made a difference for me is not trying to merge the updates from either origin into my 'existing' branch but instead go to the 'new' remote_origins tag on a clone from my fork, and then "pull" my pull request into that situation.



    While I am not absolutely clear on why this works better - at least I do not see:



    hint: Updates were rejected because the tip of your current branch is behind
    hint: its remote counterpart. Integrate the remote changes (e.g.
    hint: 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.


    Hope this helps others - it has certainly helped me! :)






    share|improve this answer























    • @muru - personally, I prefer the steps "tighter" together, which is why I was not using the automated "1. 2. 3., etc.. C'est la vie.
      – Michael Felt
      May 13 at 15:55










    • Maybe, but that's not what code formatting is for and neither are any of the other features of code formatting needed here otherwise. Presenting simple text as a code block doesn't help readability or accessibility. If you want lines close together, I'd suggest using Stylish and some custom CSS. For example, compare: i.stack.imgur.com/0sBl9.png and i.stack.imgur.com/ovkZi.png
      – muru
      May 13 at 16:03











    • I’ll never remember how to do that. If I have to spend more time trying to get it formatted “properly” than I do working on the Q or A - guess I will contribute less rather than more. So just my thanks for your making it proper. :)
      – Michael Felt
      May 13 at 16:32












    up vote
    0
    down vote










    up vote
    0
    down vote









    As an answer - as I have something working for me.



    First of all - I seem to have been following the wrong process.



    The process I use now is: - startup -



    1. fork from somewhere

    2. clone my fork "as origin"

    3. add "somewhere" as remote_origin

    This directory I call "master", e.g., cpython-master for my cpython fork



    The 'only' activity I do with this directory is "fetch and/or pull" from the remote_origin and then push to "origin".



    This was working before - but I was getting lost when I had made a branch (that was submitted as a PR but not (yet) merged into remote_origin) and wanted to update that PR to include the latest updates.



    So, what works now?



    1. start with a new clone "of my fork!"

    2. switch to the tagged branch that I consider 'latest'

    3. pull/fetch my previous branch into new branch

    4. get everything working - maybe needing to rinse and repeat back to this step

    5. choose a branch name (maybe same as old one, maybe new)

    6. commit locally

    7. push to github

    What made a difference for me is not trying to merge the updates from either origin into my 'existing' branch but instead go to the 'new' remote_origins tag on a clone from my fork, and then "pull" my pull request into that situation.



    While I am not absolutely clear on why this works better - at least I do not see:



    hint: Updates were rejected because the tip of your current branch is behind
    hint: its remote counterpart. Integrate the remote changes (e.g.
    hint: 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.


    Hope this helps others - it has certainly helped me! :)






    share|improve this answer















    As an answer - as I have something working for me.



    First of all - I seem to have been following the wrong process.



    The process I use now is: - startup -



    1. fork from somewhere

    2. clone my fork "as origin"

    3. add "somewhere" as remote_origin

    This directory I call "master", e.g., cpython-master for my cpython fork



    The 'only' activity I do with this directory is "fetch and/or pull" from the remote_origin and then push to "origin".



    This was working before - but I was getting lost when I had made a branch (that was submitted as a PR but not (yet) merged into remote_origin) and wanted to update that PR to include the latest updates.



    So, what works now?



    1. start with a new clone "of my fork!"

    2. switch to the tagged branch that I consider 'latest'

    3. pull/fetch my previous branch into new branch

    4. get everything working - maybe needing to rinse and repeat back to this step

    5. choose a branch name (maybe same as old one, maybe new)

    6. commit locally

    7. push to github

    What made a difference for me is not trying to merge the updates from either origin into my 'existing' branch but instead go to the 'new' remote_origins tag on a clone from my fork, and then "pull" my pull request into that situation.



    While I am not absolutely clear on why this works better - at least I do not see:



    hint: Updates were rejected because the tip of your current branch is behind
    hint: its remote counterpart. Integrate the remote changes (e.g.
    hint: 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.


    Hope this helps others - it has certainly helped me! :)







    share|improve this answer















    share|improve this answer



    share|improve this answer








    edited May 13 at 11:22









    muru

    33.2k576140




    33.2k576140











    answered May 13 at 11:01









    Michael Felt

    865516




    865516











    • @muru - personally, I prefer the steps "tighter" together, which is why I was not using the automated "1. 2. 3., etc.. C'est la vie.
      – Michael Felt
      May 13 at 15:55










    • Maybe, but that's not what code formatting is for and neither are any of the other features of code formatting needed here otherwise. Presenting simple text as a code block doesn't help readability or accessibility. If you want lines close together, I'd suggest using Stylish and some custom CSS. For example, compare: i.stack.imgur.com/0sBl9.png and i.stack.imgur.com/ovkZi.png
      – muru
      May 13 at 16:03











    • I’ll never remember how to do that. If I have to spend more time trying to get it formatted “properly” than I do working on the Q or A - guess I will contribute less rather than more. So just my thanks for your making it proper. :)
      – Michael Felt
      May 13 at 16:32
















    • @muru - personally, I prefer the steps "tighter" together, which is why I was not using the automated "1. 2. 3., etc.. C'est la vie.
      – Michael Felt
      May 13 at 15:55










    • Maybe, but that's not what code formatting is for and neither are any of the other features of code formatting needed here otherwise. Presenting simple text as a code block doesn't help readability or accessibility. If you want lines close together, I'd suggest using Stylish and some custom CSS. For example, compare: i.stack.imgur.com/0sBl9.png and i.stack.imgur.com/ovkZi.png
      – muru
      May 13 at 16:03











    • I’ll never remember how to do that. If I have to spend more time trying to get it formatted “properly” than I do working on the Q or A - guess I will contribute less rather than more. So just my thanks for your making it proper. :)
      – Michael Felt
      May 13 at 16:32















    @muru - personally, I prefer the steps "tighter" together, which is why I was not using the automated "1. 2. 3., etc.. C'est la vie.
    – Michael Felt
    May 13 at 15:55




    @muru - personally, I prefer the steps "tighter" together, which is why I was not using the automated "1. 2. 3., etc.. C'est la vie.
    – Michael Felt
    May 13 at 15:55












    Maybe, but that's not what code formatting is for and neither are any of the other features of code formatting needed here otherwise. Presenting simple text as a code block doesn't help readability or accessibility. If you want lines close together, I'd suggest using Stylish and some custom CSS. For example, compare: i.stack.imgur.com/0sBl9.png and i.stack.imgur.com/ovkZi.png
    – muru
    May 13 at 16:03





    Maybe, but that's not what code formatting is for and neither are any of the other features of code formatting needed here otherwise. Presenting simple text as a code block doesn't help readability or accessibility. If you want lines close together, I'd suggest using Stylish and some custom CSS. For example, compare: i.stack.imgur.com/0sBl9.png and i.stack.imgur.com/ovkZi.png
    – muru
    May 13 at 16:03













    I’ll never remember how to do that. If I have to spend more time trying to get it formatted “properly” than I do working on the Q or A - guess I will contribute less rather than more. So just my thanks for your making it proper. :)
    – Michael Felt
    May 13 at 16:32




    I’ll never remember how to do that. If I have to spend more time trying to get it formatted “properly” than I do working on the Q or A - guess I will contribute less rather than more. So just my thanks for your making it proper. :)
    – Michael Felt
    May 13 at 16:32












    up vote
    0
    down vote













    You might want to try git pull -r. This (tries to) add remote changes "below" your local changes, then you can git push the result back.






    share|improve this answer

























      up vote
      0
      down vote













      You might want to try git pull -r. This (tries to) add remote changes "below" your local changes, then you can git push the result back.






      share|improve this answer























        up vote
        0
        down vote










        up vote
        0
        down vote









        You might want to try git pull -r. This (tries to) add remote changes "below" your local changes, then you can git push the result back.






        share|improve this answer













        You might want to try git pull -r. This (tries to) add remote changes "below" your local changes, then you can git push the result back.







        share|improve this answer













        share|improve this answer



        share|improve this answer











        answered May 17 at 18:01









        vonbrand

        13.9k22443




        13.9k22443






















             

            draft saved


            draft discarded


























             


            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f440640%2fhowto-resolve-git-merge-issues-when-attempting-to-keep-prs-in-sync-with-maste%23new-answer', 'question_page');

            );

            Post as a guest













































































            soUSAY1si7W1IcM2pewGYPr5jzIr XjpCFPwmGC4gTxl
            NfcEuW1JG irA1tKGAP92TPBGf,0hgIZPraBW6eiEvpENGX6ZcU2UFAZb La00jPkizZVDuwx9,HZsGQ,hvUnxQdhT48M4 otS2ZX

            Popular posts from this blog

            How to check contact read email or not when send email to Individual?

            How many registers does an x86_64 CPU actually have?

            Displaying single band from multi-band raster using QGIS