TIL Day-8

hyeongirlife·2021년 9월 5일
0

TIL

목록 보기
7/90

Git 사용법 익히기

Achievement Goals

  • Git의 환경설정을 할 수 있다.
  • 버전 관리 시스템의 필요성을 이해할 수 있다.
  • Github와 Git의 관계에 대해 이해할 수 있다.
  • Repository에 대해 이해할 수 있다.
  • Local Repository와 Remote Repository의 차이를 이해할 수 있다.

VCS(Version Control System) : 텍스트 에디터를 종료했어도 이전 코드를 보존할 수 있게 하는 시스템

  • Git : vcs중 가장 많이 쓰이는 도구

Git의 필요성 이해하기

파일을 매번 복사해서 저장하는 일도 번거롭다 (최종-최종1-진짜최종-...)

  • Git이란 개발자의 코드를 효율적으로 관리하기 위해 개발된 '분산형 버전 관리 시스템'이다.
    특정시점에 생성된 백업 복사본을 snapshot이라고 하고, 이를 만드는 작업을 commit 이라 한다.

Git에서 변경된 부분 commit으로 확인할 수 있다. 또한 개발자들의 SNS인 Github에 연동하여 전세계 개발자들과 공유하고 기여할 수 있다.

Git repository

Remote repositoryLocal repository
코드공유,협업개인작업

Fork

  • React는 온라인 상에 올라와있는 오픈 소스다.
    Remote repository에 소스코드가 올라와 있다.
    React 프로젝트에 contribute 하기 위해서는 먼저 react 원격 저장소를 내 원격 저장소로 가지고 오는 작업이 필요하다. 이 과정을 Fork라 한다.

  • Fork를 하고나서 나의 Remote repository에서 수정하기 위해선 clone 과정을 통해 remote repository에 있는 코드를 내 컴퓨터(local)로 가져온다.
  • 내 컴퓨터에서 react 소스코드 변경 작업을 완료한 후 이 내용을 commit을 통해 저장한 뒤,
    Remote repository에 push 하는 작업이 필요하다.
  • 이렇게 push를 완료하고 Github에서 pull request라는 기능을 통해,내가 제안한 코드 변경사항에 대해 반영 여부를 요청할 수 있다.

Git 설치하기

git 설치코드

sudo apt install git
git --version

git 연동하기

$ git config --global user.name "나의 사용자 이름"
$ git config --global user.email "내 이메일 주소"
--global : 처음에 한 번만 입력하면 된다.

commit editor 변경 (defualt : VSC)

$ git config --global core.editor nano

SSH 등록

SSH(Secure SHell) 키 생성

ssh-keygen
  • idrsa는 비밀키(secret key), id_rsa.pub은 공개키(Public key)라고 한다.
cat ~l.ssh/id_ras.pub 을 통해 공개키를 복사

Github에 공개키 등록

  • Settings -> SSH and GPG keys

연동확인

git clone SSH주소

CLI 사용을 위한 인증과정

Github CLI 설치

curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg 또는 sudo gpg --dearmor -o /usr/share/keyrings/githubcli-archive-keyring.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" 또는 sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
$ sudo apt update
$ sudo apt install gh

Github 로그인 시도

gh auth login
  • Fork
  • clone
  • status
  • restore
  • add
  • commit
  • reset
  • log
  • pull
  • push
  • init
  • remote add
  • remote -v

Git의 세 가지 영역 및 상태를 이해할 수 있다.

Remote Repository를 페어와 공유하며 협업할 수 있다.

충돌이 발생했을 경우 해결할 수 있다.

Advanced Challenge (optional)

  • Git Repository의 commit되지 않은 변경 사항을 취소할 수 있다.
    reset HEAD <file>
    checkout --<file>
  • 협업을 위한 git 개념을 이해할 수 있다.

혼자 작업 workflow

  1. remote에 있는 다른 repository에서 fork를 해서 remote에 있는 내 repository에 가져온다.
  2. 이 코드를 수정하기 위해 clone을 한다.
  3. 내 컴퓨터의 작업공간 work space 에서 작업에 들어간 파일들을 git의 관리 하에 있는
    상태로 올려줄 수 있다. 이 영역을 staging area라 한다.
  4. staging area에 들어온 파일들은 commit이 가능하다. commit을 하고나면 내 remote repository에 push해서 commit 기록을 remote 에도 남겨줄 수 있다.
  5. git status
    add : 파일을 commit 할 수 있는 상태로 만들어 준다.
    restore : 변경사항을 폐기(discard changes)하는 명령어다.
    이처럼 git status를 통해 어떤 파일이 어떤 상태에 있는지, 그리고 해당 파일에 대해
    어떤 행동을 할 수 있는지 알 수 있다.

