[TIL] 2023.12.04

Gahyeon Lee·2023년 12월 4일

TIL

목록 보기
16/47
post-thumbnail

[ Git & Github 기초 ]

💻 필수 리눅스 명령어

  • pwd(print working directory) : 현재 내가 작업하고 있는 디렉토리(폴더)를 보여줌

    • 참고 : ~는 root라는 경로이며, 현재 보고 있는 폴더보다 더 상위의 폴더를 말함
  • ls(list) : 내 폴더 안에 있는 폴더 & 파일 내역을 보여줌(하위 폴더 리스트)

  • li -a(list all) : 숨겨진 파일까지(보통 .으로 시작함) 모두 보기

  • cd 폴더명(change directory) : ls 명령어에서 확인된 폴더로 이동하기(디렉토리 이동)

  • cd .. : 한 단계 위의 폴더로 이동하기(상위 폴더로 이동)

  • cd 폴더명/폴더명 : 한 번에 더 깊게 들어갈 수 있음

  • cd : root로 이동

  • cd ../ : ❓

  • mkdir 폴더명(make directory) : 현재 경로에서 폴더를 생성하기

  • touch 파일명 : 현재 경로에서 파일을 생성하기

    • 정확히는 파일의 생성과 파일의 날짜, 시간을 변경하는 명령어인데 파일이 없으면 새로 생성해 주는 것

💻 Git & Github의 개념

  • Git이란?

    • (하나의 폴더 내에서) 코드의 변경점을 기록
    • 에러 발생 시 과거의 코드 기록으로 쉽게 되돌아가기 가능
    • 버전 관리 도구(형상 관리 도구)
    • 소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 것(면접용)
  • Github이란?
    온라인 백업공유가 가능한 온라인 코드 저장소 -> 협업 가능!


💻 Git 필수 명령어

  • git init : 코드 관리를 시작하는 명령어
    initialize(초기화하다, 초기 세팅하다)의 준말.
    프로젝트 시작 전 딱 한 번만 입력하면 됨.
    정확한 프로젝트 폴더(경로)에서 입력해야 함.

    • 실습 : 코드 작성 할 프로젝트 파일 만들기(GIT_TEST) ->VSC 열고 만든 파일 open -> 파일을 하나 만들고(1.html), 간단한 텍스트 입력(⭐️ 저장 필수 : command + S. 창에 x표시면 저장된 것, o표시면 저장 안 된 것) -> 터미널 열기(⭐️ pwd로 경로 확인 필수) -> git init 명령어 입력 -> "Initialized empty Git repository in~~~" 라고 나오면 성공 -> .git이라는 숨겨진 폴더가 생성 됨(ls -a 명령어로 확인)
      ⭐️ .git 폴더 : 코드 변경점을 계속 추적 & 기록하는 폴더(정확한 프로젝트 경로에 있어야 함)
  • git add + 파일명 : 저장할 파일을 지정

  • git add . : 프로젝트 모든 변경 사항을 한번에 지정
    ⭐️.(점)은 현재 나의 경로의 모든 변경된 사항을 말함

  • git commit -m "메세지 작성" : 코드를 실제로 저장(메세지는 최대한 알아볼 수 있게 자세하게 적는 게 좋다.)

    • 만약 Please tell me who you are라는 에러 발생하면 아래 명령어로 계정 설정 하기.(깃헙 계정과 맞추는 것이 좋음)
      git config --global user.email "유저 이메일"
      git config --global user.name "유저 네임"
    • 실습 : 파일 하나 더 만들고(2.html) 코드 작성 -> git add 2.html -> git commit -m "메세지 작성" 하면 1.html은 저장 안 되고, 2.html만 저장됨

    ❓ add와 commit의 차이를 확실히 알기 위해서 구글에 Working directory, Staging area, Repogitory 검색해 보기

  • git status : 저장 여부를 확인하는 명령어. 어떤 파일이 변경됐는지, 어떠 파일이 add(지정)됐는지 등 변경 상태를 확인.

    • 코드의 변경은 있지만 저장을 하지 않은 파일은 붉은색으로 표시 됨(modified: 1.html)
    • 지정은 됐는데 저장은 안된 파일은 초록색으로 표시 됨(modified: 1.html)
    • 모두 저장이 됐다면 "nothing to commit, working tree clean"이라고 뜸
  • git log : 저장 내역을 확인

    • 커밋 메세지로 코드 변경점 추측 가능 -> 키보드 q로 빠져 나오기
  • git push (origin 브랜치명) : 추가로 수정된 코드 github에 반영

  • git clone <깃헙 주소> . : 코드를 복사해오기

  • git pull origin 브랜치명 : 다른 사람이 변경한 코드를 내 코드로 가져오기

  • git fetch origin : 팀원들의 개발 브랜치 가져오기


