git

git 사용법

지야소이 2024. 4. 17. 09:23

 

오늘은 git에 대하여 알아보도록 하겠습니다. 

 

😸 git 구성 및 설명

  • workspace : 작업 공간으로 실제 프로젝트를 진행하는 디렉토리
  • staging : 작업공간에서 저장소로 정보를 저장하기 전 준비 영역으로 파일을 기록, 스테이징한다고 표현  (.git/index 파일로 관리)
  • Local repository : 개인 PC에 파일이 저장되는 개인 저장소
  • Remote Repository : 원격 저장소 전용 서버에서 관리되며, 여러 사람들과 같이 공유가 가능한 저장소

  • git 저장소 내용을 PC (로컬 저장소)로 업데이트 가능

→ 원격 저장소의 최신 내용 반영을 PC에 내려받기 ( pull, fetch&merge)

  • git pull : 갱신 및 병합 명령어로 원격 저장소의 변경 내용이 현재 디렉토리에 가져와지고 병합됨

👉 branch

  • 독립적으로 어떤 작업을 진행하기 위한 개념
  • 각각의 브랜치는 다른 브랜치의 영향을 받지 않아서 여러 작업을 동시에 진행 가능

👉 git commit

  • 준비 영역에서 파일을 로컬로 저장하는 명령어
-m "커밋 메시지"
git commit -a  # 자동으로 add를 진행 후 커밋
git commit -am "커밋 메시지"  
git commit -v  # 커밋 메시지에 diff 내용을 포

 

👉 git push

  • 원격 저장소에 저장하기 위한 명령어 ( push전에 코드는 commit이 되어 있어야 함.)
git push origin master   # master 브랜치에 push
git push <원격저장소명> <브랜치명>
git push -u <원격저장소명>
git push -u origin master # 다음의 git push 명령만으로 commit의 내 코드를 자동으로 브랜치(master)로 보내준다

 

👉 git branch

  • 브랜치를 생성, 이동, 수정, 삭제하는 명령어
git branch             # 브랜치목록 보기
git branch [브랜치명]    # [브랜치명]의 브랜치 생성

git checkout [브랜치명]  # [브랜치명]의 브랜치로 이동
git checkout [Commit ID] # 특정 커밋으로 워킹 디렉토리 변경
git checkout -b [브랜치명]   # [브랜치명]으로 브랜치 생성 후 이동

git branch -m [브랜치명] [바꿀이름] #브랜치명 수정
git branch -d [브랜치명]  # 브랜치 삭제
git push --set-upstream <원격저장소명> <브랜치명> #처음 원격 저장소에 올리는 명령어

 

👉 git log

  • 로컬 저장소의 커밋 이력을 조회하는 명령어

# -p는 각 커밋의 diff결과를 보여줌. -2는 최근 두 개의 결과만 보여주는 옵션
git log -p-2 
# 히스토리의 통계를 보여주는 옵션. 각 커밋의 통계 정보 조회 가능
git log --stat
# 수정한 파일, 추가된 라인, 삭제된 라인만 보여줌
git log --shortstat

 

👉 git의 기초

# 현재 git 연결된 저장소 정보 확인
git remote -v

# git 상태 확인
git status

# 파일 수정 후 수정된 사항 확인
git diff
git diff --color-words / git diff --word-diff   # 자세한 사항 확인

# 커밋 해쉬 확인
git log

# 저장소 복제, 다운로드
git clone /로컬/저장소/경로   # 로컬 저장소 복제
git clone [https:..URL]    # 기존 소스 코드 다운로드/복제
git clone 사용자명@호스트:/원격/저장소/경로  # 원격 저장소 복제

 

  • git 저장소 접근 계정 정보 설정 (—global을 넣으면 전체에 해당)
git config --global user.email "이메일주소"
git config --global user.name "아이디"

# 저장소 이메일 저장 
> 홈디렉토리의 .git config 설정에서 변경 가능

 

👉 git의 에러

1. Permission denied (publickey) 에러

→ssh 키 문제로 홈디렉토리(home/ubuntu/.ssh)의 ssh 확인해야 함

ll로 숨겨진 디렉토리 확인 및 ssh의 key가 추가되어있는지 확인

*ssh : 보안 원격 접속

 

2. git commit한 메시지 수정

  • 마지막 commit 메시지 수정 : —ammend 옵션을 통해 수정 가능
# 커밋했을 경우
git commit -m "마지막 커밋"

# 마지막 커밋 메시지 수정
git commit --amend -m "마지막 커밋 메시지 수정"

→ 혹은 git commit —amend로 vi 터미널에 들어가 수정 후 wd 저장

 

  • 이전에 commit 메시지 수정 : rebase 명령어 이용

(branch의 base를 설정하여 master 브랜치와 merge commit 생성을 방지)

git rebase -i HEAD~3

→ 이 때 출력되는 내용은 pick | 커밋 번호 | 커밋 메시지

예시)

pick 611b759 첫번째 커밋
pick edd845c 두번째 커밋 -> reword edd845c 커밋 수정
pick 6a9fnd4 세번째 커밋

→ 수정하고 싶은 내역의 pick을 reword로 변경 후 수정 후 wq로 저장

 

3. git push 후 수정

git push --force 브랜치 이름

→ 원격을 다시 덮어쓰는 방법이나 협업 중 혼란을 야기하므로 권장하진 않음