본문 바로가기

Pre_Course/Git&Github

Git&Github_06(내용 확인, 변경사항(Snapshot) 비교하기)

Git에서 특정 버전의 특정 파일 내용을 확인

- git show <버전>:<파일 경로>

 <버전> : 확인하려는 특정 버전을 나타내는 커밋 해시, 브랜치 이름, 태그 등을 사용

 <파일 경로> : 해당 파일의 상대 또는 절대 경로를 지정

 

git log를 입력하여 커밋의 해시값을 복사하여 git show <해시값>을 입력해도 된다.

git show <해시값>

방금 입력한 git show 해시값에 :텍스트파일명을 입력하면 그 텍스트 파일의 값이 나타난다.

git show <해시값>:<파일>

Git에서 변경된 내용을 비교

git diff : Git에서 변경된 내용을 비교하고 표시하는 명령어.

 - git diff : 현재 작업 트리와 스테이징 영역 사이의 변경 내용 확인

 - git diff --staged : 스테이징 영역과 최신 커밋 사이의 변경 내용 확인

 - git diff <commit-hash> : 현재의 작업 트리와 커밋 사이의 변경 내용을 확인

    - <commit-hash> : 커밋의 식별자 (해시)

 

실습

1. git 디렉토리의 first.txt 텍스트 파일에 텍스트를 추가한다. (수정)

2. bash에서 git status를 입력하여 first.txt 파일 변경된 것을 확인한다.

3. git add first.txt입력 후 git status로 staged되었는지 확인.

git diff

- git diff 입력시에는 별다른 결과값이 없지만 git diff --staged에서는 어떠한 내용이 변경되었는지 확인할 수 있다.

git diff --staged

4. staged된 것들을 다시 unstage를 시켜보겠다.(index 영역에서 제거) 

git restore --staged <파일명>

5. 코드 입력후 git status를 입력하면 다시 unstaged됬다는 것을 확인할 수 있다.

6. 그 다음에 여기서 git diff를 입력하면 아까랑 다르게 결과값이 잘 나오는 것을 확인할 수 있고, git diff --staged를 입력하면 나오지 않는것을 알 수 있다. (git diff와 git diff --staged는 조회하는 영역이 다르기 때문이다.)

 

이제 git diff <commit-hash>를 해보겠다.

1. first.txt를 다시 add 시키고 git status를 입력하여 staged된 것을 확인한다.

2. git commit -m "메모" 를 입력하여 커밋시킨다.

3. git log --graph를 입력하여 확인 

  - 여기서 (HEAD -> main)과 (origin/main)을 볼 수 있는데 이는 local과 remote 사이에 갭이 생겼다는 의미이다.

       또한 Github홈페이지에서 내역을 보면 local에서의 작업내용이 반영되지 않았다는 것을 확인할 수 있다.

4. git push origin을 입력한다.

git push origin

5. 다시 git log --graph를 입력하면 (HEAD -> main, origin/main)으로 바뀐것을 확인 할 수 있다.

      - Github 홈페이지에서도 제대로 반영이 된 것을 확인할 수 있다.

6. git diff <비교할 커밋의 해시주소> 입력

git diff <비교할 커밋의 해시주소>