지점의 내용을 새로운 지역 지점으로 복사하려면 어떻게해야합니까?


270

나는 현지 지사에서 일했으며 변경 사항을 원격으로 푸시했습니다. 해당 지점의 변경 사항을 되돌리고 다른 작업을 수행하고 싶지만 작업을 완전히 잃고 싶지 않습니다. 로컬에 새 분기를 만들고 이전 분기를 복사하는 것과 같은 것을 생각하고 변경 사항을 되돌리고 이전 분기에서 계속 작업 할 수 있습니다. 더 좋은 방법이 있습니까? 아니면 어떻게해야합니까?


10
사년 후, 힘내 2.15 (Q4 2017)와 함께, 당신은 할 것이다 git branch -c A B. 아래 내 답변
VonC

답변:


445
git checkout old_branch
git branch new_branch

그러면 "old_branch"와 동일한 상태의 새 분기 "new_branch"가 제공됩니다.

이 명령은 다음과 결합 될 수 있습니다.

git checkout -b new_branch old_branch

134
또는 더 짧습니다 git checkout -b new_branch(이미 켜져있는 경우 old_branch).
Koraktor

4
새 분기 만 만들지 만 한 분기에서 다른 분기로 내용을 복사 할 수 없습니다. 이 명령을 시도하면 "이름이 **** 인 지점이 이미 있습니다"라는 메시지 만 표시됩니다.
anoop

7
이와 같이 새 분기를 만들면 즉시 이전 분기의 사본이 아니라 이전 분기의 머리에 새로운 포인터가 생깁니다. 그러나 이제 새 브랜치를 리베이스하는 것과 같은 작업을 수행하면 새 브랜치가 수정되는 동안 이전 브랜치는 여전히 원래 상태에 있음을 알 수 있습니다. 그래서 OP가 원하는 것을 수행한다고 생각합니다.
uli_1973

1
git checkout old_branch 및 git branch보다 new_branch .... 아래 명령은 새 분기를 만들고 새 분기로 이동합니다 (분기를 새 분기로 변경) git checkout -b 프로덕션에서 위 명령을 사용하는 것이 좋습니다. new_branch old_branch
Kiran

지점을 덮어 쓰려면 참조 stackoverflow.com/questions/26961371/...을
MCCCS

55
git branch copyOfMyBranch MyBranch

이렇게하면 지점을 체크 아웃하는 데 시간이 오래 걸리고 불필요한 작업이 방지됩니다. 체크 아웃은 "작업 트리"를 수정합니다. "작업 트리"는 크기가 크거나 큰 파일 (예 : 이미지 또는 비디오)을 포함하는 경우 시간이 오래 걸릴 수 있습니다.


1
물론 git에 바이너리 파일, 특히 큰 파일이있는 경우 해당 파일에 대한 전략을 분석하는 것이 좋습니다. 당연히, 특별한 경우가 존재하며 git에 바이너리 파일이 있으면 완벽하게 받아 들일 수 있습니다.
존경하는

52

Git 2.15 (2017 년 4 분기)에서는 " git branch"을 (를) 배워서 -c/-C기존 분기를 복사하여 새 분기를 작성했습니다.

Ævar Arnfjörð Bjarmason ( )의 commit c8b2cec (2017 년 6 월 18 일)를 참조하십시오 . Sahil Dua ( )의 commit 52d59cc , commit 5463caa (2017 년 6 월 18 일)를 참조하십시오 . (가 합병 - Junio C 하마노 -3b48045 커밋 2017 03 시월)avar
sahildua2305
gitster

branch: --copy( -c) 옵션을 추가하여 --move( -m)

--copy분기 및 해당 참조 및 구성에 기능을 추가합니다 . 이는 참조 대신 이동 및 구성이 복사되는 것을 제외하고 --move( -m) 옵션 과 동일한 기본 기계를 사용합니다 .

이것은 예를 들어, 새로운 버전에 대한 주제 지점을 복사하는 예에 유용 work하기 위해 work-2제출 한 후에 work는 다른 지점으로가는 모든 추적 정보 및 기타 구성을 보존하고있는 동안, 목록에 항목을 --move주변에 다른 이미 제출 한 분기를 유지 참고.

참고 : 지점을 복사 할 때 현재 지점에 남아 있습니다.
Junio ​​C Hamano는 다음과 같이 설명합니다.

현재 분기 인 분기 B를 복사하여 새 분기 를 만들면 새 분기 를 가리 키도록 A업데이트 HEAD됩니다.
"때문에 아마 이런 식으로 만들어졌다 git branch -c A B"에서 구현을 피기 백 " git branch -m A B"

이것은 일반적인 기대와 일치하지 않습니다.
파란색 의자에 앉아 누군가가 와서 빨간색으로 다시 칠하는 경우 이제 빨간색 의자에 앉아 끝내는 것을 허용합니다. ).

그러나 누군가 내가 앉아있는 파란 의자를 모델링하여 새로운 빨간 의자를 만들면, 나는 파란 의자에서 부팅되어 새로운 빨간 의자에 앉을 것으로 기대하지 않습니다.

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