GitHub에서 Bitbucket으로 분기


161

CakePHP 기반 프로젝트에서 일하고 있는데 GitHub 에서 호스팅됩니다 . 내 프로젝트Bitbucket 에서 호스팅되고 있습니다. 둘 다 git을 사용 합니다. 기본적으로 업데이트를 얻을 수 있도록 Bitbucket 리포지토리에 CakePHP 의 '포크'( git을 처음 사용하기 때문에 올바른 용어를 사용하고 있는지 모르겠습니다)를 만들고 싶습니다. 모든 CakePHP zip / tar를 다운로드하고 폴더를 교체 할 필요없이 커밋하고 푸시하지만 '병합'(?)


5
이러한 종류의 워크 플로에 대한 올바른 접근 방법 은 stackoverflow.com/questions/1811730/… 을 참조하십시오 .
Dolbz

@ Dolbz 그것은 내가 필요로하는 것 같아요, 감사합니다!
entropid

답변:


144

오늘은 다른 사이트에서 "풀 요청"을 보낼 수 없습니다. Bitbucket 이슈 트래커에 # 3288 기능 요청을 추가했습니다 . 이것을 추적하려면 자신을 추종자로 추가하는 것이 좋습니다.

그러나 zip 파일이나 tarball을 다운로드하지 않고도 소스를 GitHub에서 Bitbucket으로 옮길 수 있습니다. GitHub에서 복제하여 Bitbucket으로 푸시합니다.

$ git clone https://github.com/cakephp/cakephp
$ cd cakephp
$ git push git@bitbucket.org:mg/cakephp.git master

내가 만든 mg/cakephp최초의 Bitbucket에 빈 Git 저장소로. 그렇게하면 변경 세트를 GitHub에서 Bitbucket으로 푸시 / 풀할 수 있습니다.


3
그렇다면 어떻게 상류에서 끌어낼 수 있을까요?
Ruchir Shukla

1
@RuchirShukla : 기본적으로 같은 방식입니다. 업스트림에서 당겨 커밋을 자신의 머신을 통해 이동해야합니다. 그런 다음이를 다른 호스팅 사이트로 푸시하여 두 사이트를 동기화합니다.
Martin Geisler

4
이것은 cd cakephp두 명령 사이에 있어야한다는 것을 제외하고는 나에게 효과적이었습니다. 초보자가 아닌 사람에게는 분명하지만 초보자는 왜 작동하지 않는지 궁금 할 것입니다.
aaronbartell

이것을 설명하기 위해 YouTube 동영상을 만들 수 있습니까? 복제 할 수 없었습니다. 이 지침을 수행 할 수 있었지만 푸시하고 커밋 할 때 여전히 분기 분기 대신 마스터로 푸시하려고합니다.
Wax

이 기능은 작동하지 않습니다 fork. 지점 및 태그는 BitBucket으로 복사되지 않습니다.
Joel Karunungan

81

아래의 워크 플로는 github 리포지토리를 새로운 원격이라고 sync하고 bitbucket 원격을로 추가 origin합니다. 또한 githubgithub 리포지토리 master를 추적하기 위해 호출되는 분기와 비트 버킷 리포지토리를 추적하기 위해 호출되는 분기를 추가 합니다. 비어있는 "myrepository"라는 비트 버킷 저장소가 있다고 가정합니다.

리모컨 설정

# setup local repo
mkdir myrepository
cd myrepository
git init

# add  bitbucket remote as "origin"
git remote add origin ssh://git@bitbucket.org/aleemb/myrepository.git

# add github remote as "sync"
git remote add sync https://github.com/aleemb/laravel.git

# verify remotes
git remote -v
# should show fetch/push for "origin" and "sync" remotes

설치 지점

# first pull from github using the "sync" remote
git pull sync

# setup local "github" branch to track "sync" remote's "master" branch
git branch --track github sync/master

# switch to the new branch
git checkout github

# create new master branched out of github branch
git checkout -b master

# push local "master" branch to "origin" remote (bitbucket)
git push -u origin master

이제 로컬 github브랜치가 github repo의 master브랜치를 추적 해야합니다 . 그리고 로컬 master브랜치가 비트 버킷 저장소 ( master기본적으로 브랜치)를 추적 해야합니다 .

이렇게하면 github브랜치를 쉽게 가져온 다음 변경 사항을 master브랜치에 병합하고 (병합보다 우선 적용) master브랜치를 푸시 (비트 버킷으로 푸시) 할 수 있습니다 .


이것은 작동하지 않는 것 같지만 좋은 생각입니다. 어쨌든 작동하도록 수정해야합니까?
bozdoz

로컬 github 브랜치가 원격 github 마스터 브랜치를 추적 한 다음 원격 비트 버킷 마스터로 푸시합니까? github에 대한 푸시는 언제 발생합니까? @aleemb
bozdoz

