본문 바로가기
스파르타 내일배움캠프/TIL(Today I learned)

25.02.17 TIL - Git & Github

by pandastic 2025. 2. 17.
반응형

 

목차

     

    1. Git 설치하기

     

    2. 필수 리눅스 명령어

    1) pwd (print working directory)

       - 현재 내가 작업하는 폴더를 보여달라는 뜻.

       - ~ 는 home 경로이며, 바탕화면을 의미하는 Desktop 폴더의 상위 경로임.

     

    * Working directory : 현재 작업중인 directory

     

    2) ls(list)

        - 현재 폴더 안에 있는 폴더 & 파일 내역을 볼 수 있음.

     

    3) ls -a (list all)

        - 숨겨진 파일(보통 . 으로 시작함)도 모두 볼 수 있음.

     

    4) cd 폴더명(change directory)

        - ls 명령어에서 확인된 폴더로 이동 가능.

        - Desktop 안에 있는 다른 폴더로 이동 가능.(데스크탑의 폴더를 더블 클릭해서 들어간 것과 같은 효과)

        - .. → 한 단계 위의 폴더라는 뜻.

        - 폴더명/폴더명 으로 한 번에 더 깊이 들어갈 수 있음.

        - . 은 현재 디렉토리를 의미함.

     

    * 리눅스 명령어 입력 시 풀네임을 칠 필요 없이 어느 정도 입력 후에 tab을 치면 자동완성이 가능함.

    * 폴더가 하나 밖에 없을 경우에 아무것도 치지 않고  tab키를 누르면 알아서 자동완성됨.

    * 폴더명은 영문명으로 작성해야함.

    * 터미널에 clear 치면 터미널이 꺠끗하게 지워짐.

    * 프로젝트 경로를 미리 메모장에 복사해두면 다음날에 들어가기 편함.

    * cd / + Enter 와 cd + Enter 모두 최상위 폴더로 바로 이동하게 됨.

     

    5) mkdir 폴더명(make directory)

        - 현재 경로에서 폴더를 생성하는 명령어.

     

    6) touch

        - 현재 경로에서 파일을 생성하는 명령어.

        - 파일의 생성과 파일의 날짜, 시간을 변경하는 명령어.

     

    3. Git의 개념

    1) Git

       - 로그가 있으면 에러 발생 시 과거의 코드 기록으로 쉽게 되돌아가기 가능.

       - 버전 관리 도구(= 형상 관리 도구)

       - 코드 변경점 기록.

       - 소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 것.

     

    2) Github

        - 백업과 공유가 가능한 온라인 코드 저장소.

        - 온라인 업로드 → 팀원들에게 쉽게 공유도 가능.

        - Github으로 공유 및 협업 가능.

     

    4. Git 필수 명령어

    1) git init

        - 코드 관리를 시작하는 명령어.

        - initialize(초기화하다, 초기 세팅하다)의 준말.

        - 프로젝트 시작 전 딱 한 번만 입력하면 됨

          (여러 번 입력해도 문제 되지 않지만 기존 데이터가 날아가는 경우도 있으니 주의할 것!)

        - 정확한 프로젝트 폴더(경로)에서 입력해야함.

          (잘못하면 데스크탑 전체 파일, 폴더가 다 기록됨)

        - git init 명령어를 입력하면, .git 이라는 숨겨진 폴더가 생기고, 이 때부터 코드 변경을 git에서 추적함.

        - initialized empty Git repository in~ 이라고 나오면 성공한 것.( =깃 저장소를 초기화했습니다)

        - windows 사용자는 터미널을 git bash 또는 bash로 열 것!

     

    2) git status

        - 저장 되기 전 상황을 확인하는 명령어.

        - 어떤 파일이 어떤 상태가 되었는지 확인.

        - 코드의 변경이 있으나 add 하지 않은 파일은 붉은색으로 표시됨.

        - branch가 어떤 branch인지까지 확인 가능함.

     

    3) git add & commit

        - 코드를 저장하는 명령어.

        - git add 파일명 → 저장하기 전 저장할 파일 지정

          (저장할 파일을 선택한 상태이지 저장한 상태가 아님!!)

        - git commit -m "메시지 작성" → 실제로 저장하는 명령어.

        - git add + . → 내 프로젝트의 모든 변경사항을 한 번에 지정(모두 선택)

        - 커밋할 사항이 없음 → 커밋이 잘 되었다는 뜻.

     

    * Please tell me who you are 에러

       → 계정 설정을 하지 않은 경우에 이와 같은 에러 발생, Git commit 후 저장이 안됨.

    * git config --global user.name "유저 이름"

    * git config --global user.email "유저 이메일"

    두 명령어를 입력해서 설정해주면 됨.

      → 유저 이름과 유저 이메일은 github 가입 시 사용한 것과 일치시키는 것이 좋음.

    * 항상 git 명령어를 치기 전에 git status 명령어로 한 번 체크하는 것이 중요함.

     

     

    * Staging area : 커밋을 하기 위해 $ git add 명령어로 추가한 파일들이 모여있는 공간.

    * Repository : 커밋들이 모여있는 저장소.

     

    참고한 블로그

     

    [Git] Git 3가지 영역 (Staging Area) - Commit 이해하기

    Staging Area Commit을 할 때, 총 3가지 영역을 바탕으로 작동합니다. Working Directory : 내가 작업하고 있는 프로젝트의 디렉토리 Staging Area : 커밋을 하기 위해 $ git add 명령어로 추가한 파일들이 모여있

    iseunghan.tistory.com

     

    4) git log

        - 내가 했던 로그들을 확인할 수 있음.

        - 저장 내역을 확인하는 명령어.

        - 커밋 메시지로 코드 변경점 추측 가능.

        - q 누르면 log에서 나갈 수 있음.

     

    5) git reset

        - git log에서 "commit 아이디"를 복사하고 git reset + "commit 아이디" 하면 리셋됨.

     

    6) git reflog

        - git에서 했던 모든 기록을 볼 수 있음.

        - reset한 기록까지 싹 다 출력됨.

        - reset했던 내역도 git reset + "commit 아이디" 하면 reset했던 내역을 다시 취소할 수 있음.

     

    5. Github로 코드 백업하기.

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

    repository 이름 입력 후, create repository 버튼 클릭.

     

    2) 내 코드를 Github repository로 업로드

        A. 업로드할 프로젝트 폴더를 VSCode로 열기.

        B. 박스 속 명령어들 복사

        C. VSCode의 터미널에 붙여넣기.

        D. Github Repository로 코드가 잘 올라갔는지 확인하기.

     

    3) git push - 추가로 수정된 코드 Github에 반영하기.

       A. 코드 수정

       B. 코드 저장 명령어 실행

          → git add . & git commit -m "메시지"

       C. git push origin main(=브랜치명) 으로 간단하게 push 가능.

     

    4) 업로드 시의 3가지 명령어와 의미

        A. git remote add origin <github 주소>

            - 원격저장소( <github 주소>)를 origin 이라는 이름으로 지칭하겠다.

            - git push origin 브랜치명(= main) → 편하게 적을 수 있음.

            - 꼭 origin으로 적을 필요는 없으나, 대부분 origin으로 작성하므로 맞추는 것이 좋음.

     

            * remote repository : github repository를 의미함. 

            * local repository : 내 컴퓨터의 로컬 저장소를 의미함.

     

        B. git remote -v

            - 현재 등록(연결)되어있는 remote repository를 볼 수 있음.

     

       C. get remote remove abc

           - abc라고 지정한 repository가 없어짐.

     

        D. git branch -M main

            - branch 이름을 main으로 바꾸겠다는 의미.

            - 최초 브랜치명은 master인데 노예 제도와 관련이 있다는 논란이 있어, main으로 바꾸는 것.

     

        E. git push -u origin main

            - -u : origin main을 치는 것조차 귀찮을 때 사용.

                    (팀 프로젝트 시에는 추천하지 않음! 개인 프로젝트 시에는 상관없음.)

     

    * git push 만 입력해도 제대로 push가 되긴 하지만 추천하지 않음.

      git push origin main 을 다 써줄 것!!

     

     

    6. Github 협업하기 + 충돌 해결하기

    1) Github 협업하는 법

        ① 팀장이 Repository 생성 및 초기 코드 작성 후, 협력자(Collaborators) 등록하기.

        ② git clone 명령어를 통해 코드 복사해오기.

    https의 url주소를 복사하면 된다.

    프로젝트를 작성할 directory  폴더를 만든 뒤,

    terminal을 열고 git clone + github 주소 + . 를 입력한다.

    → github repository에 있는 코드만 현재 경로에 복제해달라는 뜻.

     

        ③ 팀원의 코드 변경 및 github 에 올리기.

             A. 코드 수정 → 코드 저장 명령어 실행 → git push origin main 순으로 진행.

     

             B. git pull : 다른 사람이 변경한 코드 내 코드에 가져오기.

                 a. 다른 사람이 이미 git push 한 것을 내가 git push 하면 에러 발생.

                     → git push 전에 git pull을 받아야함.(오류 발생 시 해결 힌트 제공함)

                  b. git pull 시 오류 발생하는 경우!

                      git config pull.rebase false 를 실행한 후, 다시 pull을 받으면 정상적으로 동작함.

                  c. 터미널에 아무것도 입력이 안되는 vim 에디터가 뜬 경우

                         →  esc + : + wq + Enter키를 입력하면 w(저장) + q(나가기) 가 됨.

     

    2) 충돌 해결하기

       A. git pull 명령어로 가져왔는데 코드가 충돌난 경우

            → 충돌이 발생한 파일 확인해보기 → 충돌된 코드 중에 옳은 것을 두고 직접 수정하기.

           같은 파일의 같은 위치 코드가 변경되지 않게 조심할 것!!

           충돌 해결 후 다시 git push 하면 됨.

     

     

    반응형