Github 개발자들의 SNS
2018년 마이크로소프트는 $860,000,000에 Github을 인수했습니다. Git이란 버전관리 시스템으로 Repository를 관리하는 Github은 수많은 오픈소스 프로젝트들이 올라와 있고 개발자들은 contribution을 하면서 점점 생태계의 범위를 키워가고 있습니다.
Git을 이용해서 로컬에서 작업하고 있는 프로젝트 폴더를 Git의 remote repository와 연결해서 로컬 컴퓨터가 날라간다 하더라도 remote repository에서 백업을 할수도 있고 새로운 버전으로 업데이트를 할수도 있습니다. 또한 소스 공유를 하면서 동시 작업이 가능합니다.
Git 시작하기
Git 설치하기
// git 설치
$ sudo apt install git
// 설치 확인
$ git --version
Git 사용자 등록
Git을 사용하기 위해서는 사용자 이름과 이메일을 등록해줘야 합니다. 등록된 사용자 정보는 commit 이력에 포함됩니다. --global 옵션을 사용하면 사용자 홈에 저장되어 한번만 입력하면 됩니다. 만약 프로젝트별로 사용자 정보를 다르게 관리하고자 한다면 global 옵션을 빼면 됩니다.
$ git config --global user.name "사용자 이름"
$ git config --global user.email "사용자 이메일"
Git Editor 설정
Git에서 commit 메시지를 기록하거나 merget commit 확인하는 경우에 텍스트 창이 열리게 됩니다. Git에서 기본옵션은 vi Editor가 설정되어 있습니다. 자신에게 편한 Editor로 변경해주면 됩니다.
$ git config --global core.editor vim
SSH 등록하기
SSH(Secure Shell)은 보안이 강화된 Shell 접속방법입니다. RSA 암호화 방식을 사용하는 비대칭키를 사용해서 다른 PC에 접속할 때 사용됩니다. 발행된 비대칭키는 공개키와 비밀키 2가지가 생성됩니다. 공개키는 Git에 등록해놓고 비밀키는 로컬 피시에 저장해두고 사용하게 됩니다. 비밀키는 절대 노출되면 안됩니다.
① 키 생성하기
키를 생성하면 ~/.ssh 디렉토리 하위에 id_rsa와 id_rsa.pub 두가지 파일이 생성됩니다. id_rsa.pub는 공개키이며 id_rsa는 비밀키로 절대 노출되면 안됩니다.
$ ssh-keygen
다음 명령어를 입력하면 공개키가 출력됩니다. 이제 공개키를 복사해서 Git > Settings > SSH and GPG keys에 등록해주면 됩니다.
② 공개키 등록하기
$ cat ~/.ssh/id_rsa.pub
※ 참고문헌 : Git 빠르게 시작하기
Git 기본 기능 및 명령어
Git의 전체적인 흐름은 먼저 Remote Repository에서 시작합니다. 다른 Repository에서 Fork를 해오면 나의 Remote Repository에 프로젝트가 옮겨지게 됩니다. 이제 Local Repository에 프로젝트를 가져오는 작업을 Clone이라고 합니다.
Local Repository는 Staged Aread와 Unstaged Area로 구분됩니다. 먼저 나의 work place에서 작업한 파일들은 unstaged 혹은 untracked file이라고 합니다. 작업한 파일은 add > commit 명령을 통해 Staged Area로 올려주게 되고, 여기서 Push 명령을 통해 나의 Remote Repository로 이동하게 됩니다. 마지막으로 Pull Request를 통해 다른 Remote Repository에 나의 소스코드가 병합(Merge)되게 됩니다.
fork : 상대방의 Remote Repository의 소스코드를 자신의 Remote Repository로 가져오는 작업입니다.
git init : 해당 Local Repository를 Git 관리하에 두는 명령어입니다.
git clone : Remote Repository를 자신의 Local Repository로 가져오는 작업입니다.
git status : 현재 Repository의 상태를 확인합니다. 어떤 파일이나 폴더가 Staged Area에 있고 Untracked File은 어떤게 있는지 확인 가능합니다.
git restore : Unstaged Area에 있는 파일들의 수정사항을 모두 되돌립니다. commit 전 상태라면 restore 명령어를 통해 현재 work space의 변경사항을 모두 되돌릴 수 있습니다.
git add : Unstaged Area에 있는 파일/폴더를 Staged Area에 올리는 작업입니다. git add . 명령을 통해 모든 변경사항을 Staging Area에 올릴 수 있지만 변경사항에 관한 기록을 분리하기 위해서 특정 파일명을 기록해주는 것이 좋습니다.
git commit : Github Repository에 변경사항에 관한 commit 기록을 남깁니다. 커밋 기록을 남기는 것도 어느정도 가이드라인이 세워져 있습니다. Staging Area에 올라간 장소의 이름을 기록한다고 이해하시면 편합니다. 커밋한 내용과 커밋을 한 사용자 정보가 기록됩니다.
git reset HEAD^ : Remote Repository에 업로드되지 않고 Local Repository의 Staging Area에 commit한 상태라면 commit을 되돌릴 수 있습니다. git log를 찍어보면 commit history를 확인할 수 있는데 차례대로 첫번째면 ^ 두번째면 ^^로 commit을 취소할 수 있습니다.
git push [remote repository] [branch] : Staging Area의 소스코드를 Remote Repository에 업로드하는 작업입니다.
git remote add [remote repository] [ssh address] : Git Remote Repository를 등록해주는 작업입니다.
git remote -v : 현재 등록된 Remote Repository 리스트를 확인할 수 있습니다.
git checkout -b [new branch] : 새로운 브랜치를 생성합니다.
git checkout [branch] : 브랜치를 이동합니다.
git branch : 브랜치 목록을 확인합니다.
'Programming' 카테고리의 다른 글
[Javascript] IndexOf 배열 내에서 특정 위치 찾는 방법 (0) | 2022.05.12 |
---|---|
[Javascript] 배열 메소드 Array Method 정리 (0) | 2022.05.12 |
[Programming] CLI 기본 명령어 (feat GUI vs NUI) (0) | 2022.05.11 |
[Javascript] 조건문 분기 내에서 아무것도 하지 않는 로직 Python pass 처럼 사용 (0) | 2022.05.11 |
[Javascript] 객체 안에 특정 KEY 값이 존재하는지 확인하는 방법 (0) | 2022.05.11 |
댓글