TIL - Wecode | Git & Github

한성봉·2021년 5월 20일
1

Git & Github

gitgithub 을 알아보고 차이점을 알아보자. 아주 기초적인 작업을 할 때 나는 두개의 차이점을 전혀몰랐지만 오늘로써야 깨달았다. 뭐 같은거 아닌가? 하는 생각이었지만 비슷하지만 다른 개념이었다. 하나씩 알아보자.


Git

Git의 공식 명칭은 분산 버전 관리 시스템 (VCS) 입니다.
쉽게 말해, 프로젝트 파일의 변경 사항을 추적하는 시스템입니다. 이를 통해 개발자들은 프로젝트의 변경 사항을 기록하고, 특정 시점의 버전으로 언제든 돌아갈 수 있습니다. 이런 버전 관리 시스템은 많은 사람들이 효율적으로 함께 작업하고, 프로젝트를 중심으로 협업할 때 사용할 수 있습니다. 각 개발자가 자신만의 프로젝트 버전을 본인 컴퓨터에 갖게됩니다. 나중에 이러한 개별 버전의 프로젝트를 병합하여 기준이 되는 버전의 프로젝트에 적용 할 수 있게 됩니다.
Git은 개인 혹은 팀 간의 프로젝트를 관리하는 데 가장 널리 사용되고 있는 툴입니다. 따라서 Git을 다룰 줄 아는 것은 요즘 모든 개발자들에게 가장 중요한 기술 중 하나입니다.

Git 공식 홈페이지: https://git-scm.com/

Git 설치

Git은 주로 command-line interface (CLI)를 통해 사용합니다.
우리 컴퓨터에 Git이 설치되어있는지 확인해보자. 터미널에서 다음 명령어를 실행하자.

% git --version

버젼확인 하는 명령어이다. 버젼이 출력된다면 설치가 되있는 것이다. 만약 없다면 다음 링크를 통해 각 운영체제의 파일을 설치하자.

Git 설치 링크: https://git-scm.com/downloads

이름 & 이메일 확인

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

github에서 사용하는 이름과 이메일을 확인하는 명령어이다. 만약 지금 하지 않았다면 나중에 commit할 때 입력하는 란이 나온다 그때 해도 무방하다.

Git repository

git을 사용할 때 repository 의 개념을 잘 알아야한다. 프로젝트를 관리하는 저장소정도로 생각하면 되겠다. 일반 문서 작업의 파일을 관리할 때 우리는 폴더를 생성하여 관리한다. 이것을 Git에서는 repository 라고 부른다고 생각하면 되겠다.

Git을 사용함에 있어서 다음의 개념이 정말 중요하다.

  • local repository : 나의 컴퓨터에 저장된 로컬 버전의 프로젝트 저장소
    로컬 환경에서 저장한 프로젝트는 나의 개인컴퓨터에 저장되어 관리되는 환경이다.
  • Remote repository : - Remote repository - 로컬 repository 와는 반대로 내 컴퓨터가 아닌 외부 (일반적으로 원격 서버) 버전의 프로젝트 저장소. 팀에서 작업 할 때 특히 유용합니다. 이 곳에서 프로젝트 코드를 공유할 수 있고, 다른 사람의 코드를 확인할 수도 있습니다. 또, 로컬 버전의 프로젝트와 병합하고, 변경 사항을 적용 할 수 있는 곳입니다.

local 환경을 통해 관리한 프로젝트를 remote를 통해 외부사이트에 commit한다. 그렇게 되면 다른 사람과 공유가 가능해 함께 작업할 수 있다.

지금부터 본격적으로 Git 으로 local환경에 저장하고 remote 저장소에 commit까지 해보자.! 순서대로 하면 쉽게 commit할 수 있을 것이다.

1. Initializing a repository

git init
# wecode라는 이름의 폴더에서 다음 명령어 수행

프로젝트를 관리할 폴더 내에서 다음 명령어를 실행한다.(터미널)
다음 명령어는 해당 폴더에 숨김파일인 .git을 생성하게 되고 해당 폴더(repository)는 추적/관리되게 됩니다. local환경에서 repository를 생성하였다.

2. 파일 생성

seongbong.md

실습을 위해 파일이름이 나의 이름인 md마크다운 문서를 하나 생성하였다.

