[7일차] Git, GitHub

유태형·2022년 5월 3일
0

코드스테이츠

목록 보기
8/77

오늘의 목표

  1. Git 설치, ssh
  2. 타 레포지토리 가져오기
  3. 협업 하기
  4. IntelliJ에서 관리 및 비슷한 명령어



내용

자신만 알도록 백업해 두면 웹하드 서비스를 사용하면 됩니다. 하지만 불특정 다수의 다른 사람들과 공유하고, 또 여러명이서 함께 제작하고 싶다면 버전관리를 통하여 오픈 소스화 시킬 수 있을 것 입니다.
Git은 버전관리 시스템이고, Github는 버전관리를 여럿이 함께 할수 있도록 만드는 클라우드 서버입니다.



Git 설치, ssh

https://gitforwindows.org/ 에서 다운로드를 받으시면 됩니다.
설치중 에디터만 본인이 원하시는 에디터를 선택하고 나머지는 기본값으로 설정합니다.
설치후 바탕화면에서 우클릭 - Git bash를 선택하면 CLI창이 등장하게 됩니다.
설치는 정말 간단합니다.

ssh키로 Github에서 git을 설치한 컴퓨터를 식별할 수 있도록 git의 SSH 키를 Github에 등록합니다.

ssh-keygen 을 프롬프트창에 입력하고 나서 3번 엔터를 치면 됩니다.
~/.ssh/경로에 2가지의 키를 생성합니다.
id_rsa : 비밀 키 입니다. 자기자신만 가지고 있어야 하는 키 입니다.
id_rsa.pub : 공개 키 입니다. 인터넷사에서 누구나 알고 있어도 되는 키 입니다.

cat ~/.ssh/id_rsa.pub 를 입력하여 공개키를 출력합니다.
출력된 공개키를 복사 합니다.

우측 상단의 프로필 클릭 - Settings 클릭 - SSH and GNG keys 클릭 - New SSH key 클릭합니다.

Title에 원하는 명칭을 정하고
key에 아까 git에서 복사한 공개키를 붙혀 넣음으로써 Git과 Github간 공개키로 계정,컴퓨터 한쌍을 만듭니다.



타 레포지토리 가져오기

순서를 정리하면 이렇습니다.

  1. 다른사람의 remote repository를 fork해서 나의 remote repository로 가져오기
  2. 나의 remote repository에서 local repository로 가져오기
  3. local repository에서 수정부터 커밋하기
  4. 나의 local repository에서 remote repository로 내보내기
  5. 다른사람의 remote repository에서 나의 remote repository의 수정된 내용 반영 요청하기(Request Pull)

다른사람의 remote repository를 fork해서 나의 remote repository로 가져오기

받고자 하는 레포지토리의 페이지에서 Fork를 클릭하여 나의 remote repository로 가져옵니다.

나의 remote repository에서 local repository로 가져오기

컴퓨터에서 관리하고 싶은 위치의 폴더에서 우클릭 - Git Bash 를 클릭하여 Git을 실행시킵니다.

git init

깃 폴더로 만듭니다.

git clone 나의 remote repository 주소

remtoe repository에 존재하는 파일을 현재 폴더로 복사합니다.

cd clone 한 파일

현재 폴더에서 받아온 폴더로 이동합니다.

git remote add origin 나의 remote repository 주소

로컬에서 remote 레포지토리로 origin이라는 이름으로 부르기를 선언합니다.

local repository에서 수정부터 커밋하기

받아온 파일들을 수정 한 후 다시 업로드를 해야 할 때 버전 관리를 위해 거쳐야하는 단계들이 존재합니다.

git add .

수정한 파일들을 stage area로 이동시킵니다.

git commit -m "짧은 설명"

수정한 파일들을 local repository에 commit 합니다.

나의 local repository에서 remote repository로 내보내기

git push origin main

로컬 브랜치에서 remote repository의 main 브랜치로 업로드 합니다. 이때, main은 예시일 뿐이며 remote repository의 다른 브랜치에 업로드를 희망할 경우 해당 브랜치명을 입력하면 됩니다.

다른사람의 remote repository에서 나의 remote repository의 수정된 내용 반영 요청하기(Request Pull)

좌측상단의 Pull Request탭으로 이동해서 New pull request를 클릭하면 요청할 수 있습니다.

협업 하기

Git과 GitHub를 함께 사용한다면 누군가의 레포지토리를 받아와서 수정을 건의 할 수도 있지만 여럿이 하는 프로젝트의 시작과 함께 버전관리를 수행할 수도 있습니다.

git init

폴더를 local repository로 만들 수 있습니다.

git push [나의저장소명칭][나의레포지토리 주소]

나의 remote repository의 주소에 대한 별칭을 부여합니다. 별칭은 나중에 push나 pull에 이용될 수 있습니다.

git remote add [팀원저장소명칭][팀원레포지토리 주소]

여러명의 팀원일 경우 각각의 팀원의 레포지토리 주소에대한 별칭을 부여할 수 있습니다.

git remote -v

remote repository와 연결 상태를 출력합니다. 빠진 부분은 없는지 오타는 없는지 확인할 수 있습니다.

git pull [팀원저장소명칭][팀원저장소의브랜치]

팀원의 저장소에 있는 브랜치를 나의 local repository로 fetch(다운로드) + merge(병합)을 수행합니다.

git add .
git commit -m "간단설명"

local repository에선 staging area로 보낸다음 커밋을 수행합니다.

git push [나의저장소명칭][나의레포지토리 주소]

나의 remote repository로 커밋한 내용을 전송합니다. 단 팀원의 remote repository에는 권한을 얻지 않는 한 push를 할 수 없습니다.



IntelliJ에서 관리 및 비슷한 명령어

IntelliJ

IntelliJ에선 병합에대한 간편한 관리를 제공합니다.
충돌이 일어나는 지점을 빨간색 박스로, 새로 추가된 지점을 초록색 박스등으로 출력하며 간편한 기능을 제공합니다.

Log탭에서도 브랜치의 진행과정을 그래프와 설명으로 자세히 알려줍니다.

비슷한 명령어

Git을 사용하다보면 여러 명령어들이 역할이 같은것을 확인할 수 있습니다.

예를들어

clone vs pull vs fetch 은 언뜻 보면 모두 remote repository에서 local repository로 다운로드하는 역할이 같은것 처럼 보일 수 있습니다.

하지만 자세히 들어다보면

git clone : git init + git remote add + git fetch + git merge
git pull : git fetch + git merge
git fetch : 단순히 다운로드만
로 모두 git fetch를 수행하지만 부가적으로 수행하는 기능의 포함 정도가 다름을 알 수 있습니다.

포함된 다른 명령어들도 정리해보자면
git init : local repository화 시킴
git remote add : remote repository 별칭 선언
git merge : local repository의 파일과 remote repository에서 받은 파일을 병합




후기

취직하고 엄청 많이 사용될 것 같으니 미리미리 익혀두자!

profile
오늘도 내일도 화이팅!

0개의 댓글