티스토리 뷰

 

로컬 저장소에서 파일이 사라지는 문제 원인

1. 커밋하지 않은 상황 :
로컬 저장소에서 변경한 파일을 커밋하지 않고 pull하면 변경된 파일이 사라질 수 있습니다..(내 상황)
따라서 커밋 후 git pull 실행 추천!

2. 충돌 발생 : 
원격 저장소와 로컬저장소에서 동일한 파일을 수정하는 경우에 충돌이 발생할 수 있습니다. 
이때 충돌을 해결하지 않고 git pull을 실행하면 충돌이 있는 파일이 사라질 수 있습니다.
따라서 충돌을 해결하고 다시 커밋해야합니다.

3. 강제로 덮어쓰기 : 
git pull 실행 시 '--force' , 강제 병합 등 원격 저장도의 변경 사항을 로컬 저장소에 강제로 적용하면, 
로컬 저장소의 변경 내용이 사라질 수 있습니다. 

 

 

 

 

1. 커밋하지 않은 상황 해결법

 

git reflog

 

커밋 로그들을 확인해봅니다. 

과거의 나를 믿으면서 가장 최신 파일이라도 불러오려고 노력을 ... 

 

 

이전에 commit 한 파일들이 나옵니다. 

여기서 HEAD@{0} 은 현재 작업 중인 브랜치의 최신 커밋입니다! 

 

 


 

push 하고 이전 commit 으로 되돌리기

 

1) git revert

 

  팀 프로젝트의 경우 revert를 쓰는 걸 추천합니다.
특정 커밋을 되돌리는 작업을 새로운 커밋으로 만들기 때문에, 변경 이력을 보존하고 협업 환경에서 안전성을 높여줍니다.   


git revert는 특정 커밋을 되돌리는 작업을 수행하고, 그 결과를 새로운 커밋으로 만들어 커밋 히스토리에 추가하는 방식.
 git reset --soft 또는 git reset --mixed와는 달리, git revert는 히스토리를 변경하지 않고 이전 커밋 상태로 되돌리는 대신 새로운 커밋을 생성.
이전 상태로 되돌릴 수 있으면서도 변경 이력을 유지.

 

예시 )

 

A - B - C - D (HEAD)

 

여기서 'C' 커밋으로 되돌리고 싶다면 git revert C

A - B - C - D - E (HEAD)

 

여기서 E 커밋은 C커밋을 되돌리는 작업을 수행한 새로운 커밋 입니다.

이렇게 함으로써 C 커밋의 변경 사항은 취소되었지만 커밋 히스토리에는 변경 내역을 유지 할 수 있습니다.

 

 

 

 

2) git reset --(hard, mixed, soft)

 

 

혼자만 사용하는 브랜치 일 때,
다른 사람들이 해당 브랜치를 받은 적이 없다고 확인된 경우에만 사용할 것!

git reset --hard
git reset 은 git 에서 브랜치의 히스토리를 특정 커밋으로 되돌린다. 단 주의할 점은 
해당 커밋 지점인 HEAD를 지정된 커밋으로 이동하고, 그 이후 모든 항목을 폐기한다.

 

예시 )

 

A - B - C - D(HEAD)

 

A라는 시점으로 되돌리고 싶어 git hard를 사용하면

 

A(HEAD) - B - C - D

 

이렇게 되는데 B,C,D 내역을 모두 삭제한다. 

 

 

 

git reset --mixed


HEAD를 지정된 커밋으로 이동시키고 인덱스를 해당 커밋의 상태로 되돌린다,
그러나 작업 디렉토리는 변경되지 않는다. 
HEAD를 이동시키는 측면에서는 git reset --hard와 유사하지만, 작업 디렉토리는 변경되지 않으므로 작업 중인 변경 사항은 유지됩니다.

 

 

예시 )

 

A - B - C - D (HEAD)

 

여기서  git reset --mixed C를 실행, 그러나 hard와는 다르게 커밋 D는 로컬 브랜치의 히스토리에서 삭제되지 않는다. 

단지 HEAD를 이동하여 C 커밋으로 위치시킨것
작업 디렉토리의 변경 사항은 유지된다.

A - B - C (HEAD)
            |
            D (작업 디렉토리에 변경 사항 유지)

 

 

 

git reset --soft
HEAD를 지정된 커밋으로 이동시키지만,  인덱스와 작업 디렉토리는 변경하지 않습니다. 
이는 HEAD를 이동하여 이전 커밋으로 되돌리지만, 변경 사항은 그대로 유지됩니다. 
이러한 변경 사항은 스테이징 영역에 그대로 남아 있게 됩니다.

 

 

예시 )

 

A - B - C (HEAD)
            |
           D (변경 사항은 스테이징 영역에 유지)

 

D의 변경 사항은 스테이징 영역에 그대로 남아 있기 때문에 다시 커밋할 수 있다. 

 

 

 


 

 

push 하고 이전 commit 으로 되돌리기

커밋 오류 발생 

 

 

저의 경우는 커밋을 안했기에 다시 만들고 

commit을 시도했습니다. 

 

 

 

이렇게 커밋 오류가 발생하는 경우가 있는데요. 

 

' Untracked files '  은 깃이 추적하지 않은 파일들을 나타냅니다. 이 파일들을 아직 깃의 추적상태가 아니므로

변경된 파일들을 스테이징 영역에 추가하고 git add 커밋을 합니다. 

 

 

 

 

git add .
# 모든 변경된 파일을 스테이징 영역에 추가

 

개별 파일을 지정해서 추가하는 것 보다 

편리하게 사용할 수 있습니다. 

모든 변경 파일을 스테이징 영역에 추가하고 싶다면 git add . 를 사용합니다

 

git add <file1> <file2> ...
# 변경된 파일들을 스테이징 영역에 추가

 

 

git-bush 에서 복붙 쓰는 방법 

Ctrl  +  insert : 복사

Shift  +  insert  :  붙여넣기

 

다시 커밋을 시도하면

 

 

이렇게 성공합니다. 

 

이 상태에서 프로젝트 작업하던 파일을 git pull 합니다. 

 

 

 

git pull 하기전에 커밋이나 stash 로 임시저장 꼭 하세요!

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함