최종적인 commit을 하기 위해선 먼저 Git의 관리 하에 있는 영역으로 파일들을 옮겨야 한다. 이 영역을 staging area라 한다.

git add. 명령어로 staging area에 unstaged 상태인 모든 파일을 한번에 추가할 수 있다.
하지만 이 명령어를 사용할 때는 올리지 말아야 할 파일까지 모두 add 될 수 있기 때문에 주의해야 한다.

commit 메시지를 작성하기 위해서는 -m 옵션을 통해 코멘트를 작성할 수 있다.
git commit -m

좋은 commit 메시지 작성 방법 : https://chris.beams.io/posts/git-commit/


뭔말인지모르겠음

![](https://velog.velcdn.com/images%2Fboo1996%2Fpost%2F8a4a1826-4ba6-44c4-8b39-8ebb062d040a%2F%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7%2C%202021-09-02%2012-45-44.png)

2. git clone 을 사용해서 local repository로 가져오기

3. pair의 local repository를 연결하기

4. 수정한 local repository를 commit 하기

5. github으로 push 하기

6. 자신의 local repository로 가져오기

7. 수정한 local repository를 commit 하기

8. github으로 push 하기

9. 자신의 local repository로 가져오기(6번) (역할바꾸기)

  • 주의사항 : push는 자신의 repository pull은 pair의 repository에서 해야한다.
1. git auth login을 통해 CLI와 Github계정을 연결
1. fork
2. git clone 'url' 주소 안되면 git clone 'ssh' 주소
3. 파일확인 후 nano file명 혹은 code .. 로 vsc에서 수정 한다.
4. git add file명 + git commit -m '메시지' 남긴다. (github의 commit과 같은 개념)
5. git push origin master (commit한 파일을 내 repo에 전송)
6. git pull sth master (상대방이 내 repo를 끌어 가져가는 것)

sprint review

  • SSH로 등록했으면 SHH로, HTTP로 등록했으면 HTTP로 한다.

    1. 혼자 작업(오픈소스에 contribute 하기)
    2. 함께 작업 (충돌 아닌 상황)
    3. 함께 작업(충돌 상황 확인하기)

git init은 내컴퓨터에서 git으로 만들때 사용하는거고 우린 git에서 파일을 가져온기 때문에 init할 필요가 없다.

git으로 관리하고 있지 않았던 폴더를 깃의 관리하에 넣어주기 위한 명령어

  1. im-sprint-git-workflow를 fork 한다
  2. git clone 주소
  3. ls로 repository 확인
  4. 해당경로로 이동 (까먹지말기)
  5. code .(vsc) 들어가서 파일수정한다.
  6. git restore READ.md -> READ.md 적은 내용 삭제
  7. git add (git add* git add .)
  8. git status로 staging area(파일이 추가된건지) 인지 untraced files(파일이 추가안된건지)인지 확인 git diff로 수정된 내용을 확인해볼 수 있다.
  9. git commit -m '메시지내용'
  10. git log (커밋된 내용 파악) -> q 입력하면 화면 나갈 수 있음.
  11. git push origin master (upstream - 원래주인, fork를 해서 내껄로 가져오면 - origin.)
  12. pull request 누른다. (관리자에게 pr하는 과정)

<페어모습> -> repository를 새로 만들어서 연습해보기 neofetch : 내 os가 무엇인지 알려줌

  1. git remote 동료이름 동료repo주소
  2. git remote -v 로 연동 확인
  3. git remote remove 동료이름 하면 연동한 동료 주소 삭제
  4. code. 들어가서 파일수정
  5. git add README.md
  6. git status
  7. git commit -m '메시지'
  8. 동료가 같은 파일을 수정
  9. git push origin master
    10.git pull 동료 master
  10. auto merge가 발생하는경우, 같은파일 다른줄에서 작업한경우
  11. git log 눌러서 자동병합 확인하고 commit까지 작성된걸 확인
  12. git push origin master
  13. git pull 동료 master

  1. 충돌이 발생하는 경우(같은 줄에서 작업)
  2. automatic merge failed : fix conflicts and then comit the result.라고 뜸

  1. git add . (변경된 모든파일들을 모두 추가한다)

내거를 commit하지 않고 pull을 하면 merge가 안되고 내건 사라진다.
직접 repo를 만들면 서로에게 access 권한을 줘야 한다.
주소 때문에 에러나는게 궁금한데요, add origin, add pair 주소 입력할 때 pair 주소는 HTTPS로 입력하고, origin 주소는 HTTPS/SSH 둘 다 상관없는건가요??
git reset HEAD^, HEAD^^^ 커밋1개, 커밋3개 지울 수 있다.

profile
머릿속에 있는 내용을 정리하기

0개의 댓글