Magit이 지점을 어디로 밀어야하는지 묻는 방법은 무엇입니까?


10

호출 할 때 magit-push-currentP P상태 버퍼에서, Magit 2.1.0상류가 설정되지 않은 언제, 어디서 처음에 지점을 밀어 내게 묻습니다.

이전과 마찬가지로 이름을 자동으로 생성하려면 어떻게해야합니까?


2
모르는 경우 자동 생성 이름은 완료 옵션 중 하나입니다. 그래서, 당신은 처음 누를 때 some-branch-name받는 origin원격, 당신은 아마 입력 할 수 있습니다 o TAB s TAB당신은 당신이 원하는 이름을 얻을 것이다.
Malabarba

오 알았어, 고마워 문제는 동일한 접두사로 시작하는 많은 분기가 있으며 매우 유용하지 않으며 항상 로컬 분기와 동일한 이름의 원격 분기를 배치한다는 것입니다.
z1naOK9nu8iY5A

답변:


8

업데이트 : 아래에 언급 된 "푸시 지점"이 지금 구현되었습니다 . 자세한 내용 은 분기에 대한 설명서 를 참조하십시오.

업스트림 분기를 한 번 설정해야합니다. 당신이 있음을 완료 한 후에는 P P것과 푸시 상태 표시 버퍼에 한 unpulled 및 unpushed 변화의 목록을 얻을 것이다 (어떤이있다 제공).

업스트림 브랜치를 설정하는 방법에는 여러 가지가 있습니다. --set-upstream푸시 팝업에서 스위치를 사용할 수 있습니다 : P -u P. 또는 업스트림을 설정하고 다른 작업을 수행하지 않는 명령을 사용하십시오 b u.

또한 "시작점"이 지점 이름 인 경우 Magit은 새 지점을 만들 때 업스트림 지점을 자동으로 설정합니다. 이것은 로컬 및 원격 "업스트림"에서 작동합니다. 그러나 현지 지점을 시작 지점으로 선택하면 푸시하는 데 도움이되지 않습니다. 현재 저장소에서 현재 저장소로 푸시하는 것은 분명히 의미가 없으며 허용되지 않습니다.

따라서 "업스트림"브랜치가 실제로 다른 로컬 브랜치 인 P P경우 업스트림 브랜치가 구성되지 않은 것처럼 동작하며 정확히 같은 방식으로 동작합니다 P e. 업스트림이 전혀 구성되지 않은 경우에도 마찬가지입니다.

이것은 Git의 한계로 인해 하나의 다른 브랜치를 일부 브랜치 에만 연결할 수 있으며 그 브랜치를 "업스트림 브랜치"라고합니다. 최소한 "업스트림"및 "게시"분기가 있으면 더 좋습니다. 결국 Magit에서 구현하려고합니다. 이슈 # 1485 참조 .

따라서 P P"upstream"브랜치는 "master"가 아니라 "origin / master"가되어야합니다.


나는 항상 git push인수없이 실행되는 푸시 변형을 추가하는 것을 고려하고 있습니다. 그러면 Git 구성에만 의존하게됩니다.


나는 master지점에서 시작 origin/master하여 업스트림으로 설정 되지 않았습니다 . 업스트림에서 자동으로 설정하려면 지점에서 시작해야 합니까?
z1naOK9nu8iY5A

업데이트 된 답변을 참조하십시오.
tarsius

1
업스트림 으로 origin/master설정 에서 분기 origin/master했지만 업스트림으로 기대했을 origin/branch-name것입니다.
z1naOK9nu8iY5A

그것이 당신이 원하는 것이라면 푸시하는 동안하는 것이 가장 좋습니다. P -p P <... completion ...> RETorigin/branch-name당신이 그것을 입력 할 필요가 없습니다, 완료 후보로 제공됩니다.
tarsius

2
일반적으로 한 번만 푸시하기 때문에 기능 당 분기와 함께 코드 검토를 위해 gitflow 및 pull 요청을 사용하면 고통스럽고 항상 로컬 분기와 이름이 같은 원격 분기를 만들어야합니다. 다른 명명 된 브랜치로 푸시하는 것은 코드 검토를 끝내는 것입니다.
Barry Kelly

3

--set-upstream현재 지점에 아직 업스트림이 없을 때 자동으로 활성화되는 다음 조언을 사용합니다 .

(defun magit-push-arguments-maybe-upstream (magit-push-popup-fun &rest args)
  "Enable --set-upstream switch if there isn't a current upstream."
  (let ((magit-push-arguments
         (if (magit-get-remote) magit-push-arguments
           (cons "--set-upstream" magit-push-arguments))))
    (apply magit-push-popup-fun args)))
(advice-add 'magit-push-popup :around #'magit-push-arguments-maybe-upstream)

ido 완료와 결합하면 다음과 같이 새 분기를 추진할 수 있습니다 P P RET.

;; NOTE: requires ido-completing-read+
(setq magit-completing-read-function #'magit-ido-completing-read)

너무 멋져! 대단히 감사합니다!
z1naOK9nu8iY5A

0

방금 새 분기를 b c만든 다음 .git/config파일을 편집하여 origin/branch모든 magit 2 항목으로 원숭이 가 아닌 것을 가리키고 어쨌든 작동하지 않는 것 같습니다.

변화:

[branch "fix_something"]
  remote = .
  merge = refs/heads/master

[branch "fix_something"]
  remote = origin
  merge = refs/heads/fix_something

나는 여전히 똑같은 것을 달성하는 magit2에서 핵심 조합을 찾지 못했습니다. 리모컨이 원점에 없기 때문에 리모컨 설정이 작동하지 않습니다.


1
업스트림은을 사용하여 설정할 수 있습니다 bu. 그러나 git branch --set-upstream-toGit은 존재하고 아는 것처럼 존재하지 않는 브랜치를 업스트림으로 설정할 수 없으므로 Magit도 할 수 없습니다.
tarsius

@tarsius magit 1은 내가 필요한 것을하는 것처럼 보였습니다. 방금 워크 플로의 일부를 되찾기 위해 노력하고 있습니다.
David N. Welton
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.