[Git] Git과 Github 활용 하기

정재현·2024년 1월 30일

Git & Github

목록 보기
2/16
post-thumbnail

사전에 알아두면 좋은 명령어

Linux 명령어

  • ~ : Home Directory
  • .. : 한 단계 위의 폴더라는 뜻
  • pwd : current working directory 출력(현재 위치 출력)
  • ls : 현재 디렉토리 내 무슨 파일이 저장되어 있는지 확인
    • -l 옵션 : 상세정보까지 확인하는 옵션
    • -a 옵션 : 숨긴파일까지 확인하는 옵션
    • -la 옵션 : l옵션과 a옵션을 동시에 확인하는 옵션
  • cd : 다른 디렉토리로 이동
    • cd 폴더명 : Desktop 안에 있는 다른 폴더로 이동
      • 즉, 데스크탑의 폴더를 더블 클릭해서 들어간 것과 같은 효과
    • cd 폴더명/폴더명 : 한번에 더 깊이 이동
  • mkdir : 디렉토리 생성
  • rm : 디렉토리 제거
    • -r 옵션 : 해당 디렉토리 내에 존재하는 모든 파일 및 디렉토리를 포함해서 삭제한다는 옵션
      → 기본적으로 rm으로 디렉토리를 삭제하려면 빈 폴더여야 한다.
  • touch 파일명 : 현재 경로에서 파일을 생성하는 명령어
    • 정확히는 파일의 생성과 파일의 날짜, 시간을 변경하는 명령어 (해당 용도로는 많이 쓰이진 않음)

Vim Editor 기본 사용 방법

  • vim <생성할 파일명> : 파일(디렉토리가 아님) 생성
  • i : input 상태 전환
  • Esc : input에서 나오는 방법
  • :w : 문서를 write한다는 의미 = 저장
  • :q : 나가기라는 의미
  • :wq : 저장하고 나가기
  • :q! : 저장 없이 나가기
  • yy : 커서가 위치한 한 줄 복사
  • cat : 저장된 파일 내용 확인 가능
    참고한 사이트

Git 명령어

참고한 사이트

1. 계정 등록

git config --global user.name "이름"

Git Repository에 이름 설정

  • --global : 현재 우리가 사용하는 기기에 있는 모든 Git Repository는 이 설정을 사용한다는 옵션

git config --global user.email "이메일"

Git Repository에이메일 설정


2. Git Repository 연동

  • git remote add origin <remote reository 주소> : Remote Repository 연결 명령어
    • origin : Github의 Default Repository를 의미
    • Remote Repository : 컴퓨터나 서버를 통해 만들어진 Repository (ex. Github)
  • git remote -v : Remote Repository가 연결이 되어 있는지 확인
    • -v 옵션 : git remote의 경우 이름만 출력하는데, 주소까지 알고 싶을 때 사용
  • git branch -M main
    • 기본 branch = Master
    • 현재 branch명(master)을 main으로 바꾼다
      • 바꾸지 않아도 되지만 최근에는 바꾸는 추세
  • git push -u origin master : Local에서 Remote로 수정 내역 및 파일을 업로드
    • origin : 저장소명
    • master : branch명
    • -u 옵션 : Remote Repository의 master branch에 연결해서 다음부터는 더 간결히 사용 가능하도록 설정
    • git push : -u 옵션을 작성한 이후부터 사용 가능한 명령어
  • git pull origin master : Remote에서 Local로 원하는 branch를 다운받는 명령어
  • git merge <branch명> : master branch와 branch의 각각의 수정 내용을 병합하는 명령어
    • 이때 병합은 무조건 master branch에서만 진행 가능

3. 프로젝트 개발

git init

코드 관리를 시작하는 명령어(로컬 Repository 생성)

  • Git을 사용할 수 있도록 .git 디렉토리 생성
  • 프로젝트 시작 전 딱 한번만 입력
  • .git 이라는 폴더(숨겨진 폴더)가 생기는데 이 폴더에서 코드 변경점을 계속 추적 및 기록한다
  • 최초 1회만 .git 디렉토리가 생성되고 이후에는 .git디렉토리를 생성한 위치를 출력
  • initialized empty Git repository in ~~~ 이라고 나오면 성공

git clone

Git Repository에 업로드된 파일을 복사해오는 명령어
1. 저장할 폴더 생성
2. VS code 같은 프로그램에서 생성한 폴더 열기
3. 터미널에서 git clone <github 주소> . 입력
→ 이때 git init을 작성할 필요가 없다.

git add