1
Git 2.2.1 --set-upstream에서는 더 이상 사용되지 않습니다 ... 그러나 github업스트림 저장소를 설정하기 전에 분기 를 만드는 한 작동 합니다.
켄 프린스

3
대신 --set-상향 할 일을하는 : git fetchgit branch --track github sync/master
Beaudinn 그레베

3
내가 뭘없는 것은 생각 git checkout github하고 git checkout -b master힘내 분기 명령 다음에. 당신은 그 지점 (함께 종료됩니다 git branch -a) : GitHub의, 마스터, 리모트 / 원산지 / 마스터, 리모트 / 동기화 / 마스터
클레멘스 Zleptnig

31

리포지를 최신 상태로 유지하려면 Github ( upstream)와 Bitbucket ( origin)의 두 가지 리모컨을 다음 과 같이 사용하십시오.

# Clone original CakePHP source code from Github
git clone --mirror https://github.com/cakephp/cakephp
cd cakephp
# Rename remote from `origin` to `upstream`
git remote rename origin upstream
# Add your Bitbucket repo (this is where your code will be pushed)
git remote add origin https://bitbucket/your/repo.git
# Push everything to Bitbucket
git push --mirror origin

Github에서 CakePHP 업데이트를 가져 오려면 :

git pull upstream master

코드 변경 사항을 Bitbucket으로 푸시하려면

git push origin master

첫 번째 명령 에서 git clone mybitibucket / cakephp / cakephp 를 의미한다고 생각 git합니까? 이것은 갈 길이 ....
ribamar

이건 대단해! 정말 감사합니다! 많은 감사
Aakanksha

이것은 또한 작동하지 않습니다. 지점 및 태그는 Bitbucket에 포함되어 있지 않습니다.
Joel Karunungan

@JoelKarunungan 좋은 지적입니다! 브랜치와 태그를 포함한 모든 것을 푸시하려면 이것이 효과가 있다고 생각합니다 git push --all --mirror origin. 답변이 업데이트되었습니다.
Zubin

@Zubin 이것을 시도 했습니까? fatal: --all and --mirror are incompatible 또한 git pull upstream master치명적인 오류가 발생합니다. fatal: Couldn't find remote ref master
Joel Karunungan

14

BitBucket에서 새 리포지토리를 생성 할 때 Import repository오른쪽 상단 의 버튼 을 클릭하십시오 . Clone or download포크하려는 리포지토리의 Github을 클릭 할 때 찾은 https URL을 입력하십시오 .

리포지토리에 이름을 지정하고 개인 정보 설정을 구성하면됩니다.


1
그것은 포크가 아닌 복제입니다. 그것은 다른 것입니다.
entropid

7
이 기능은 현재 Bitbucket에서 '가져 오기 가져 오기'로 표시되어 있습니다.
Wild Pottok 2018 년

1
@entropid 포크는 원래 저장소의 복제본입니다. 자식 세계에서 Forking == cloning
enorl76

@ enorl76 특히 일반적인 용도는 아닙니다.
장비

2
@ enorl76 예 기술적으로는 그렇습니다. 그러나 포크는 복제본을 원본 리포지토리에 "연결된"상태로 유지하여 복제본을 업데이트하고 궁극적으로 푸시하는 방법입니다. 여기에서 'origin'과 'upstream'링크의 조합이 근본적인 역할을합니다. 그런 다음 Github와 Bitbucket은 "푸시 요청"과 같이 포크를보다 생산적이고 친숙하게 만들기 위해 업스트림 주위에 모든 도구 세트를 구축했습니다.
Dan Niero

0

프로젝트와 함께 리포지토리를 쉽게 다운로드하고 싶을 것 같고 cakePHP에 기여하지 않을 것입니다. 맞습니까?

그렇다면 리포지토리에 외부 참조를 추가하기 만하면됩니다.

SVN : GIT와 동일한 외부 항목이 있습니까?

나중에 cakePHP에 기여하고 싶더라도 원본 리포지토리에서 잘 수행 할 수 있습니다.


0

@Martin Geisler의 답변 이후 Bitbucket은 github.com에서 리포지토리를 가져 오는 기능을 활성화했습니다.

나는 성공적으로 bitbucket.org에 개인의 repo에 github.com에서 개인의 repo를 가져올 수 있었다

단계 는 다음 같습니다.

  1. 작성 단추를 클릭하고 저장소 ( '+'> 저장소)를 선택하십시오.
  2. 이제 새 저장소를 작성하는 대신 나타나는 모달의 오른쪽 상단에서 가져 오기 저장소를 선택하십시오.
  3. 리포지토리를 가져 오기 위해 github repo의 URL과 인증 자격 증명을 새 모달에 입력하십시오.
  4. 그게 다야. 모든 것이 github에서 비트 버킷으로 부드럽게 가져옵니다.

스크린 샷의 오른쪽 상단에있는 가져 오기 저장소 링크를 참고하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.