코드 스테이츠 3일차(Git)

Lumi·2021년 9월 1일
0
post-thumbnail

Git

코드를 효율적으로 관리하기 위해 개발된 분산형 버전 관리 시스템

  • 쉽게 말하면 서로 공유하면서 달라진점을 확인할수 있는 시스템

특정 시점에 생성된 백업 복사본을 스냅샷이라고 하며
백업 복사본을 만드는 작업을 commit라고한다.

Github

Git Repository를 관리할 수 있는 클라우드 기반 서비스

  • 쉽게 말하면 개발자들의 sns

내가 작업하는 소스코드 폴더가 버전관리를 받게 하기 위해서는 내 폴더의 Git의 관리 아래에 두어야 한다.
이떄 Git으로 관리되는 폴더를 Git Repository라고 한다.

Git Repository

Git으로 관리되는 폴더

Remote Repository와 Local Repository의 두종류의 저장소를 제공을 하는데

  • Remote Repository는 업로드해 다른사람과 공유하는 저장소
  • Local Repository는 작업하는 저장소

다른사람이 Remote에 올린것을 나의 Local에 가져와 작업을 할수도 있다.

Fork

다른 사람의 Remote저장소에 있는 것을 나의 Remote저장소로 가져오는것을 말한다.

  • 오픈 소스 파일에 contributor가 되는 것

clone

Fork를 통해 가져온것을 나의 Remote저장소에서 나의 Lcoal저장소로 옮기는 과정

push

가져온 정보를 나의 Remote, 다른사람의 Remote에 commit하는 과정

  • Push의 반대 과정을 pull이라고 한다.

이렇게 Push까지 완료를 한다면 GitHub에는 Pull request라는 기능이 있어서 내가 제안한 코드의 변경사항에 대해서 반영여부를 요청을 하게 된다.

Git 환경설정

git의 기본적인 환경설정 방법이다.

git config --global user.name "이름"

  • 사용할 사용자 이름을 적는다.

git config --global user.email "이메일"

  • 사용할 사용자의 이메일을 적는다.
  • 다시 설정하고 싶다면 똑같이 입력해주면된다.

ssh를 이용해 github사용법

CLI에서는 다른 PC에 접속하거나 요청할떄 비대칭키를 이용해 사용자를 인증한다.

  • 비대칭키 : 서로 다른 키

ssh 공개키(비대칭키중 하나)를 이용하여 소통을 해야하기 떄문에
일단 ssh키를 생성해야 한다.

ssh : 보안이 강화된 shell을 의미한다.

ssh-keygen

터미널에 입력함으로써 키를 생성한다.

이떄 경로~/.ssh./에 파일 id_rsa, id_rsa.pub가 생성이 되는데 이 두개를 비대칭키 라고 하면

이떄 pub가 붙은 키를 공개키
pub가 없는키를 비공개키 라고 한다.

  • 비공개키는 누구에게도 공개되면 안된다.

이후 공개키를 이용해 github에 등록한다.

github에 키를 등록하는법

setting에 가서 SSH and GPG keys에 들어가 저장하면 된다.
-> 이후 다른 Remote Repository에 가서 Clone이 되는지 확인해 보면 된다.

해당 ssh를 복사해

  • git 복사한 내용

을 터미널에 입력하면 정상적으로 폴더가 생성이 된다.

staging area

clone과정후에 작업에 들어간 파일들을 git의 관리하에 있는 상태, 영역

  • staged 된 파일이라고 말할수 있다.
  • 반대로 staged안된 파일을 untracked, unstaged파일 이라고 한다.

staging area에 들어온 파일들만이 commit가능하며 commit을 하고 나면 나의 Remote Repository에 push해서 commit 기록을 Remote에도 남겨줄수가 잇다.

WorkFlow(개인)

Git이 어떤순서, 어떻게 작동되는지에 대한 내용이다.

일단 Fork(저장소를 가져오는)과정이 끝나게 되면 나의 Remote에서 Local로 가져와야 하기 떄문에 Clone과정이 필요하다.

Clone과정

git clone <저장소 주소> 를 입력함으로써 이루어 진다.

이 과정이 이루어 진뒤 git status명령어를 통해서 staging area와 untracked files에 어떤것들이 있는지 확인을 할 수가 있다.

  • git status에는 파일들의 상태를 자세하게 나타내기 떄문에 유심히 볼 필요가 있다.

git restore 파일명

  • 만약 작업한 코드를 싹다 삭제하고 새로 시작하고 싶다면 사용하는 명령어

  • commit되지 않은 변경사항을 폐기한다.

