GITHUB

go easy on NG·2023년 1월 7일
2

개념 정리

목록 보기
7/10
post-thumbnail

깃허브 로그인

GIT다운

  • 이렇게 다운된 깃을 열어 깃 터미널 창을 열어준다.
  1. git config --global user.name "이름"
    을 치면 그냥 아무것도 안 뜨고 넘어간다.
  2. git config --global user.email "깃허브가입메일"
    을 치면 아무것도 안뜬다.
  3. git config --list
    로 user.name과 user.email이 잘 들어갔는지 확인한다.

프로젝트를 담을 저장소 만들기

  • New버튼을 눌러 프로젝트를 생성한다.

  • Repository name 에 프로젝트 명을 적는다.
  • 옵션 설정 후 왼쪽 하단 초록색 Create Repositiry를 눌러 생성한다.

깃허브 저장소에 코드 올리기

  • 터미널에서 올리려는 파일로 들어간다.
  1. git init
    Initionalized 어쩌고 뜨면 성공.

  2. git add .
    + . 은 전부를 보낸다는 의미다.
    +git status로 추가된 파일 확인 가능
    +git 파일명을 통해 특정 파일만 올릴 수 있다.

  3. git commit -m "히스토리네임"
    나중에 올려졌을때 히스토리네임은 아래의 노란 줄과같이 보여진다.

  4. remote add origin git@github.com:주소
    로컬(내컴퓨터) 프로젝트와 인터넷 속 깃허브를 연결해준다.
    +git remote -v로 연결 확인

  1. git push orgin master/main(마스터 아니면 메인 둘중 하나)
    코드를 보내준다. (최근 main을 많이 사용하는 추세)

코드를 수정했을 때

  1. git add .
    + 전체를 추가한다 (git init은 처음에만 하는거라 수정에서는 쓰는거 아니다.)
    + 뒤에 . 이 전체를 올린다는것을 의미한다. (파일명 작성하면 해당 파일만 더한다는 뜻)
  2. git commit -m "히스토리네임"
    히스토리명 붙이기
  3. git push origin master/main
    보내기

협업하기

방법 1

  • 공동으로 사용할 깃허브에 저장소를 만들어 프로젝트를 올린다.

  • 협업자들은 공동 저장소에서 자신의 저장소로 쌍둥이를 만드는 fork를 한다.

  • fork한 저장소에서 git clone을 한다.

  • git branch 원하는브렌치명
    클론한 저장소에서 brench를 새로 만든다.
    브렌치를 만드는 이유는 자신이 생각하는 코드가 한가지 이상의 방법이 있을 때, 여러가지 코드를 시도하여 바꿔보고 가장 잘 했다고 생각한 코드만 공동 저장소로 보낼 수 있다. 두번째로는 pull을 받지 않고도 본인이 수정한 부분만 알아서 인식해서 mrege(합치기)가 가능해 conflict(충돌)이 날 가능성이 적다.

  • git switch 설정브렌치명
    + git branch를 치면 자신이 main인지 브렌치인지 위치 확인이 가능하다

  • 자신의 컴퓨터, 즉 브렌치에서 수정한다.

  • git add . , git commit -m "히스토리명", git push origin 브렌치명
    공동 저장소로 해당 파일을 pull한다

  • 깃허브로 돌아가 pull request를 보낸다.
    + 내가 수정한 부분 보냅니다. 라는 의미

  • 본인에게 권한이 있다면 merge(합치기)까지 한다.

  • 본인의 브렌치와 깃허브의 연결은 끊는다.

  • 본인의 깃허브 fork에서 공동 저장소와 sink를 맞춘다.

  • git switch main/master
    본인 vsc로 돌아가 메인으로 변경한다.

  • git pull origin main
    본인의 vsc에서 본인 깃허브 fork와 똑같이 맞춘다.

  • git branch -D 브렌치명
    vsc에서 본인이 생성한 브렌치를 지운다

  • git branch 브렌치명
    그리고 다시 브렌치를 생성해 수정을 계속하면 된다.

방법2

[생성자]

  • repository를 만든다(main, master 상관 없다)
  • setting 의 collaborators에 Add people 를 통해 협업자의 깃허브를 등록한다

[협업자]

  • 이메일을 통해 수락한다

  • 깃을 클론하여 파일을 저장한다.
    ctrl + shift + p 를 눌러 git clone을 검색한다.
    창에 url을 복사해서 붙여넣는다.

  • 클론한 파일을 열어 로컬 브렌치를 생성한다.
    git branch 브렌치명 : 브렌치 생성
    git switch 브렌치명 : 브렌치 이동
    git branch 브렌치명 : 브렌치 확인

  • 위의 설명과 같이 push 과정을 진행하면 브렌치가 연결된다

  • 나의 브렌치에서 코드를 수정한다

  • 나의 브렌치에 main/master의 코드를 pull한다.

  • 나의 브렌치의 코드를 push 과정을 진행한다

  • 깃허브의 레퍼지토리로 이동한다

  • pull request에서 new pull request를 누른다

  • main/master에게 pull request를 보낸다.
    + 브렌치 이동은 원하는대로 선택 가능하다.

[생성자]

  • pull request 받은것을 확인한다.
  • 원하는 merge 방법을 눌러 합친다.
    +만약 충돌(conflice) 나면 오른쪽 상단의 Resolve conflicts를 눌러 해결한다

