새 브랜치에 변경 사항을 커밋하는 방법


151

방금 지점을 변경했습니다. 다른 지점에 변경 사항을 커밋하려면 어떻게해야합니까?

사용하려고합니다 :

git checkout "the commmit to the changed branch" -b "the other branch"

그러나 이것이 옳은 일이라고 생각하지 않습니다.이 경우 "다른 지점"에 대한 변경 사항을 커밋하는 대신 새 지점을 만들고 있기 때문입니다.

대신 다음 명령을 사용해야합니까?

git merge "the other branch"

단 하나 또는 몇 개의 커밋?
Carl Norum

답변:


269

git checkout -b your-new-branch

git add <files>

git commit -m <message>

먼저 새 지점을 확인하십시오. 그런 다음 준비 할 커밋하려는 모든 파일을 추가하십시오. 마지막으로 방금 추가 한 모든 파일을 커밋하십시오. git push origin your-new-branch나중에 변경 사항이 리모컨에 나타나도록 나중에 할 수도 있습니다 .


1
git checkout v3.0 (변경하기 전 지점) new-branch에서 새 브랜치를 얻었으므로 여전히 "git add <files>"를 사용해야합니까?
user1988385

git status현재 준비된 것과 그렇지 않은 것을 볼 수 있습니다 .
John Brodie

5
왜 모두 git addgit commit -a?
Carl Norum

11
그것은 아니다 git checkout -b your-new-branch대신 git checkout your-new-branch?
Schrodinger's'Cat 1

1
파일을 이미 추적했는데 새 분기로 전환하여 해당 파일을 새로 만든 분기에 추가하려면 어떻게해야합니까?
질문

58

변경 사항을 커밋하지 않은 경우

변경 사항이 다른 지점과 호환되는 경우

OP가 새 브랜치를 커밋하고 변경 사항이 덮어 쓰기를 트리거하지 않고 대상 브랜치와 호환되는 경우에도 적용되기 때문에 문제가 발생합니다.

John Brodie의 수락 된 답변과 마찬가지로 새 지점을 체크 아웃하고 작업을 커밋 할 수 있습니다.

git checkout -b branch_name
git add <files>
git commit -m "message"

변경 사항이 다른 지점과 호환되지 않는 경우

오류가 발생하면 :

error: Your local changes to the following files would be overwritten by checkout:
...
Please commit your changes or stash them before you switch branches

그런 다음 작업을 숨기고 새 분기를 만든 다음 숨김 변경 사항을 표시하고 충돌을 해결할 수 있습니다.

git stash
git checkout -b branch_name
git stash pop

마치 새 브랜치를 생성 한 후에 변경 한 것처럼됩니다. 그런 다음 평소처럼 커밋 할 수 있습니다.

git add <files>
git commit -m "message"

변경 사항을 커밋 한 경우

커밋을 원래 브랜치에 유지하려면

이 경우 올바른 도구 인 체리 따기와 함께 Carl Norum의 답변을 참조하십시오.

git checkout <target name>
git cherry-pick <original branch>

커밋을 원래 분기에 유지하지 않으려는 경우

이 잠재적 중복 에 대한 joeytwiddle의 답변을 참조하십시오 . 위의 단계를 적절히 수행 한 다음 원래 분기를 롤백하십시오.

git branch -f <original branch> <earlier commit id>

GitHub와 같은 공유 리모콘으로 변경 사항을 푸시 한 경우 수행중인 작업을 모르면이 롤백을 시도해서는 안됩니다.


3
모든 사람들 이이 코드를 시도해보십시오. 답변을 찾는 대부분의 사람들은 이미 기존 코드에 약간의 변화가 있습니다.
Sushin Pv

2
왜 숨김 및 숨김 팝을 추가 했습니까? 새로운 지점을 체크 아웃하면 변경 사항을 추가하고 커밋 할 수 있으며 숨길 필요가 없습니다.
Tristan

@Tristan 변경 사항이 호환되고 파일을 덮어 쓰지 않는 경우에 적합합니다. 그렇지 않으면 error: Your local changes to the following files would be overwritten by checkout: ... Please commit your changes or stash them before you switch branches.새 답변을 쓰시겠습니까, 아니면 내 답변을 수정 하시겠습니까? 그렇지 않은 경우 직접 편집 할 수 있습니다.
miguelmorin

좋아, 당신은 완전히 맞아. 나는 당신이 대답을 완성하고 받아 들여진 대답 외에 무엇을 가져 오는지를 보여야한다고 생각합니다.
Tristan

@Tristan 나는 그것을했다. OP는 새로운 지점에 대해 물었습니다.이 경우 허용 된 답변이 맞습니다. 다른 사람들이 내 대답을 유용하게 생각하면서 내 것을 유지합니다. 긴 답변이되었으며 의견을 보내 주시면 기쁩니다.
miguelmorin

24

내가 올바르게 이해한다면, 당신은 커밋을 changed_branch하고 그 커밋을 복사하고 싶 other_branch습니까? 쉬운:

git checkout other_branch
git cherry-pick changed_branch

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