[강의] 빠르게 git #1

jyleever·2025년 9월 21일

git

목록 보기
4/6

이 포스팅은 빠르게 git - 핵심만 골라 배우는 Git/Github 과 다른 블로그를 참고하여 작성하였습니다.

working directory, repository, stage

출처 블로그

working directory

  • 사용자의 작업 공간
  • 로컬 저장소에 접근할 수 있으며 실제 파일을 수정하거나 생성하는 공간
  • 추적(tracked/untracked) 상태로 구분

tracked/untracked 상태

  • untracked 상태
    저장소 내에 새로 만들어진 모든 파일. git 이 코드 변경 이력을 추적하지 않음
  • tracked 상태
    git에 의해 파일의 변경 이력이 추적됨
    git add <file_name> : 이름이 file_name인 파일을 tracked 상태로 등록 (stage 영역에 등록)
    tracked 상태는 세부적으로 unmodified, modified, staged 상태로 구분됨

출처

버전이 만들어지는 과정

버전이 되기까지 거쳐가는 세 걔의 공간

  • working directory: 작업 공간, 모든 내용, 내가 코드를 작성하는 공간
  • staging area: 버전이 될 후보들이 올라오는 공간, working directory에서 선별
  • repository: version들이 저장되는 공간.. 지금까지 저장 내역이 저장되는 공간
  1. working directory -> staging area
    git add
  2. staging area -> repository
    git commit

버전을 만들어보자

git status
git 상태 확인
git add 파일 이름
staging에 업로드
git rm --cached 파일
stating에 있는 파일 다시 워킹 디렉토리로 복귀
git add .
모든 변경 사항을 staging area 로 이동
git commit -m "commit message"
커밋 메시지와 함께 staging에 있는 파일 repository로 commit
git commit
길고 자세한 커밋 메시지를 작성할 수 있음
git commit -am "commit message"
한 번이라도 commit한 대상에 대해서만 add 와 commit 동시에 가능

원격 저장소에 푸시하기

git remote add origin <url>
url (리모트 레포지토리 주소)를 origin 이라는 이름으로 등록
git push -u origin main
origin 리모트 브랜치에 로컬 main 브랜치 내용을 푸시

git push -u origin main
1. origin 이라는 리모트 레포지토리에 main 브랜치를 생성
로컬 레포지토리의 main 브랜치 내용을 리모트 레포지토리의 main 브랜치에 보내라는 뜻
2. 여기서 -u는 --set-upstream의 줄임말로, 이 옵션을 쓰면 로컬 레포지토리의 main 브랜치가 리모트 레포지토리의 main 브랜치를 항상 추적(tracking)하도록 설정 됨
3. 이런 관계를 tracking connection이라고 하며, 리모트 레포지토리의 main 브랜치를 로컬 레포지토리의 main브랜치의 업스트림 (upstream) 브랜치라고 함.
4. 이렇게 tracking connection이 설정되면 앞으로 로컬 레포지토리의 main 브랜치에서 git push 만 해도 자동으로 리모트 레포지토리에 main 브랜치에 내용을 전송하고, git pull만 해도 자동으로 리모트 브랜치의 main 브랜치의 내용을 가져온다.

내용 되돌리기

reset 명령어

수정한 것까지 통째로 reset option : --hard HEAD^

  • working directory, staging area 모두 리셋

add한 것까지 reset option (기본 옵션) : --mixed HEAD^

  • staging area 리셋

commit 한 것까지 reset option : --soft HEAD^

  • commit 리셋

HEAD^

  • HEAD : 가장 최근 버전
  • ^ : 하나 되돌리자
    가장 최근 커밋으로부터 하나 전으로 되롤려라 : git reset --hard HEAD^
    가장 최근 커밋으로부터 두개 버전 전으로 되돌려라 : git reset --hard HEAD^^

git diff
git revert

  • git reset과 비슷

git log
옵션과 함께 사용하면 유용함~!

clean 명령어

출처 블로그
※ untracked file은 reset 명령어로도 정리되지 않고 유지된다. untracked file도 제거하려면 clean 명령어를 사용해야 한다.

git clean -n (dry run)
dry run 옵션은 clean 명령어를 실행했을 때 삭제가 될 파일의 리스트를 보여준다.
git clean -nd
삭제할 파일과 디렉터리를 모두 보여준다.
git clean -f
오직 파일만 삭제된다.
git clean fd
untracked 디렉터리도 함께 삭제된다.

브랜치

git branch <브랜치 이름>
새 브랜치 생성하기
git branch
현재 브랜치 목록 보기
git checkout <브랜치 이름>
브랜치 변경

병합
병합의 대상이 되는 브랜치에 checkout
git checkout main
git merge my_branch
즉, my_branch의 내용을 main 브랜치에 반영

git diff, git revert

git diff

  • git diff 비교대상commit 기준commit
    비교대상 commit에 비해 기준 commit이 어떻게 달라졌는지 확인

  • git diff <비교대상 branch이름> origin/<branch 이름>
    원격 저장소와 로컬 저장소 간 비교

  • git diff HEAD HEAD^
    이전 commit과 전전 commit의 비교

  • git diff HEAD
    아직 commit하지 않은 수정된 내용과 이전 commit과 비교

  • git diff <비교대상 branch이름> <기준 branch 이름>
    브랜치 간의 비교

git revert

reset과 동일하게 commit을 되돌리는 방법

  • git revert <되돌리고 싶은 commit>

git reset vs git revert

commit을 과거시점으로 되돌려준다는 점에서 결과적으로 같은 결과를 내지만, 되돌리는 commit까지의 이력이 사라지느냐의 여부에 차이가 있다.

  • git reset : 되돌린 버전 이후의 버전은 모두 사라짐, commit log을 깔끔하게 유지해주며 commit을 되돌림. 과거 자체를 바꾸는 명령어.
  • git revert : 되돌린 버전 이후의 버전들은 모두 유지되고 revert되었다는 사실을 담은 commit만 새로 추가됨. 과거를 변경시켰다는 새로운 commit을 만드는 명령어 (단, -n 명령어를 쓰면 commit을 남기지 않을 수는 있음). revert보다는 안전한 명령어

https://blog.naver.com/codeitofficial/221946628621

0개의 댓글