Magit으로 지점의 업스트림 변경


47

Magit (로 P P) 으로 분기를 푸시 할 때 분기에 업스트림이없는 경우 Magit은 푸시하려는 분기의 이름을 묻습니다. 훌륭합니다.

그러나 지점의 업스트림을 설정하면 Magit은 더 이상 지점을 밀고 싶은지 묻지 않습니다. 이것은 일반적으로 편리하지만 (매번 묻기를 원하지는 않지만) 지점을 다른 원격 지점으로 푸시하기가 어렵습니다.

현재 지점에 이미 업스트림이 있더라도 Magit이 대상 지점에 대해 다시 묻도록하는 방법이 있습니까?


사용 사례

다음과 같이 가지가있는 것이 일반적입니다.

Local:    issue-30 ~/Git-Projects/repo/
Remote:   issue-30 @ origin (git@github.com:.../repo.git)
Head:     ebe4054 Some commit message

로컬 및 원격 분기를 모두로 변경하고 싶습니다 issue-30-and-34. 로컬 지점의 이름을 바꾸면 다음과 같이 남습니다.

Local:    issue-30-and-34 ~/Git-Projects/repo/
Remote:   issue-30 @ origin (git@github.com:.../repo.git)
Head:     ebe4054 Some commit message

내가 삭제하는 경우에도 origin/issue-30, 일 P P에 대한 것은 issue-30-and-34 단순히을 다시합니다 origin/issue-30.

내가하는 일은 다음과 같지만 단일 git명령 으로 수행 할 수있는 일에 대해서는 다소 우회적입니다 .

  1. issue-30-and-34 (이전 이름을 바꾸는 대신) 라는 새 지점을 만듭니다.
  2. 의 로컬 및 원격 버전을 모두 삭제합니다 issue-30.
  3. 밀어 넣기 issue-30-and-34(아직 업스트림이 없기 때문에 Magit에서 밀어 넣을 위치를 물을 것입니다).

내 정보 대신 @tarsius의 답변을 수락하는 것이 좋습니다 ( 관련 정보를 보다 쉽게 ​​찾을 수 있도록 ).
Constantine

@ 콘스탄틴 완료.
Malabarba

답변:


60

로 시작 v2.1하여 현재 분기의 업스트림을 원격 또는 로컬 분기로 변경할 수 있습니다 bu[REMOTE/]BRANCHRET. 로 시작 v2.4하여 업스트림이 이미 설정되어 있으면 설정 bu이 해제됩니다. u다시 누르면 새로운 값이 설정됩니다.

시작 v2.4하여 업스트림이 설정되지 않은 경우을 사용하여 푸시하면서 업스트림을 설정할 수도 있습니다 pu[REMOTE/]BRANCHRET. 업스트림으로 사용할 분기를 자동으로 묻는 메시지가 표시됩니다. 일단 업스트림이 설정되면 업스트림 pu을 변경하지 않고 해당 설정으로 푸시합니다. 따라서 업스트림 을 변경 하려면 이전 단락에서 설명한 접근 방식을 사용해야합니다.

이전 v2.4에 푸시하려는 원격 브랜치를 업스트림 브랜치로 설정할 수있었습니다 p-ueREMOTE/BRANCHRET. 그러나 이제는 기본적으로--set-upstream 푸시 팝업에서 스위치를 더 이상 사용할 수 없습니다 . nil 로 설정 하여 다시 가져올 수 있습니다 . 두 가지 효과 가 있습니다. 다음에 다시 시작한 후 스위치를 다시 사용할 수있게되며 이전 단락에서 설명한 접근 방식이 더 이상 작동하지 않습니다.magit-push-current-set-remote-if-missing--set-upstream


두 번째 및 세 번째 단락에 설명 된 두 기능을 동시에 사용할 수있게하려면 magit-push-current-set-remote-if-missing변경하지 않은 채로두고 init 파일에 추가하십시오.

(magit-define-popup-switch 'magit-push-popup
  ?u "Set upstream" "--set-upstream")

11

P C-u C-u P밀어 넣기 전에 Magit가 어떤 원격 및 원격 브랜치를 사용할지 묻게하려면 " "를 누르십시오 .

(단일 접두사 인수 ( " P C-u P")를 사용하면 Magit에서 사용할 리모콘을 묻습니다.)

내가 눌러이 발견 P C-h k P하는 Magit 상태 버퍼의 문서를 읽어 magit-pushmagit-push-dwim(이 문서는 BTW, 구식 인 것 같다), 및 실험.

추신 : Magit 사용합니다 magit-1.2.0-2049-ge6839e8.


5
이 답변은 약간 구식입니다.
Szymon Wygnański 9

1

이제 분기 / 구성 섹션에있는 것 같습니다.

b C p pushRemote를 설정하려면


기본값 이외의 리모컨을 지정하는 방법에 대한 아이디어가 있습니까?
scry

0

2016 년 11 월 및 최신 magit의 부분 솔루션은 다음과 같습니다.

P e-푸시 할 수 elsewhere있지만 기억되지 않습니다

나는 magit에 대한 방법을 찾을 수 없었기 --set-upstream때문에 터미널에서 일종의 속임수를 사용했지만이 문제를 극복했습니다.

git push --set-upstream origin <branch-name>

그리고 이제 새로운 업스트림이 저장되고 다음을 만들 수 있습니다. :)


1
"나는 방법을 찾을 수 없습니다 [...] --set-upstream"-아마도 당신은 tarsius '답변을
npostavs

확실히, 이것이 나를 알아내는 데 도움이되었습니다. 다만, magit그 이후 조금 변경되었습니다, 나의 희망은 내 솔루션 누군가 여분의 몇 분을 절약 할 수 있다는 것입니다
Josh.F

1
이 답변의 첫 번째 단락은 업스트림을 변경하는 방법을 설명하며 최신 Magit에서 작동합니다.
npostavs
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.