code

git에서 여러 숨김을 결합하는 방법

codestyles 2020. 12. 14. 08:12
반응형

git에서 여러 숨김을 결합하는 방법


이것은 frontend지난 2 주 동안 분기에 대한 파이프 라인입니다 .

| Stash@{3}이후의 모든 코드는 Stash@{1}(두 개의 작은 커밋 제외)
| 작은 커밋
| 작은 커밋
| 2 주 전에 대규모 커밋을 수행했지만 이제는Stash@{1}

내 작업 트리는 현재 깨끗합니다.
Stash@{1}2 주 전에 일반 개발 코드를 대량 커밋 한 내용입니다 (처음에 숨겨져 있어야 함). 이 커밋은 취소되고 숨김으로 이동되었습니다. (커밋 된 몇 가지 변경 사항을 뺀)
Stash@{3}이후 해당 트리에 대한 최신 작업입니다 Stash@{1}.

이 거대한 작업 풀에서 여러 커밋을 만들 수 있도록 작업 트리에서이 두 가지 보관함을 결합해야합니다.

나는 git stash apply stash@{1}다음 시도했다.

git stash apply stash@{3}
git stash show -p | git stash apply stash@{3}

하지만 두 경우 모두 '더러운 작업 트리'를 얻습니다. 이 작업을 어떻게 병합 할 수 있습니까? stash@{3}최신 버전 이기 때문에 stash@{1}충돌이있는 모든 곳 을 대체하기를 원합니다 .


작업 트리에서 수정 된 파일과 충돌이없는 경우에만 숨김을 적용 할 수 있으므로 먼저에 수정 된 파일이 없는지 확인하고 파일이있는 git status경우 커밋합니다. 다음을 수행하십시오.

git stash apply stash@{1}
git commit -a
# Enter your commit message
git stash apply stash@{3}

그런 다음 새 커밋을 만들거나 이전 커밋을 수정하여 결합 할 수 있습니다. 각 적용 후 병합 충돌을 해결해야 할 수 있습니다.

또한, 당신이 이제까지 사용하기로 결정하는 경우 git stash pop보다는 apply참고 stash@{3}가 될 stash@{2}첫 번째 전원이 터진 이후.


약간 관련이 있지만 거의 항상 작동합니다.

  1. 첫 번째 은닉처 팝

    $ git stash pop
    
  2. 첫 번째 숨김의 변경 사항을 일시적으로 커밋

    $ git add . && git commit -am 'WIP'
    
  3. 두 번째 은닉처 팝

    $ git stash pop
    
  4. 임시 커밋을 실행 취소하고 도입 된 변경 사항을 유지합니다.

    $ git reset --soft HEAD^
    

더 좋은 방법은 각각을 사용 git stash show -p stash@{whatever} > stash-{whatever}.diff하고 사용 git apply하는 것입니다.


비슷한 문제가 있었고 이렇게 해결했습니다.

git stash pop스테이시 중 하나를 적용하는 데 사용 합니다. 그런 다음이 숨김의 패치를 git diff -p > ../stash.diff. 그런 다음 작업 트리를 재설정 (또는 변경 사항을 다시 숨김)하고 다른 숨김을 git stash pop stash@{1}. 이 시점에서 패치를 적용하면 두 개의 다른 보관함을 '병합'할 수 있습니다.

해결해야 할 충돌이있을 수 있습니다. 모든 것이 잘되면 숨겨진 변경 사항을 삭제할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/9143865/how-to-combine-multiple-stashes-in-git

반응형