SONOTRI
  • github 연동 방법(로컬 & 원격 저장소 연결)
    2024년 08월 30일 16시 55분 56초에 업로드 된 글입니다.
    이 글은 2024년 12월 05일 07시 04분 47초에 마지막으로 수정되었습니다.
    작성자: SONOTREE

    Github에 코드를 올리는 과정

    1. 로컬 저장소 & 원격 저장소

     

     

    • 로컬 저장소(local repositary): 내 PC에 파일이 저장되는 개인 전용 저장소이며, 이 저장소로 작업할 때에는 네트워크가 필요하지 않다
    • 원격 저장소(remote repositary): 파일이 원격 저장소 전용 서버에서 관리되며 여러 사람이 함께 공유하기 위한 저장소이다. 서버에 저장하기 위해서는 네트워크가 필요한다. 대표적인 원격 저장소로는 github, gitlab 등이 있다.

    로컬 저장소에서 git 버전 제어 기능을 사용할 수 있지만, 팀원과 함께 코드 변경 사항을 풀링하고 푸시하는 것과 같은 협업 기능은 오직 원격 저장소에서만 수행된다.


    2. 로컬 저장소 생성(처음 한 번만 실행)

    -> 적혀있는 순서대로 진행하면 된다.

    2.1. 폴더 생성

    내 컴퓨터에 로컬 저장소를 생성하기 위한 폴더를 생성한다. 폴더 명은 자유이다. 나는 mygit이라는 이름의 폴더를 생성했다.

     

     

    2.2. Git Bash

    Git Bash를 설치하고, Git Bash 터미널을 연다.

     

    아래 명령어를 입력하여 생성한 폴더로 이동한다. 명령어를 입력하면 프롬프트의 '현재 디렉토리'부분이 생성한 폴더가 있는 위치로 바뀔것이다.

    cd Desktop/[생성한 폴더 명]

     

    +) 자주 사용하는 명렁어 정리

    • pwd: 현재 위치
    • cd: 폴더 변경
    • ls: 폴더 목록 출력
    • ls -a: 숨긴 폴더까지 모두 보기

    +) 프롬프트

    프롬프트는 터미널에서 사용자 이름, 호스트 이름, 현재 디렉토리 등의 정보를 보여주며, 사용자가 명령어를 입력할 수 있도록 안내하는 역할을 한다.

    이게 프롬프트다

     

     

    2.3. 깃 레포지토리 만들기

    생성한 폴더 내부에 위치한 상태에서 아래 명령어를 입력한다. 빈 git 레포지토리를 만드는 명령어이다.

    git init

     

    하지만 명령어를 입력하고 폴더로 가보면 아무것도 보이지 않는다.

    1. ...클릭
    2. 옵션 클릭
    3. 보기 클릭
    4. '숨김 파일, 폴더 및 드라이브 표시' 클릭 후 적용 클릭

    이후 폴더로 돌아가면, 보이지 않았던 .git 파일이 보이게 된다. 이 .git 파일이 바로 로컬저장소이다. 로컬 저장소에서는 내가 만든 버전 정보, 원격 저장소 주소 등이 저장된다. 원격 저장소에서 내 컴퓨터로 코드를 받아오면 로컬 저장소가 자동으로 생성된다. 주의할 점은, 한 폴더에 하나의 로컬 저장소만 유지해야 한다는 것이다. 그렇지 않으면 충돌이 일어난다.


    3. 코드 작성/ Github에 올리기

    3.1. 코드 작성하기

    코드를 작성한다. 코드는 위에서 내가 생성한 파일 내에 저장해야한다.

    이런식으로

     

     

    3.2. git add 명령어

    cd 명렁어를 이용해 코드가 있는 파일로 이동한다. 그리고 아래 명령어를 입력한다.

     

    이 명령어는 파일을 Git의 추적 영역에 추가하는 역할을 한다. 이는 Git이 어떤 파일을 추척하고 커밋할지를 결정하는 중요한 가정이다. 파일을 추가하지 않으면 Git은 해당 파일을 커밋 대상으로 인식하지 않는다

    git add [파일명.확장자 종류]

     

     

     

    3.3. git commit 명령어

    이 명령어는 추적 영역에 있는 파일의 변경 사항을 로컬 저장소에 최종적으로 기록하는 역할을 한다. 커밋은 Git에서의 중요한 저장 단위로, 프로젝트의 특정 상태를 저장소에 기록하고 보존한다.

    git commit -m "[메모할 내용]"

    +) 커밋: 개발 단계별로 깃발을 꽂는 행위.


    4. 로컬 저장소와 원격 저장소 연결

    4.1. 저장소 연결(처음 한 번만 실행)

    Github에 레포지토리를 생성하고, 아래 명령어를 사용해 로컬 저장소와 원격 저장소를 연결한다

    git remote add origin https://github.com/아이디/이름.git
    • remote add: 원격 저장소를 추가한다
    • origin: origin이라는 remote 저장소에 등록한다

     

     

    4.2. 로컬 저장소에 있던 파일을 원격 저장소에 업로드

    커밋을 진행한 후 push 명령어를 사용한다.

     

    git push는 로컬 저장소의 변경 사항을 원격 저장소에 반영한다. 이때 push하는 것은 특정 파일이 아닌 로컬 저장소의 브렌치에 포함된 모든 커밋이다.

    git push origin master

    5. 이미 Github에 업로드 된 코드를 수정하고 재업로드 하는 경우 + 추적 영역 심화

    5.1. 과정

    1. git add [파일명]
    2. git commit -m "[메모 내용(파일 수정 메시지)]"
    3. git push origin master

     

     

    5.2. 추적 영역과 관련된 추가 내용

    추적 영역은 커밋 전에 변경 사항을 임시로 보관하는 장소이다. 이곳에 파일이 추가되면, 다음 커밋에 포함될 준비가 된 상태가 된다.

     

    git commit은 추적 영역에 있는 변경 사항만 기록한다. 따라서, 파일을 수정한 후에 변경된 내용을 git add 명령어를 통해 추적 영역에 올려야 한다. 새로운 코드가 아니라고 git add 명령어를 건너 뛰어도 괜찮다는 생각은 틀린 생각이다.

     

    git commit 명령어를 입력하고 나면, 추적영역에 있던 파일들은 커밋되면서 추적 영역에서 내려오고, 로컬 저장소의 커밋 히스토리에 기록된다.

     

    그리고 git add와 git commit은, 로컬 컴퓨터에서만 작동하여 로컬 저장소에만 변경사항을 기록한다. 따라서 git push 명령어를 사용해 커밋한 변경 사항이 원격 저장소에도 반영되도록 해야한다.

     

    간단히 정리하자면 

    • git add: (수정된)파일을 추적 영역에 추가한다
    • git commit: 추적 영역에 있는 변경사항을 커밋하고, 이후 해당 변경사항은 추적 영역에서 내려온다.
    • git push origin master: 변경 사항을 원격 저장소에 반영한다

     

     

    5.3. 추적영역 관련 명령어

    #git status

    : 추적 영역에 있는 파일들을 볼 수 있는 명령어

     

    • Staged for commit (추적 영역에 있는 파일들):
      • 추적 영역에 있는, 커밋할 준비가 된 파일들이 표시됩니다. 이 파일들은 git add 명령어로 추가된 상태입니다.
    • Changes not staged for commit (추적되지 않은 변경 사항):
      • 수정되었지만 추적 영역에 추가되지 않은 파일들이 표시됩니다.
    • Untracked files (추적되지 않는 파일들):
      • Git이 추적하지 않고 있는, 새로운 파일들이 표시됩니다. 이 파일들을 커밋하려면 git add로 추가해야 합니다.

     

    #git restore --staged [파일명] or git reset [파일명]

     

     

     

    5.4. 상황 예시

    5.3.1. 여러 파일을 한꺼번에 동일한 커밋 메시지로 커밋

    git add a.py
    git add b.html

    -> a.py와 b.html이 모두 추적 영역으로 올라간다. 

     

    git commit -m "변경"

    ->그리고 해당 명령어를 입력하면 a와 b가 한꺼번에 커밋된다.


     

    6. 적용(다양한 상황)

    6.1. 코드 삭제(원격에서 삭제 -> 로컬에 변경사항 저장)

    깃허브에 올라간 코드를 지워도, 로컬 저장소는 변경되지 않는다. 이는 원격 저장소와 로컬 저장소가 독립적으로 작동하기 때문이다.

     

    로컬 저장소와 원격 저장소는 서로 독립적인 저장소로, 각자의 커밋 내역을 가지고 있다. 따하서 원격에서 삭제된 파일이나 커밋은 로컬에 직접적인 영향을 주지 않는다.

     

     

    원격 저장소의 변경 사항을 로컬에 반영하려면 git pull 명령어를 사용하면 된다. 이 명령어는 원격 저장소의 최신 변경 사항을 가져와 로컬에 병합한다.

    git pull origin master

     

     

     

    6.2. 코드 삭제(로컬에서 삭제 -> 원격에 변경사항 저장)

    1) #git rm [파일명] 또는 직접 휴지통을 사용해 파일을 삭제한다

     

    2) 파일을 삭제한 후, 삭제된 파일을 추적 영역에 추가한다

    git add [파일명]

     

    3) 추적 영역에 올라온 파일을 커밋한다

    git commit -m "삭제"

     

    4) 커밋된 변경 사항을 원격 저장소로 푸시한다. 이 단계에서 원격 저장소에서도 파일 삭제가 반영된다.

    git push origin master

     

     

     

     

    6.3. 등록한 레포지토리에 하위 폴더를 생성하고, 해당 폴더에 코드를 업로드 할 경우(하위 폴더로 이동 후 진행한 상황)

    1) 로컬 저장소에 하위 폴더를 만든다.

     

     

    2) git Bash쉘을 통해, 새로 생성한 하위 폴더로 이동한다.

    cd Desktop/[폴더 명]/[새로 만든 하위 폴더 명]

     

    3) 업로드 할 코드를 하위 폴더에 작성하고, git add, git commit, git push 과정을 동일하게 진행하면 된다.

     

     

     

     

    6.4. 등록한 레포지토리에 하위 폴더를 생성하고, 해당 폴더에 코드를 업로드 할 경우(상위 폴더에서 진행한)

    1) 이번에는 명령을 사용해 하위 폴더를 만들어보자

    mkdir [하위 폴더명]

     

     

    2) 업로드 할 코드를 하위 폴더에 작성하고, git add, git commit, git push 과정을 동일하게 진행하면 된다. 주의할 점은, 현재 하위 폴더에 사용자가 위치해 있지 않으므로, 코드를 저장할 폴더 경로를 적어줘야한다. git add Website_D/ [파일 명]은 mygit폴더 아래에 있는 Website_D 폴더에 a.py 파일을 저장하겠다는 의미이다.

     

     

     

    6.3. 상위 폴더, 하위 폴더 모두 존재하지 않은 상태(로컬 저장소에)에서, 명령어로 폴더들을 추가할 때는 -p 옵션을 사용하면 된다.

    mkdir -p mygit/Website_D
    • -p: 중간 폴더사 없어도 자종으로 생성되게 하는 옵션

     

     

    6.4. 로컬 저장소의 변경 사항이 여러개 일 때

    .은 현재 디렉토리와 그 하위 폴더의 모든 파일과 변경 사항을 추가한다.

    git add .

    7. github에 이미 존재하는 레지스토리를 새로운 로컬 파일과 연결

    #git clone [해당 레지스토리 주소].git

    'Public > elif' 카테고리의 다른 글

    IDA Free-Could not load licenses 문제 해결 방법  (1) 2024.12.01
    Github에서 Markdown 문법 사용하기  (0) 2024.11.25
    댓글