코드를 commit상태로 만드는 명령어(staging 수행)

  • git add . : 모든 파일을 변경
  • git add 파일명 : 파일 하나를 변경
  • git add 파일명1 파일명2 파일명3 : 여러 파일을 변경
  • git rm --cached 파일명 : git add 취소

git commit

코드를 메시지와 함께 저장하는 명령어

  • git commit -m "메세지 작성"
    • 메세지 부분은 내가 무슨 코드를 짰는지 자세히 적기
  • git commit -am "메세지 작성 : add와 commit을 동시에 수행하는 명령어
  • git commit 후 저장이 안되는 경우
    • 오류 : Please tell me who you are..
    • 원인 : 계정 설정을 하지 않았기 때문
    • 해결방법
      • git config --global user.name "유저이름"
      • git config --global user.email "유저이메일"

git pull

다른 사람이 변경한 코드를 내 코드에도 가져오는 명령어

  • git pull origin branch명 : Github에 해당 branch를 업로드
  • git pull : git push -u origin main를 입력한 후 다음부터 입력하는 방법

git push

내가 변경한 코드를 Github에 올리는 명령어


4. Branch 관련

git branch

  • git branch : 현재 git repository에 생성된 branch들이 뭐가 있는지 확인하는 명령어
    • 이때 branch 앞에 존재하는 *표시는 current working directory를 의미
  • git branch <생성할 branch 명> : 새로운 branch를 생성하는 방법
    • 이때 master branch의 commit을 복사해옴
  • git branch -d <삭제할 branch 명> : branch를 삭제하는 명령어
    • 해당 명령어는 master branch에서만 사용 가능
      git checkout master 먼저 입력해서 master branch로 이동 필수
    • 실제로는 완전 삭제가 아니기 때문에 다시 동일명의 branch를 생성하면 이전 작업 내용이 존재한다.

git checkout

branch 변경

  • git checkout <이동하고 싶은 branch명> : 다른 branch로 이동
  • git checkout -b <이동하고 싶은 branch명> : 새로운 branch를 생성 후 이동

git switch

branch 변경

  • git switch <이동하고 싶은 branch명> : : 다른 branch로 이동
  • git switch -c <이동하고 싶은 branch명> : 새로운 branch를 생성 후 이동

5. 과거 이력 관리

git status

현재 git 상태 출력 명령어

  • git status : 저장할 파일이 있는지 확인
  • 현재 branch와 stage 정보 확인
  • 어떤 파일이 변경됐는지, 어떤 파일이 add(지정)됐는지 등 변경 상태를 확인하는 명령어
  • 코드의 변경은 있지만 저장을 하지 않은 파일은 붉은색으로 표시됨

git log

git status보다 더 자세한 과거 log 내역 출력

  • git log : 저장 내역 확인
    • commit 메세지로 코드 변경점 추측가능
  • git log --stat : 각 commit이 어떤 파일과 연관되어 있는지 확인
  • git log --oneline : git log 내용을 한줄에 간략히하여 출력
  • git log --oneline --branchs : 모든 branch의 commit을 확인 가능한 옵션 명령어
    • git log에서 master branch의 행방을 찾기 위해 사용
  • git log --oneline -- branches --graph : branch와 commit의 관계를 시각적으로 표현
    • | or / 의 의미 : 아래쪽 Commit이 위쪽 commit보다 먼저 생성되었음을 의미
  • git log <branch1>..<branch2> : 두 branch 사이의 차이점을 알려주는 명령어
    -branch1에는 없고 branch2에만 있는 commit을 보여준다.

6. 이전 버전으로 돌아가기

git reset

현재 버전을 지우고 이전 버전으로 돌아가기

  • git reset HEAD 파일명 : Stage 상태에 있는 modified 상태로 되돌림
    • 혹은 git restore --staged 파일명
    • 즉, Staged → modifed : Unstaging 기능
  • git reset HEAD^ : 가장 최신 Commit을 뒤로하고 Unstaged하게 하는 명령어
    • 즉, Commit도 취소하고 Unstaging 진행
  • git reset --hard <돌아가고자 하는 commit의 hash값> : 돌아가고자 하는 Commit 이후의 Commit 내역들을 삭제하고, 특정 시점의 Commit으로 돌아는 기능

git revert

현재 버전을 그대로 두고 이전 버전으로 돌아가는 commit을 새로 생성(특정 버전에서의 작업만 수정이 필요할 때)

  • git revert <돌아가고자 하는 commit의 hash값> : Commit 내역들은 그대로 보존하고, 되돌리고 싶은 Commit의 코드만 복원
    • 이때 commit hash값은 git log를 통해 확인 가능

7. 많이 사용하는 기타 Git 명령어

