일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ...args
- .toLocalString()
- 1주차
- 2020년 준비
- 2주차
- 4주차
- 5주차
- array
- array method
- async
- authentication
- AWS
- codestates
- commit
- Cookie
- CSS
- Data Structre
- Data Structure
- DataSturcutre
- Date.now()
- DB에 사진 저장하기
- Dev log
- DOM
- EC2
- EC2로 웹 만드는 방법
- EC2와 S3 연결하기
- element
- Es5
- ES6
- event 객체
- Today
- Total
souvenir
[개발자 도구] Git과 Git Hub 본문
0. 들어가며
'개발자로서 커리어를 쌓고 싶다'는 생각이 들면서 이것저것 검색해 보면 종종 들을 수 있는 것이 'Github(깃허브)'이다. 검색만으로는 대략적으로 '개발자들이 자신의 소스들을 기록하고 공유할 수 있으며, 자신의 포트폴리오로서도 활용할 수 있는 클라우드' 정도로만 이해하였다.
그런데 Github와 비슷하게 Git이라는 것도 존재한다. 이 둘의 차이점은 무엇일까?
1. Git과 Github
결론부터 이야기하자면 둘은 크게 다르지 않다. Git은 버전 관리 프로그램(도구)이며,
Github는 Git이라는 프로그램을 기반으로 업무를 하는 사람들이 자신의 소스, 업부, 기록등을 공유하는 플랫폼이라고 할 수 있다.
#Git
- 버전관리 시스템.
- Git 외에도 다른 시스템도 있지만 가장 대중적이고 강력한 시스템으로 알려져 있음
- 버전 관리가 목적이기 때문에 개발 목적 외에도 번역 등 협업을 통해 버전 확인이 필요한 업무 목적으로 다양하게 활용되고 있음.
#GitHub
- Git을 기반으로 하는 소셜 플랫폼
- 소스 코드를 저장하는 repository(의미 : repository)를 통해 오픈 소스를 공유할 수 있음
Ex) 오픈소스의 예제 : react (페이스북에서 만듦)
2. Github와 내 컴퓨터 사이의 보이지 않는 영역
Github는 플랫폼이기에 당연히 내가 수정하고 작업을 할 수 있는 공간과, Github 내의 공간이 보이지는 않지만 분리되어 있다고 볼 수 있다. 정확한 명칭을 사용해서 표현하자면 아래와 같이 표현할 수 있다.
각각의 영역에 대한 명칭과, 영역 간에 파일을 이동할 수 있는 명령어를 통해 Github를 다양하게 활용할 수 있다.
이 글에서는
1) 영역에 대한 설명
2) Git의 주요 용어
3) 영역 간에 파일을 이동할 수 있는 주요 명령어
를 정리해보고자 한다.
3. Git 활용
1) Git의 기능
1. Branching and Merging
1) Branching(가지) : 가지를 새로 만드는 작업
2) Merging : 가지를 합치는 작업
2. Distributed ( 분산시스템 )
1) Remote repository(in github) : github 내의 저장소
2) Local repository : 나의 컴퓨터의 저장소
2) 내 컴퓨터와 github 사이의 영역
작업을 하는 나의 컴퓨터와 github 사이에는 크게 working area, staging area, git repository 등으로 나눌 수 있다.
working area는 말 그대로 작업을 하고 있는 내 컴퓨터 영역 자체를 의미하며, git repository는 아래서 더 설명하겠지만 git 내의 저장소를 의미한다. 특별히 관심을 가져야하는 영역은 staging area이다.
[Staging Area]
- 의미 : 충돌을 해결하거나 이전에 '버전관리를 선택적으로 하기 위해' 만들어진 임의의 공간
- commit 대가 상태. 임시저정과는 다른 의미.
- 특징 : 여기서 부터는 github의 관리를 받음, Commit이 가능해짐.
- How to? Git add라는 명령어를 통해 올릴 수 있음. (working directory -> staging area)
* commit에 대해서는 아래 '주요용어'에서 설명하고자 한다.
3) GIt의 주요 용어
: Repository, Branch, Commit
1. Repository
: 영어 단어의미 자체처럼 '저장소'를 의미함. 코드의 모든 변경사항을 담고 있음.
: 크게 github 내의 remote repository와 작업자의 컴퓨터인 local repository로 구분해서 생각해볼 수 있음.
2. Branch
: 각각의 개발단계 따른 소스들의 기록(log)라고 할 수 있음.
- Master branch : 사용자(end user)들에게 직접 배포하는 최종 소스들의 집합
- develop branch : 개발 중인 버전의 소스코드. 여기서 충분한 테스트와 버그점검을 통해 Master branch에 merging
- feature branch : 하나하나의 기능을 담고 있음.
- 필요에 따라서 hotfix와 release branch도 만들 수 있음.
※ Master <- hotfix <- release <- develop <-feature
: 위로 갈 수록 안정성(stability)이 더 높다고 할 수 있음.
3. Commit
- 의미 : local repository에 변경사항을 기록하는 명령어.
- 목적 : 가 수정한 변경사항을 메시지로 기록하고 변경사항을 확인하고 관리하기 위함.
- 명령어 : git commit -m '메세지'
[기타 관련 명령어]
*출처 : https://www.git-tower.com/learn/git/commands/git-commit
|
4) 주요 명령어
4-1 ) 파일들을 영역 간에 이동 및 복사하는 명령어
: fork, clone, commit, pull, push
Upstram : local 기준에서 상위에 있는 repository의 소스. Master branch나 remote repositoy에서 변경된 사항들을 local에 바로 적용하는데 upstream을 활용하면 유용함.(pull 명령어 사용하기) |
4-2) Git repository의 현재 상태 및 변경사항을 확인할 수 있는 명령어
- status : 파일의 상황 확인. 수정된 파일을 확인할 수 있음.
- diff : 변경사항 확인
- log : 변경 기록들의 모음
4-3) Commit되지 않은, staging area에 있는 파일 수정
참고 : https://git-scm.com/book/en/v2/Git-Basics-Undoing-Things
- reset HEAD <file> : staging area에 있는 파일을 working area로 내리고 싶을 때
- checkout -- <file> : 변경된 파일이 있으나 그 파일 자체를 적용하고 싶지 않을 때
cf) staging area에 있는 파일의 commit을 수정하고 싶을 때 : --amend