💻 Github으로 코드 백업하기

1. 온라인 저장소(Github repository)를 만들기

2. 내 코드를 github repository로 업로드하기 : 업로드할 프로젝트 폴더를 Visual Studio Code(VSC)로 열기 -> 아래 3개 명령어를 그대로 복사 -> Visual Studio Code의 터미널에 붙여넣고 엔터 -> github 레포지토리로 코드가 잘 올라갔는지 확인

git remote add origin <깃헙주소>
git branch -M main
git push -u origin main
  • 위 3개의 명령어 의미는?

    • git remote add origin <깃헙주소> : 원래는 git push를 할 때 git push <github 주소> <브랜치명> 이라고 입력해야 하는데, 이 주소가 너무 길어서 매번 입력하기 귀찮아서 더 간단하게 push하기 위해 <github 주소>를 origin이라고 “명명”하겠다!라는 명령어.

    • git branch -M main : 기본 브랜치 이름을 master에서 main으로 바꿔주는 명령어(사회운동의 영향)

    • git push -u origin main : github에 코드를 업로드할 때 사용하는 명령어. 원래 github에 코드를 업로드할 땐 git push origin <브랜치명>과 같이 입력하지만 -u옵션을 추가하면 git push명령어만 입력해도 알아서 <브랜치명>에 입력한 브랜치로 업로드해줌.

3. git push : 추가로 수정된 코드 github에 반영하기(업로드)
코드 수정 -> 코드 저장 명령어 실행(add와 commit 명령어) -> git push origin 브랜치명(지금은 main). 또는 위의 git push -u origin main을 했으니 origin 브랜치명 빼고 git push만 해도 됨


💻 Github 협업 기초와 충돌 해결법(conflict)

1. 협력자(collaborator) 등록하기 : github repository -> Settings -> Collaborators -> Add people -> 팀원들의 user name 혹은 e-mail로 추가 -> 초대 수락

2. 코드 복사해오기 : git clone <깃헙 주소> .
github repository에서 github 주소를 복사 -> 코드 작성할 폴더 만들기 -> Visual Studio Code에서 만든 폴더 열기 -> git clone <깃헙 주소> . 명령어 입력(⭐️ 폴더를 이미 만들었다면 . 붙이고, 안 만들었다면 . 안 붙이기. 폴더가 이미 있는데 . 안 붙이면 안에 새로운 폴더가 또 생겨서 경로가 달라져서 그 폴더로 이동해서 해야하니 꼭 ' .'을 붙이자) (clone은 처음 한 번만 하고, 그 이후엔 pull과 push만 함)-> 이제부터 팀원들도 코드 변경 가능!(팀원들도 똑같이 코드 수정 -> 코드 저장 명령어 add, commit -> git push origin 브랜치명 하면 됨(일단 여기선 브랜치명 main으로))

3. 다른 사람이 변경한 코드를 내 코드로 가져오기 : git pull origin 브랜치명

  • 다른 사람이 이미 git push 하고나서, 내가 git push 하려고 하면 발생하는 오류 : rejected 오류! -> 먼저 git pull origin 브랜치명부터 해주고 add, commit 당연히 하고! git push하기.

❗️ git pull 시 다음과 같은 경고문이 뜬다면?
git config pull.rebase false 명령어 입력(박스 첫 번째 줄 하면 됨) -> git pull origin main 명령어 입력

❗️ 터미널에 아무것도 입력이 안되는 vim 에디터가 뜬다면? (?)
키보드 esc -> : -> wq -> enter

4. 충돌 해결하기(conflict)

  • 충돌이 나는 이유 : 같은 파일의 같은 위치에 코드가 변경되었기 때문
    ex) 내가 1.html 파일의 4번째 줄 변경했는데 다른 팀원도 1.html 파일의 4번째 줄 변경해서 올려놓은 상태 -> git pull하면 충돌!

ex) git pull 명령어 입력 후 index.html 파일에서 충돌이 발생해서, 충돌 해결 후 다시 commit하라고 할 때

ex) Current Change : 내가 변경한 코드, Incoming Change : 다른 팀원이 변경한 코드. 둘이 충돌 나면 git pull 이후 아래와 같이 충돌된 상태를 보여줌

  • 해결법 : <<<<<<< HEAD 삭제 -> ======= 삭제 -> >>>>>>> 418··· 삭제 -> 원하는 코드로 수정 -> 충돌 해결 후 다시 저장(add & push)하고, git push 하기
profile
코린이 강아지 집사🐶

0개의 댓글