질문 : 커밋하지 않고 git stash 충돌을 해결하는 방법은 무엇입니까?
이 질문에서 질문 했듯이 커밋에 모든 수정 사항을 추가하지 않고 git stash pop
을 해결하는 방법도 알고 싶습니다 (충돌없는 "git stash pop"처럼).
내 현재 접근 방식은 이렇게하기 때문에 매우 멋지지 않습니다.
git stash pop # -> CONFLICT
git stash drop
# [resolve conflict]
# [add conflict files]
git reset HEAD # <all files that are in commit-mode>
재생산 방법 :
mkdir foo; cd foo; git init
echo "1" > one
echo "2" > two
git add -A; git commit -m "first"
echo "1.1" > one
echo "2.1" > two
git stash
echo "2.2" > two
git commit -a -m "second"
echo "Only this file would stay in HEAD without the conflict" > third
git add third
git stash pop
git status
2016-06-27 : 예제에 'third'라는 새 파일을 추가하여 scy의 솔루션과 같은 해결 방법이 빈 HEAD에서만 작동하지만 HEAD에 다음과 같은 동일한 내용이 없다는 초기 문제를 수정하지 않음을 보여줍니다. git stash pop
을 위해.
답변
글쎄, 당신은 그들을 따를 수 있습니다 :). 그러나 커밋을 수행 한 다음 분기를 재설정하여 해당 커밋을 제거하고 다른 답변에서 제안 된 유사한 해결 방법 이이 문제를 해결하는 깨끗한 방법이라고 생각하지 않습니다.
다음 솔루션은 나에게 훨씬 더 깔끔한 것처럼 보이며 Git 자체 에서도 제안했습니다. 충돌이있는 저장소에서 git status
를 실행 해보십시오.
Unmerged paths:
(use "git reset HEAD <file>..." to unstage)
(use "git add <file>..." to mark resolution)
따라서 쓸모없는 커밋을하지 않고 Git이 제안한대로합시다.
명령 줄로 번역 :
$ git stash pop
# ...resolve conflict(s)
$ git reset
$ git stash drop
해결 된 것으로 충돌을 표시하는 방법에는 git add
및 git reset
두 가지가 있습니다. git reset
은 충돌을 해결 된 것으로 표시하고 색인에서 파일을 제거하는 반면 git add
는 충돌을 해결 된 것으로 표시하지만 파일을 색인에 유지합니다.
충돌이 해결 된 후 색인에 파일을 추가하는 것은 의도적입니다. 이렇게하면 충돌이 해결 된 후 이전 숨김 및 변경 사항과 변경 사항을 구별 할 수 있습니다. 마음에 들지 않으면 항상 git reset
을 사용하여 색인에서 모든 항목을 제거 할 수 있습니다.
충돌을 해결하기 위해 수동으로 수행하는 대신 KDiff3 , Meld 등과 같은 3 방향 병합 도구 를 사용하는 것이 좋습니다. 일반적으로 충돌의 전부 또는 대부분을 자동으로 해결합니다. 엄청난 시간 절약입니다!
출처 : https://stackoverflow.com/questions/7751555/how-to-resolve-git-stash-conflict-without-commit
'개발관련 > Git' 카테고리의 다른 글
Git push error '[remote rejected] master -> master (branch is currently checked out)' 오류 (0) | 2021.07.12 |
---|---|
'git'이 내부 또는 외부 명령으로 인식되지 않는 오류 (0) | 2021.07.08 |
Git 버전 관리를 사용하여 파일의 변경 내역보기 (0) | 2021.07.08 |
GitHub 프로젝트 페이지 용 사용자 지정 도메인 (0) | 2021.07.08 |
푸시되지 않은 Git 커밋보기 (0) | 2021.07.08 |