기본지식

[Branch]
branch기능은 (commit의)복사본을 만드는 일이다

  • git branch 작명(내가 만드려는 파일 브렌치명)
    브렌치 만들기
  • git switch 작명
    브렌치(복사) 파일로 이동하기
    + git branch로 내가 메인인지, 사본파일인지 나의 브렌치 위치를 알 수 있다.
    + 다시 돌아갈때는 git switch main 또는 master을 하면 된다

[Merge]
Merge기능은 여러가지의 브렌치들에서 올라온 수정 파일들을 메인 브렌치에 합치는 일이다.

  • main 이나 master 브렌치로 이동한다.
  • git merge 합칠브렌치명 을 적는다.
    + 만약 서로 다른 파일을 수정했거나, 똑같은 파일의 다른줄을 수정했다면 성공이다.
    + 다만 서로 같은 파일의 똑같은 줄을 수정하면 충돌(conflict)가 발생한다. (어떤걸 먼저 적용할지 모르기때문에..)
  • git branch -d 브렌치명 으로 브렌치 삭제가 가능하다
    + merge 를 안한 branch 삭제는 git branch -D 브렌치명으로 한다
    + 되도록이면 merge후 삭제하도록 한다.
    +git merge --squash 를 하면 연결이 아닌 새 브랜치를 만들어준다.

[git pull]
git fetch 와 git merge를 동시에 해주는 작업이다.

  • git fetch : 원격 저장소 신규 commit 가져와 임시 브렌치에 저장해 주세요
  • git merge : 내 로컬 브랜치에 merge 해주세요

주의사항

  • 원격 저장소에(깃허브에) 팀원이 만든 새로운 파일이 생기면 git push 를 못한다.
    + 따라서 원격 저장소(깃허브)에서 로컬 저장소(내 컴퓨터 vsc)로 옮기기 위해 git pull 원격저장주소 또는 git pull origin 브랜치명 을 작성한다
    + 상대도 마찬가지, 누군가 한명이 push 를 했다면 반드시 pull로 올려진 파일을 pull로 모두 적용한 후 push를 해야한다.

  • merge conflict 즉, 충돌이 날 가능성이 있다
    + 원격 저장소에서 수정한 파일과 내가 수정한 파일이 똑같은 곳에서 발생했을 떄.

명령어 정리

깃에서 사용하는 명령어 모음

  • git clone 원격저장소주소
    깃허브에서 project를 만든 후 git clone 명령어로 local에도 작업공간을 만든다.

  • git init
    깃허브에서 clone하는 방법이 아닌, 컴퓨터에서 먼저 작업을 시작했을 때, 저장소를 생성하는 명령어

  • git branch
    현재 브랜치 (*표시 되어있는) 및 로컬 브랜치 확인

  • git branch -m 브렌치명
    브렌치 생성과 동시에 이동(switch)

  • git branch 브렌치명
    브랜치 만들기

  • git branch -d 브렌치명
    브랜치 삭제

  • git branch -D 브렌치명
    브랜치 강제 삭제(병합되지 않은 브랜치에 대한 삭제)

  • git push origin -d main
    원격 저장소에 있는 main 브랜치 삭제

  • git push origin :main
    로컬에서 main 브랜치를 지웠을 때, 원격 저장소에도 그 변경사항을 반영

  • git checkout main
    main 브랜치로 이동

  • git checkout -b main
    main 브랜치 만들고 이동

  • git status
    현재 상태(add 전후, commit 전후 등) 및 브랜치 확인

  • git log
    로컬 저장소의 커밋 히스토리 보기

  • git log -n 10
    10개만 보기

  • git log --oneline --graph
    log 그래프로 확인

  • it checkout -- main.py
    변경된 main.py 되돌리기

  • git rm main.py
    로컬, 원격 저장소 모두에서 main.py 삭제

  • git rm --cached main.py
    원격 저장소에서 main.py 삭제 (로컬 저장소는 그대로)

  • git checkout -b main
    main 이라는 브랜치를 만든 후, main으로 이동

  • git add .
    변경사항 모두 작업필드에 저장

  • git commit -m "메시지"
    로컬 저장소에 반영

  • git checkout master
    master 브랜치로 이동

  • git merge main
    main 브랜치를 합치려는 target 브랜치로 이동 후, 로컬에서 target에 main 브랜치를 병합

  • git push

  • git branch -a
    로컬 브랜치 및 원격 브랜치 확인

  • git checkout -b main origin/main
    원격 저장소의 origin/main 브랜치와 이어지는 로컬 main 브랜치 생성

  • git add .
    변경사항 모두 작업필드에 저장

  • git commit -m "메시지"
    로컬 저장소에 반영

  • git push
    원격 저장소에 반영, main에 반영

  • git status
    지금의 상태 임시 저장, 커밋해야 하는 것이 있어, pull이 안될 때 주로 사용

  • git stash list
    stash 목록 확인

  • git stash apply
    가장 최근의 stash 가져오기

  • git stash apply stash이름
    특정 stash 가져오기

  • git stash drop
    가장 최근의 stash 삭제

  • git stash clear
    모든 stash 삭제

  • git k / git log --all --graph
    그래프 보기

profile
🐥개발자

0개의 댓글