git checkout

  • git checkout --파일명 : 파일의 수정 취소(되돌리기)
    • 혹은 git restore --파일명
    • Modified → Unmodified

git diff

  • git diff : 최신 branch와 수정된 내용의 차이(코드) 출력
  • Modified 상태의 branch와 최신 branch와의 차이 확인

8. 파일 숨기기

Modified File 숨기기

  • git stash : 방금 수정된 작업을 감추고 동시에 어딘가에 보관해 놓음
    • git stash list : 보관된 파일을 확인하는 명령어
    • git stash pop : 가장 최신에 stash한 파일 되돌리기(stack 형식)

9. 병합(Merge) 하기

git merge

Branch 합치기

  • git merge 합칠브랜치이름 : 현재 브랜치에서 합칠브랜치를 merge
    • 먼저 모든 Branch를 합칠 Branch로 이동한 후 병합해야 한다.
  • git rebase 브랜치명 : Rebase로 병합(merge와 반대로 합쳐질 브랜치로 이동)
    (추후에 merge 종류 정리 예정)

충돌(Conflict) 오류 해결하기

  • ! [rejected] ... 오류 : 다른 사람이 이미 git push를 하고 내가 git push를 하려고 하면 발생하는 에러
    • 해결방법
      • git pull
      • git push
  • fatal: ... 오류
    • 해결방법
      • git config pull.rebase false
      • git pull
  • CONFLICT (content) : ... 오류 : git pull 명령어로 가져왔는데 코드가 이상해지는 경우 발생
    • 발생 이유 : 같은 파일의 같은 위치에 코드가 합쳐지면서 발생
    • 해결 방법 : 코드 부분만 남기고 다 지워서 해결
      • 만약 다른 사람 코드가 싫다면 다른 사람이 작성한 코드도 지우면 됨
ex.
	A 개발자 - index.html의 2번째 줄 코드 변경
	B 개발자 - index.html의 2번째 줄 코드 변경
ex. 코드 내용
	<<<<<<< HEAD
	다른 사람이 작성한 코드
	=======
	내가 작성한 코드
	>>>>>>> 1324156413516fda11dsf312
'''

정리하기

git config --global user.name "이름" : git에 이름 등록
git config --global user.email "이메일" : git에 이메일 등록

git init : git repository 생성(최초 1회만 작성)
git status : 현재 git 상태 출력(현재 branch와 stage 정보)
git add <파일명> : staging하는 명령어
git commit -m "message" : commit하는 명령어
git commit -am "message" : staging + commit 하는 명령어

git diff : 최신버전과 수정된 내용(Modified)의 차이(코드)를 출력

git log : git status보다 더 자세한 Commit 정보 출력
	// commit hash, author, date, commit message 확인 가능
git log --stat : 각 commit이 어떤 파일과 연관되어 있는지 확인
git log --oneline : git log의 내용을 한줄로 간략히 출력
git log --oneline --branches : 모든 branch의 commit을 확인
git log --oneline --branches --graph : 모든 branch와 commit의 관계를 시각적으로 출력
git log branch1명..branch2명 : 두 branch사이의 차이점 출력(branch1에서 branch2에 추가된 코드)

git checkout --파일명 : 파일의 수정을 취소(Modified → Unmodified)
git checkout branch명 : 다른 branch로 이동

git reset HEAD 파일명 : stage → modified
git reset HEAD^ : 이전 commit의 modified 상태로 이동
git reset --hard <commit hash> : 돌아가고자 하는 commit 이후의 commit 내역들을 삭제하고, 특정 시점의 commit으로 돌아는 기능

git revert <commit hash> : commit 내역들은 그대로 보존하고, 되돌리고 싶은 commit의 코드만 복원

git branch : 현재 git repository에 생성된 branch의 정보 출력
git branch <새로 생성할 branch명> : 새로운 branch 생성
git branch -d <삭제할 branch명> : branch 삭제

git stash : 방금 수정한 파일(modified)을 감추고 어딘가에 보관
git stash list : 보관된 수정된 파일들의 정보 출력
git stash pop : 가장 최근에 stash한 파일 되돌리기(stack형식)

그외 알아두면 좋은 정보

  • SSH remote Access : private와 public key를 이요해서 현재 사용중인 기기가 무엇인지 인증하는 방법
    • SSH : Secure Shell(강화된 보안 방식)
  • SSH-keygen : private key와 public key를 생성
    • Home directory에서 실행
    • id_rsa : private key
    • id_rsa.pub : public key
  • `git remote add origin <SSH 주소>
  • git remote -v : 확인하는 명령어

profile
공부 기록 보관소

0개의 댓글