로컬 브랜치를 GIT에서 다른 접두사를 가진 원격 분기에 매핑 할 수 있습니까?
문제
우리는 내가 일하는 곳에서 반 중부 git 저장소와 함께 일하고 있습니다. 각 개발자는 Central Git 저장소에 자체 하위 트리가 있으므로 다음과 같은 것 같습니다.
master alice/branch1 alice/branch2 bob/branch1 michael/feature release/1.0 release/1.1
내 나무에서 현지에서 일하고 있습니다 topic/feature
, 이는에 해당합니다 michael/feature
중앙 나무에서.
나는 사용하고있다
git push origin topic/feature:michael/feature
내 변경을 원격 트리로 밀어 넣습니다. 그러나 이것은 번거롭고 실수가 발생하기 쉽습니다 (예 : 개발자 이름을 생략하고 기능 이름을 철회하는 등).
나는 이것을 할 수있는 더 깨끗한 방법을 찾고 있습니다. 예를 들어, "git push
". 수정 된 Fetch RefSpec으로 다른 리모컨을 설정하면 정확히 어떻게 해야하는지 잘 모르겠습니다. 또한 다른 리모컨을 사용하기 위해 현재 지점 정의를 수정하는 방법도 잘 모르겠습니다.
내 현재 .git/config
다음과 같은 것 같습니다.
[remote "origin"] url = git://central/git/project fetch = +refs/heads/*:refs/remotes/origin/* [branch "topic/feature"] remote = origin merge = refs/heads/michael/project
편집하다: 또한 이것을 당기기/페치에 적용하고 싶습니다. 그러나 branch.<name>.merge
그것을 돌봐?
나는 이것을 계속 연구하고 무언가를 찾으면 여기에 게시 할 것입니다. 그러나 나는 다른 좋은 아이디어를 얻기를 바라고 있습니다.
편집 2 : 나는 로컬 및 원격 지점 이름을 동일하게 유지하겠다고 결정했습니다. 그것은 최소한의 작업이며 미래의 문제가 가장 적은 것으로 보입니다.
해결책
가능하다면, 동일한 지점 이름을 로컬 및 원격으로 사용하는 것이 좋습니다. 그 다음에 git push
모든 지역 지점을 중앙 저장소의 해당 지점으로 밀어 넣습니다.
로컬 및 원격 저장소에서 다른 접두사를 사용하려면 새 기능 분기를 만들 때마다 구성 파일에 매핑을 추가해야합니다. Topic/Branch_name에 대한 매핑을 설정하라는 명령은 다음과 같습니다.
git config remote.origin.push refs/heads/topic/BRANCH_NAME:michael/BRANCH_NAME
다른 팁
원격 "원산지"] 섹션에서 매핑 당 한 줄을 추가하십시오. 마스터 마스터를 포함하여.
push = refs/heads/master:master
push = refs/heads/topic/feature:michael/feature
git-config 명령으로 어떻게 해야할지 잘 모르겠습니다.
지금부터 모든 지점은 직선 git 푸시 (매개 변수가 없음)를 할 때 동일하게 밀려납니다.
왜 같은 지점 이름을 로컬로 그리고 원격으로 유지하지 않는지 설명 하시겠습니까?
지점을 다음과 같이 리모컨의 다른 추적 브랜치에 매핑 할 수 있습니다.
git remote add heroku git@heroku.com:YOURAPPNAME.git
git checkout -b heroku -t heroku/master
구성은 @paul이 제안한 것과 비슷합니다 (실제로 "더 간단한").
나에게 잘 맞는 사용 단계에 대해서는이 요점을보십시오 (저의 조정) https://gist.github.com/2002048.