3. 내용 편집
다음과 같은 내용을 작성하여보자. 의식의 흐름대로 적었다......

vi seongbong.md

다음 사진과 같은 에디터를 여는 명령어이다.

i를 누르면 insert라는 뜻이다. 내용을 작성할수있다. 사진과같은 내용을 작성하고 esc를 누르면 내용이 저장된다. 이후 :wq 를 입력하고 빠져나오자. w: 저장 q: 종료 명령어이다.

4. 상태 확인

git status

위 명령어는 Git으로 작업 할 때 굉장히 자주 사용되는 명령어입니다. 어떤 파일이 변경되었는지, 어떤 파일이 추가되었는지 등을 전부 보여줍니다.

git status 명령어를 통해 Git 으로 관리(추적)되고 있지 않던 파일(들)이 있다면 해당 파일들을 staging area 로 추가해줄 수 있습니다.

모든 파일이 Git으로 관리되고 있는 시점에서는, git status 명령어를 통해 모든 변경사항을 확인할 수 있고, 커밋을 남기기 위해 staging area 로 추가해줘야 합니다.

5. 중간 저장

git add seongbong.md

수정했던 파일을 중간저장하는 단계이다.

6. commit
커밋 해보기.

git commit -m "메세지"

메세지에는 수정한 내용이나 정보를 담으면 된다. ex)기능 추가, 오타 수정 등...

7. git log

git log

git log를 보면 다음과 같은 창이 뜬다. 고유 식별 번호별로 커밋순으로 정렬되있는 것을 볼 수 있다.


Gihub

GitHub은 Git repository를 위한 호스팅 플랫폼입니다. GitHub (및 기타 유사한 플랫폼) 없이도 Git을 사용할 수 있지만 다른 개발자와 같은 프로젝트를 두고 협업하거나 내 코드를 공유하기는 어렵습니다.

개인 local환경에 commit했던 파일들을 깃허브에 올려보자. WEB 블로그 포스팅편에서 깃허브에 new repository를 만드는 연습을 해봤다. 간단하게 한번 더 살펴보자.

Github공식사이트: https://github.com/

  1. 공식사이트에 들어가 new repository를 생성해준다.
  2. url이 만들어지는 것을 확인한다.
    https://ssabooda.github.io/git_practice/
  3. 다음 명령어 실행.
git remote add origin https://ssabooda.github.io/git_practice/

위 명령어는 local환경에 있던 repository를 remote repository에 commit하겠다는 얘기이다.
4. 다음 명령어 실행

git push -u origin master

현재 나의 local repositorymaster branch이다.
branch는 간단하게 말해 각각의 작업 repository라고 보면 된다. 기본 branch가 main인 경우도 있으니 당황하지말자.

내가 local환경에 생성했던 repository의 브랜치는 master 이기 때문에 master를 push해준것이다.

나의 현재 repository의 브랜치를 알고 싶으면 다음의 명령을 사용하자.

git branch

Github에 잘 commit된것을 볼 수 있다. ^^ 이런 식으로 작업마다 버전관리를 하면 될 것같다. !


Git 관련 명령어

branch 생성

git branch <브랜치 이름> # 브랜치 생성
git checkout <브랜치 이름> # 해당 브랜치로 이동

git push

git add . # 현재 폴더 commit 추가
git commit -m "커밋 메시지" # 현재 폴더를 commit
git git push origin feature/crud # 해당 브랜치를 푸쉬

git init 해체

rm -r .git

현재 연결 저장소 확인

git remote -v

git branch 이름 변경

git checkout -b <브랜치 이름>

위 명령어를 통해 숨겨져있는 .git 삭제한다. git local 저장소를 해제하는 명령어이다.


여기까지 Git과 Github를 활용하여 프로젝트의 버전관리를 통해 여러 동료개발자들과 협업하는 환경을 구축하는 방법을 알아봤다. 아직은 어색하긴하지만 금방 친숙해질거 같다. 아니 친숙해져야한다. 👏 터미널에 작업하는것이 정말 재밌다. 뭔가 글씨밖에 없는데 컴퓨터 안의 구조를 파악해서 명령을 주고 행동하게 한다는 것이 정말 재밌는 것 같다.

0개의 댓글