PRをマスターと同期しようとしたときに「git merge」の問題を解決する方法

PRをマスターと同期しようとしたときに「git merge」の問題を解決する方法

StackExchangeの他の場所で提供されている答えで私が理解する限り、プロセスは簡単でなければなりません。

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

g) ステップまで、すべてが期待どおりに機能します。 「PR」ではなく「ソース」のタグで同期を維持しようとしましたが、プロセスはうまくいきました。

助け、知恵、指導などに感謝します。

現在のステップg

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://[email protected]':
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.

別の日:リセットとマージとそこにあるいくつかの例について詳しく読んだ後、ローカルマスターをインポートするのではなく、ローカルマスターにコミットしてから、ローカルの「マスター」とローカルブランチをマージする必要があると思いました。また、「他のリモコン」からマージで「引いて」欺くだけです。

とにかく - ローカル状況のバックアップを復元しました(gitを使用して「新しい」ことを試みるときは常にコピーを作成します)。次の内容が「ローカル」ステータスに関するコメント/クエリに回答してください。

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]

または

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

したがって、質問を再表現する必要があるかもしれません。

  • ローカルにマージする必要がありますか?
  • 「プロジェクト所有者」とも呼ばれる「別のリモート」からインポートしますか?
  • 全く違うの?

次の試み - マージを使用してください。 (他のブランチでマージする必要があるかもしれません。「master」は現在3.7です(推測します)。したがって、cpython / 3.7でマージする必要があるかもしれません。

だから今、再び「方法」を感じます。

基本的に、現在の開発とまだ「同期」されていることを維持/確認し、現在の状態にPRを更新したいPRがあります。私が望む1つの副作用は、PRが「検証プロセス」を通じて再評価されることです。

次のバージョンまで、「cpython」が私のPRをマージしない状況に直面するかもしれません。これが発生した場合は、可能であればgitを使用して公開PR(別名bpo-XXXXX)を「AIXリリース」ブランチに「マージ」および/または「プール」したいと思います。

私が見るステップは次のとおりです。

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"

したがって、新しいリリースへのマージを簡素化/検証するために、bpo-XXXXXをマスターおよび/または名前付きブランチの最新の「同期」とともに知って「保存」したいと思います。

私も知っている、私はgitについては日曜日の運転手です。これはあなたには明らかです。しかし、私は多くの人にとって(少なくとも私が一人ではないことを望む:smile:)、gitがすることは簡単ではないと思います。非常に強力です。はい。しかし、私はその力に圧倒されました。ご協力ありがとうございます!

(注:最後の試み、新しい試みに失敗しました - どの特定のステップ(チェックアウト、マージ、プッシュ)が使用されたのか疑問に思います。そして、すべてがうまくいきましたか?その後、プッシュするか別のワークフローを使用します。

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://[email protected]':
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.

ベストアンサー1

あなたはそれを試したいかもしれませんgit pull -r。この試みは、ローカルの変更「下」にリモート変更を追加してからgit push結果を返すことがあります。

おすすめ記事