Git/Github 사용법 간단 정리
- 깃/깃허브 구분
👉 Git : 버전 컨트롤 시스템(version control system).
👉 Github : 원격 저장소(remote repository).- 현재 깃허브에서 master라는 이름 대신 main 이름을 default로 해놓은 상태지만 사용자가 master로 수정하여 사용할 수 있음.
깃허브 시작하기
- 깃허브 계정을 만든다.
-
깃허브에서 repository를 생성한다.(public = 무료 / private = 유료)
-
커밋할 폴더에 들어가서 git init
-
shell에 깃 설치 = brew install git (Mac OS)
-
토큰이나 ssh로 인증
📍깃헙 토큰 발행 방법
➡️ github 접속 및 가입
➡️ settings
➡️ developer settings
➡️ personal access tokens
➡️ generate new tokens
✎ 토큰 설정 후 토큰 키를 복사한다음에 쉘에서 push할 때 비밀번호 작성하는 부분에 붙여넣어야 함
📍ssh key 설정 방법
shell에서
$ ssh-keygen //키 생성
$ cat ~/.ssh/id_rsa //개인키
$ cat ~/.ssh/id_rsa.pub //공개키
✎ 이후 깃허브 프로필-세팅에서 ssh 공개키 등록
📍깃허브 push용 이름 및 이메일 세팅
$ git config --global user.name "username"
$ git config --global user.email "[email protected]"
✎ --global 옵션은 default로 전체 깃에 적용. 특정 프로젝트에서 이름 다르게 하려면 --global 옵션 빼고 하면 됨.
깃허브 활용
📍 기본
$ git add (파일명) // 특정 파일 Index(Staging area)에 추가
$ git add . // 현재 및 하위 디렉토리 모든 파일 index 추가
$ git commit -m "(설명)" // local repository에 추가
$ git push origin master // remote repository에 추가
📍 커밋 수정(amend)
로컬 저장소의 가장 마지막 커밋을 수정
git commit --amend -m "(설명)"
git commit --amend --no-edit //--no-edit 옵션은 설명 수정하지 않을 때
상태 확인
📍 버전확인
$ git --version
📍 커밋 이력 보기
$ git log
📍 원격저장소 확인
$ git remote -v
$ git remote add (이름) (url) // 원격저장소 추가
📍 브랜치 목록 보기
$ git branch //local
$ git branch -a //remote까지 확인
📍 파일 상태보기
$ git status
index(stage) 영역에 없으면 🟥빨간색 = add 안된 상태
index(stage) 영역에 있으면 🟩초록색 = add 된 상태
branch
📍 새 브랜치 만들기
$ git branch (브랜치명) // 브랜치만 생성
$ git checkout (브랜치명) // 해당 브랜치로 이동
$ git checkout -b (브랜치명) // 현재 커밋에서 브랜치 생성하고 이동
$ git checkout (커밋아이디) -b (브랜치명) //해당 커밋으로 이동 후 브랜치 생성
📍 마스터 브랜치로 돌아가기
$ git checkout master
📍 브랜치 목록 보기
$ git branch //local
$ git branch -a //remote까지 확인
📍 브랜치 삭제
$ git branch -d (브랜치명) //로컬 저장소에서 브랜치 삭제
$ git push origin --delete (브랜치명) //원격저장소에서도 삭제
📍 main브랜치 이름 변경
git branch -m main master
git fetch origin
git branch -u origin/master master
git remote set-head origin -a
checkout vs reset
📍checkout
다른 커밋 보기로 커밋 이력은 그대로 있는 상태에서 현재 보는 시점을 변경.
$ git checkout (커밋아이디) // 커밋아이디는 git log로 확인
$ git checkout master // 최근 커밋 상태로 돌아오기
$ git checkout (브랜치명) // 해당 브랜치로 이동
📍reset
로컬저장소에서 이전 커밋으로 돌아가고 이후 커밋은 add는 안 한 상태(unstage)로 만들기.
워크 스페이스에 작업하던 내용은 그대로 있음.
$ git reset (커밋 아이디)
$ git reset HEAD^ //한 커밋 이전
$ git reset HEAD^^ //두 커밋 이전
$ git reset HEAD^^^ //세 커밋 이전
이전 커밋으로 돌아가면서 이후 커밋 삭제(하드 리셋)
$ git reset --hard (커밋 아이디)
$ git reset --hard HEAD^^
✎ 이후 원격 저장소에는 삭제가 반영되지 않은 상태이므로 강제 커밋
$ git push origin master --force
✎ checkout은 커밋은 그래로 두고 HEAD(시점)만 이동하고, reset은 삭제까지 한다는 차이가 있음.
✎ reset 대신 revert를 사용할 수 있는데, revert는 기준 커밋 이후로 삭제하는 것이 아니라 현재까지의 이력을 남겨두고 과거 커밋으로 재수정해 커밋한 효과임.
$ git revert (커밋아이디)
저장소 내 파일 삭제
📍 로컬 영역에서 제거
$ git rm (파일명)
📍 리모트 영역에서 제거
$ git rm (파일명) --cached
$ git rm -r (폴더) --cached
✎ --chached는 리모트로 이미 push까지 했을 경우 붙이는 옵션
✎ 이후 commit하고 push 다시 해주면 remote에 반영됨
📍 처음부터 특정 파일 커밋 안 하기
.gitignore파일을 생성해 git에 추가하고 싶지 않은 파일이나 폴더 리스트를 입력
✎ .gitignore 파일 목록 검색
$ git ls-files -o -i --exclude-standard
-o : untracked files
-m : modified files
-d : deleted files
-c : cached files
-i : ignored files
--exclude-standard : .gitignore
저장소에서 코드 가져오기
📍 origin에서 코드 가져오기
$ git pull origin master
📍 원격 저장소에서 코드 가져오기
$ git clone (url) (저장할 폴더 이름)
📍 원격에서 로컬로 코드 가져오기(병합 전 확인)
$ git fetch origin
📍 병합하기
master 브랜치로 이동 후 병합하고자 하는 브랜치를 병합
$ git checkout master
$ git merge (브랜치명)
Author And Source
이 문제에 관하여(Git/Github 사용법 간단 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@augus-xury/github-사용법-간단-정리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)