일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- dfs문제
- sort
- BFS
- tinyml
- MCU 딥러닝
- 그리디
- 코테
- tflite
- 코테 문제
- TensorFlow Lite
- 초소형머신러닝
- dfs
- 삼성코테
- 자료구조
- 다이나믹프로그래밍
- 삼성코딩테스트
- 삼성역테
- bfs문제
- 영상처리
- 딥러닝
- 알고리즘
- 포스코 교육
- 포스코 ai 교육
- 삼성역량테스트
- DP문제
- 컴퓨팅사고
- 코딩테스트
- 포스코 AI교육
- 임베디드 딥러닝
- DP
- Today
- Total
코딩뚠뚠
Git 개념 및 사용법 1 본문
개발에 관심이 있는 사람이라면 대학교 저학년 학생이어도 한 번쯤 들어보았을 이름 Git, Github이다.
Git 은 형상관리도구 이다. (예전에는 SVN을 많이 썼다고 하는데.. 요즘은 Git이 널리 쓰인다.)
형상관리라는 말을 풀어보자면 Version Control, Revision Control, Software Configuration Management으로,
쉽게 말하면 소스 코드의 버전을 관리하는 도구이다.
우리는 이를 통해서 개인의 소스코드를 안전하게 보관하고 관리할 수 있으며, 대규모 프로젝트에서의 의미는 이를 통한 협업이다.
그러면 아래 본문을 통해 Git에 대해 자세히 알아보자.
Git과 Github
Git을 들어보신 분이라면 Github 도 역시 들어보셨을 것이다.
아니 아마 Github를 먼저 알고 계실 수도 있다.
Git과 Github는 커피와 카페의 관계라고도 생각할 수 있다.
Git은 로컬 (local = 내 컴퓨터)에서의 버전 관리 시스템이고, (소스코드, 변경이력 등이 저장됨)
Github은 그 소스코드의 클라우드 저장소 이름이다. (정확히는 소스코드보다는 Git 저장소이다.)
즉 Git 이라는 커피의 존재와 이름은 변하지 않지만, 카페의 이름이 다양한 것처럼 클라우드의 이름은 Github 외에도 GitLab 등이 존재한다.
Git을 사용하는 것의 장점
- 같은 파일에 대한 각기 다른 버전을 보관할 수 있다.
따라서 만약에 이번에 배포한 코드가 만약 에러로 인해 실행되지 않는다면 다운그레이드가 가능하다.
- 하나의 프로젝트를 여러 사람과 함께 효과적으로 관리할 수 있다.
협업에의 의미로써 여러 명이 병렬적으로 개발할 수 있고, 이는 프로젝트 개발 속도를 빠르게 해 준다.
- 포트폴리오 관리에 용이하다.
작업한 내용을 시각적으로 나타내 주기 때문에 나를 어필하기에도 좋다. (난 아직 멀었다)
위와 같이 commit 이력을 나타낼 수도 있는데 commit 한 내용이 많을수록 진한 녹색이 된다.
매일 같이 코딩을 하며 실력을 쌓고, 자신을 어필하기 위해 1일 1 커밋을 하는 개발자들이 많은데 그렇게 되면 아래와 같이 빽빽한 초록창을 만들 수 있을 것이다.
참고로 이 초록색들의 향연을 잔디밭이라고도 부른다. (채워가는 재미가 있다.)
Git 동작 개념
아래의 이미지로 간단하게 깃의 개념을 설명할 수 있다.
용어 설명
Local PC : 우리가 사용하고 있는 컴퓨터
Remote Server : 원격 저장소
Working Directory : 우리가 사용하고 있는 컴퓨터의 작업 디렉토리
Staging Area : 깃은 소스코드가 변경되는 사항들을 모두 파악할 수 있다. 변경사항들을 add 시켜준다면 코드와 이력들이 이곳에 올라가게 된다.
Local Repository : Commit을 하게 되면 원격 저장소에 올라가기 전 최종적으로 우리의 컴퓨터에 저장되는 공간이다.
Remote Repository : 클라우드에 있는 레포지토리이다.
당연히 아직 감이 오지 않을 수 있다.
내 컴퓨터에서 올리는데 과정이 왜 이리 많지? 그래서 이걸 가지고 협업을 어떻게 하겠다는 건데?
이는 가장 기본적인 방식으로 본격적인 대규모 프로젝트의 협업을 위해서는 더 많은 용어의 설명이 필요하지만 이번 포스팅에서는 소규모, 개인 프로젝트일 경우만 소개하겠다.
그래서 실제로 어떻게 사용하는 건데?
- 소규모 협업 및 개인 프로젝트 관리
Git을 설치하는 과정은 따로 싣지 않겠다.
우선 git 설치 후 github 계정을 만들고 내 Repository를 새로 만들거나 협업자의 Repository로 들어간다.
그 Repository로 들어가게 되면
1. git clone
위와 같은 곳에 Code가 있을 것이다. Code를 누르면 주소가 뜨는데 이를 Clone (복제) 해 올 것이다.
물론 협업을 할 때 내가 collaborator 가 아니라면 Clone 해와도 프로젝트에 기여할 수 없을 수 있지만, 이번 포스팅에서의 가정 상황은 소규모 개발에서 내가 collaborator 일 때, 그리고 내 프로젝트 일 때이다.
콘솔 창에 아래와 같이 입력해준다.
git clone <code눌렀을때 나오는 주소 입력>
clone을 해 오면 Github에 있는 Repository명이 생기면서 이제 나와 클라우드 서버가 연결되었음을 알 수 있다.
이제 해당 Repository에서 소스코드를 생성 및 수정해보자.
2. git add
코드를 모두 수정했고 내가 수정한 내용을 저장소에 올려 이력을 저장하고 싶거나, 다른 팀원에게 공유하고 싶을 때는 어떻게 해야 될까
git add <파일/디렉토리 경로>
git add.
git add -A
첫 번째 명령은 Staging Area에 올리고 싶은 부분만 add 할 때 쓰는 명령어이다.
. 옵션은 현재 디렉토리의 모든 내용을 Staging Area로 올리고 싶을 때 쓰는 명령어이다.
-A 옵션은 내가 수정한 내역, 소스코드들을 모두 add 하는 명령어이다.
3. git commit
커밋이라고 부른다.
add 명령어로 staging area에 올라온 소스코드들을 Local Repository에 추가할 수 있다.
이때 옵션을 주어 commit message 도 작성할 수 있다.
git commit -m "A.c 에 프린트 기능을 추가하였습니다."
이렇게 내 Local Repository에는 변경이력이 원만히 올라갔다.
4. git push
이제 내 컴퓨터의 Repository 에만 머무르는 게 아니고 이걸 Github에 올리고 싶다.
말 그대로 Github 즉 remote repository에 push 해줄 것이다.
git push origin master
위 명령어로 remote서버에 변경이력을 올릴 수 있다.
이제 Github의 해당 레포지토리로 가서 새로고침을 해보면 내가 수정한 소스코드가 반영되었음을 볼 수 있다.
origin 이란 : Remote 서버의 이름이다. 즉 Github에 올라가 있는 Repository의 관례적인 이름이다.
master 란 : 기본적으로 생성되는 branch의 이름이다.
이 두 개념은 다음 포스팅에서 branch 의 개념에 대해 알아볼 때 다뤄보도록 하자.
5. git pull
내가 push 해서 소스코드를 만들었는데 다른 작업자가 코드가 잘못됐다며 자신이 수정해서 다시 올렸다고 한다.
이를 받아서 실행해보려면 이를 다운로드하여야 할 것이다. 저장소를 다시 clone 한다? (X) pull 해온다 (O)
git pull origin master
이를 통해 origin이라는 내 remote server의 내용을 local의 master branch로 가져올 수 있다.
가져와서 다시 수정하고 add commit push 과정을 무한 반복하며 사용할 수 있다.
origin, branch 등의 생소한 용어가 잘 이해가 가지 않을 수 있다. 이는 다음 포스팅에 설명한다.
추가 내용
push pull 등 github remote에 접근하는 경우 id를 입력하라는 창이 뜨게 될 것이다.
미리 등록해두어 이 과정을 생략하는 방법이다.
git config --global user.name "이름"
git config --global user.email "이메일"
이렇게 가장 기본적인 git의 개념을 알아볼 수 있었고, 간단한 명령어들로 git을 사용할 수는 있게 되었다.
다음 포스팅에서 조금 더 심화된 과정을 알아보도록 하자
'공부 > 기타' 카테고리의 다른 글
딥러닝, 데이터분석 pandas 기본사용 (0) | 2021.04.06 |
---|---|
파이썬 self와 __init__ 에 대해 (0) | 2021.04.05 |
Git 개념 및 사용 2 (0) | 2021.02.07 |
docker 개념과 기본 사용 (0) | 2021.02.04 |
Call by [value & reference] (0) | 2021.01.10 |