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이 있습니다. 내가 원하는 한 가지 부작용은 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이 하는 일이 간단하지 않다고 생각한다. 매우 강력합니다. 그렇습니다. 하지만 저는 그 힘에 압도당했습니다. 당신의 도움을 주셔서 감사합니다!
(참고: 마지막 시도, 새 시도 실패 - 어떤 특정 단계(체크아웃, 병합, 푸시)가 사용되었는지 궁금합니다. 그리고 모든 것이 작동하게 했죠? 내 bpo를 받고 푸시한 다음 병합하고 커밋(로컬로)했습니까? 그런 다음 푸시하거나 다른 작업 흐름을 사용합니다. 제가 찾고 있는 것은 "자연스러운" 작업 흐름입니다.
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
결과를 반환할 수 있습니다.
답변2
대답으로 - 나에게 맞는 것이 있기 때문입니다.
첫째, 잘못된 프로세스를 따르고 있는 것 같습니다.
지금 사용하고 있는 프로세스는 다음과 같습니다. -Startup-
- 어딘가에서 가지
- 내 포크를 "원본으로" 복제하세요.
- Remote_origin에 "어딘가"를 추가하세요.
나는 이 디렉토리를 "master"라고 부릅니다. 예를 들어 cpython 브랜치의 경우 cpython-master라고 부릅니다.
이 디렉토리에서 내가 수행하는 "유일한" 활동은 remote_origin에서 "가져오거나 당기는" 다음 "origin"으로 푸시하는 것입니다.
이전에는 작동했지만 브랜치를 생성할 때(PR로 커밋되었지만 아직 Remote_origin에 병합되지 않음) 최신 업데이트를 포함하도록 PR을 업데이트하고 싶었습니다.
그렇다면 지금은 무엇을 합니까?
- "My Fork"의 새로운 복제품으로 시작해보세요!
- 내가 "최신"이라고 생각하는 태그된 분기로 전환하세요.
- 이전 분기를 새 분기로 끌어오기/가져오기
- 모든 것이 제대로 작동하도록 하세요. 헹구고 이 단계를 다시 반복해야 할 수도 있습니다.
- 지점 이름을 선택하세요(이전 이름과 동일할 수도 있고 새 이름일 수도 있음).
- 현지 제출
- github에 푸시
나에게 중요한 것은 두 오리진의 업데이트를 내 "기존" 브랜치에 병합하려고 시도하는 것이 아니라 내 브랜치의 복제본에 있는 "새"remote_origins 태그로 이동한 다음 풀 요청을 상황에 "Pull"로 만드는 것입니다. .
왜 그것이 더 잘 작동하는지 잘 모르겠지만 적어도 나는 이해하지 못합니다.
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.