이후 만족스럽게 작업이 되었다면 commit작업을 해주어야 한다.
commit 작업을 할때에는 파일이 Git의 관리하에 있어야하고 이 영역은 staging area이다.

git add 파일명, git add. : 특정 파일, 모든파일을 staging area로 추가한다.

  • 터미널 창에 변화가 없다는게 포인트 이다.

이후 commit 하면 되는데

git commit -m '변경 완료' : 이런 명령어를 통해서 메시지를 남길수도 있다.

commit이 완료되면 다른 사람의 Remote저장소에 contribute해야 하기 떄문에 Pull Request를 날려줘야한다.
commit한 로그를 보고싶다면 git log를 활용

Pull Request를 날리기 위해서는 내 commit해서 Local에 있는 파일들을 나의 Remote에 올려줘야 하는데 이떄 사용하는것이 git push 이다.

git push 옵션 : 뒤에 따라오는 옵션은 상황에 따라 다양하게 사용된다.

이러한 Pull Request를 줄여서 PR이라고 한다.

====================================================================

좀 난잡해 보여서 큰 그림으로 정리를 하자면


fork -> clone하여 Work space에서 작업 -> add -> commit -> push -> Pull Request순으로 움직인다고 생각을 하면 될꺼같다.

  • 세부적인 해결사항 및 문제점은 status를 참고해서 해결하면 된다.

추가 학습

git status를 보면 modified, unmodified staged등등 다양한 상태가 있다.

Unmodified : 기존에 Commit했던 파일을 수정하지 않은 상태
Modified : 기존에 Commit했던 파일을 수정한 상태
Staged : Commit이 가능한 상태(add하는 작업이 직전에 필요)

나의 Local 저장소는 github에서 나의 repository를 말한다.

WorkFlow(협업)

내가 새로운 파일을 만들어서 협업하여 프로젝트를 진행한다고 가정을 하였다.

일단 새로운 파일을 만든뒤 이것을 Git으로 버전관리를 하기 위해서 git init을 활용한다.

git init : 디렉토리를 Git Repository로 변환 하거나 새로운 Repository를 초기화 하는데에 사용

이렇게 하면 나의 새로운 Local저장소가 생겨난 것이다 .

이후 Remote저장소와 연결을 해주어야 하는데 이떄 git remote add를 사용한다.

git remote add origin 'Repository주소' : Local저장소에 Remote저장소를 연결

  • 터미널에 변화가 없다.

  • 이 명령어를 사용하려면 github에 폴더의 repository가 있어야 한다.

이후 다른 사람과 협업을 진행할떄에는 git remote add pair를 활용

git remote add 상대방의 이름 '상대방의 Repository주소' : Local저장소에 Remote저장소를 연결

  • 터미널에 변화가 없다.

잘 연결되었는지 확인을 하고자 한다면 git remote -v를 활용

git remote -v : 현재 Local과 모든 Remote를 확인

  • 만약 위에 적은 add두개가 모두 잘 작동했다면 총 4줄의 명령어가 확인된다.

이후 같이 작업한 사람의 작업 내용을 받아와서 확인하고 싶다면

git pull : 상대방의 작업한 내용을 받아온다.

받아 오는 내용은 자동으로 merge가 이루어 진다.

  • 이떄 오류가 많이 발생하게 된다.
  • 터미널 화면에서도 Merge confict라고 오류발생을 알려준다.

이럴떄에는 git status 명령어를 통해서 어떤 파일이 충돌하고 있는지 확인할수가 있다.

확인한후에는 충돌이 일어난 부분을 하나하나 직접 확인 후 수정을 해야한다.. ㅠ

이후 수정이 완료되면 Remote에 업로드 하기 위해서 staging area에 파일을 추가한다.

====================================================================

간단한 실습

간단하게 github를 통해서 코드스테이츠의 계산기를 frok해왔고 git으로 작업을 해보았다.

  • 일단 git clone작업을 통해서 복제해야한다.

    그렇게 되면 나의 Remote저장소에서 내 작업공간으로 가져온다.

  • 저장소를 부여하지 않았기 떄문에 바로 작업을 할수 없으니 git init를 시전한다.

    저장소를 초기화 한다.

  • 이후 상태를 보면 아직 커밋할 사항에 추가되지 않았기 떄문에 add하라는 글을 볼수가 있다.

  • 그후 해당 파일을 add 해준다.

    이렇게 되면 Staging area에 도착한 것이다.

  • 다음으로는 commit을 하여서 나의 Local저장소에 올릴수가 있다.
profile
[기술 블로그가 아닌 하루하루 기록용 블로그]

0개의 댓글