Git 자습으로 인재가 되다--fork 창고 동기화 유지
핵심 사상은 여러 개의 원격 창고(remote repository)를 이용하는 것이다.
먼저 포크를 실행하고 자신의 창고clone 코드로 내려오세요. 마스터 지점을 예로 들면
$ git branch
* master
작업 목록이 최신이고 깨끗함을 유지하다
$ git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
다음은 원격 창고를 살펴보자.
$ git remote -v
origin ssh://git@xxx/YOUR_REPO/my-android.git (fetch)
origin ssh://git@xxx/YOUR_REPO/my-android.git (push)
여기origin 별명에 대응하는 원격 창고지는 자신의 창고를 가리킨다(자신의 창고에서 clone을 가리키기 때문이다)
다음에 우리는 목표 창고(남의 창고)에 대한 지향을 추가해야 한다.
$ git remote add upstream ssh://git@xxx/UPSTREAM_REPO/my-android.git
그리고 원격 창고 상황을 다시 한 번 볼게요.
$ git remote -v
origin ssh://git@xxx/YOUR_REPO/my-android.git (fetch)
origin ssh://git@xxx/YOUR_REPO/my-android.git (push)
upstream ssh://git@xxx/UPSTREAM_REPO/my-android.git (fetch)
upstream ssh://git@xxx/UPSTREAM_REPO/my-android.git (push)
원격 창고에 연결되어 있습니다. 소스트리를 사용하여 상태를 직관적으로 보십시오
그림에서 보듯이 내가 포크를 한 후에 상대방의 창고가 여러 번 제출되었다. 이때 내 창고에도 몇 번 제출되었고 리베이스를 통해 동기화를 유지했다.
rebase upstream의 마스터 분기
$ git rebase upstream/master
그 다음은 일반적인rebase의 조작입니다. 충돌이 있으면 어떻게 해결해야 할지 모르겠습니다. 저의 또 다른 "Git자습성재-rebase 완전판"을 참고하세요.
rebase를 완성한 후에 노드가 OK인 것을 보십시오
다음은push를 실행합니다. 원격 창고로 직접push를 이동하면 거부됩니다.
$ git push origin master:master
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'ssh://git@xxx/YOUR_REPO/my-android.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.
이때 두 가지 방법이 있다. 하나는 원격 지점을 삭제하고 직접push하는 것이다.다른 하나는 git push -- force를 사용하여 강제 밀어넣기입니다.
여기서 나는 두 번째 강추 방식을 선택했다. 첫 번째 방식은 나의 또 다른'Git자습성재-rebase 완전판'을 참고했다.
$ git push -f origin master:master
Compressing objects: 100% (186/186), done.
Writing objects: 100% (281/281), 66.82 KiB | 11.14 MiB/s, done.
Total 281 (delta 126), reused 184 (delta 41)
remote: Resolving deltas: 100% (126/126), completed with 54 local objects.
To ssh://git@xxx/YOUR_REPO/my-android.git
+ 8aaa796...d298312 master -> master (forced update)
push 성공, 소스트리 위 상태도 OK.
이로써 다른 창고의 최신 제출과 함께 자신의 제출도 보유하게 됐다.
전재 대상:https://juejin.im/post/5c82181af265da2da835a3e5
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.