Idealim
article thumbnail
Published 2021. 7. 18. 18:28
[Git] Git/GitHub이란? Dev env/Git

/* 본 게시물은 '[Git은 뭐고 Github는 뭔가요?], [가장 쉬운 Git 강좌 - (상) 혼자작업편]

' 의 내용을 토대로 작성되었습니다. */

참고 자료

[Git은 뭐고 Github는 뭔가요?] : https://www.youtube.com/watch?v=Bd35Ze7-dIw 

[가장 쉬운 Git 강좌 - (상) 혼자작업편] : https://www.youtube.com/watch?v=FXDjmsiv8fI

위 영상을 한 번 보면 쉽게 이해할 수 있을 것이다 강추!!


#Git/GitHub 란?

Git은 버전관리를 위한 소프트웨어고, Github은 이 Git으로 원격전송된 프로젝트들이 저장되는 공간을 제공하는 서비스이다. 이 말이 어려우면, Git이 영상 찍는 앱이고 Github은 유튜브라고 생각하면 편하다. 내가 Git으로 관리하는 코드들과 프로젝트들을 얼마든지 Github에 무료로 올릴 수가 있다.

 

 
 

오픈소스란 말 그대로 코드가 다 공개된 소프트웨어 프로젝트이다. 전세계 사람들이 Github에 올려진 코드들을 볼 수 있기 때문에, 잘못된 부분을 수정하거나 더 좋은 기능을 구현하는 코드들을 지구 반대편의 뛰어난 프로그래머들에게 제안 받을 수도 있고, 또 내가 남의 프로젝트에 기여할 수도 있다. 잘 알려진 오픈소스 프로젝트에 내 코드가 기여한 기록이 있으면 자기만족도 있겠지만 취업할 때 강력한 플러스 요인이 되기도 한다. 이런 과정들 속에 멋진 프로젝트들이 만들어지고 발전하는 곳이기 때문에 Github은 자유 소프트웨어, 오픈소스의 성지라고 불리기도 한다. 지금 당장 Github에 접속하셔서, 세계 곳곳의 뛰어난 프로그래머들이 작성한 수많은 코드들을 직접 살펴보실 수가 있다.

#Git/GitHub은 왜 사용할까?

1. 버전 관리

어떤 기능을 추가한다고 가정해보자. 항상 완벽하게 코딩할 수 없기에 나는 기존의 파일을 오늘 날짜로 백업을 하고 코드 수정을 진행한다. 그러다 오류가 계속 발생하여 정상적으로 실행되던 앱이 오류가 발생한다. 이를 해결하다가 도저히 안돼서 프로젝트를 이전 시점으로 돌아갈 필요가 생긴다. 이 때 파일을 백업하기 위해 백업 폴더를 보니 오늘 날짜의 최종/ 진짜 최종/ 진짜 최종최종 버전 같이 여러개의 백업파일이 존재하는 것이다. (백업 파일이 많다보니 용량 증가는 덤)나는 어떤 파일로 돌아갈 것 인지 혼란스러울 수 밖에 없다. 이를 해결하기 위해 git이 등장했다.

 

정리해보자. 소프트웨어를 개발하고 운영하는 과정에서 코드를 계속해서 더하고 빼고 수정을 한다. 우리는 git을 이용해 현재 시점의 파일들을 저장할 수 있고 과거 시점의 파일들을 확인하고 가져올 수 있다. 즉, git은 타임머신의 역할을 해준다.

또한, 가지치기, 분기(Branch)가 가능하다. 추가 되는 코드는 이 메인 브렌치에서 작업하고 시도를 해 볼 부분은 다른 브랜치에서 작업하다가 이거 괜찮다, 적용해도 되겠다 싶으면 합쳐버리면 된다.

 

2. 협업의 유용성

어느 정도 규모가 있는 프로젝트는 다수의 개발자들이 함께 협업하여 개발한다. 여러 개발자들이 자기가 만든 기능들을 테스트하기 위해서는 프로젝트 파일이 필요하다. 개발자들은 프로젝트 폴더를 자기 컴퓨터에 복사해서 작업을 하게 된다. 이 때 프로젝트 폴더들을 계속해서 메일로 공유하거나 하면 파일들이 우호죽순처럼 섞이는 등 혼란이 올 것이다. 

git을 이용하면 프로젝트를 다른 사람과 쉽게 공유하고 누가 언제 어떻게 코드를 추가하고 수정했는지 확인이 가능하다. 


#Git/GitHub 사용해보기

우선, Git을 잘 사용하기 위해서는 커맨드 명령어를 알아두면 좋다.

관련글

명령 프롬포트(CMD) 기본 명령어 모음 : https://sosobaba.tistory.com/194

1. git 사용해보기

이제 본격적으로 git을 사용해보자.

$cd <폴더 명> // 해당 폴더로 이동
// 처음 시작
$git -init // .git 폴더를 생성
$git add -A // 폴더 안에 있는 모든 파일들을 선택 .git 폴더에 저장
:wq // 저장

// 캡슐 생성
$git commit -m "(작업수행 내용)" // 폴더의 전체 내용이 박제됨.

// 분기 만들고 합치기
$git branch "(브랜치명)" // 새로운 브랜치 생성
$git checkout "(브랜치명)" // 해당 브랜치로 이동
$git checkout master // 
$git merge "(브랜치명)" // 메인 브랜치에 결합 merge 하기전에 자기가 합치려는 브랜치로 이동

$git rebase // 브랜치를 일렬로 만듬.
// 과거 내역 확인 및 돌아가기
$git log // history(캡슐)들을 가져옴
$git status // 변경 내용들을 확인할 수 있음
$git reset (돌아갈 시점 log 앞 6자리) -- hard // 완전 삭제
$git revert (취소할 시점 log 앞 6자리)
  • $git commit 을 여러번해도 변경사항들만 저장해 용량의 차지 X.
  • 과거로 돌아갈 때는 현재까지의 박제 내역(commit을 실행한 시점)을 확인한 다음 과거의 상태로 돌아갈 수 있다.
  • 그럼 과거로 돌아가고 남은 파일은 삭제되는가? 삭제되지만 자기가 원한 다면 삭제 전으로 다시 돌아갈 수 있다.
  • 브랜치를 만든다는 것은 평행우주를 만든다는 것과 같다. 

2. github 사용해보기

// Github에 생성한 레포지토리를 프로젝트의 원격으로 추가
$git remote add (원격명) (Github 레포지토리 주소)
$git remote add origin <Github 레포지토리 주소> // origin이라는 원격저장소 연결
// 원격 레파지토리 확인
$git remote
//Github에 commit 내역 업로드
$git push -u origin master // origin이라는 원격저장소에 master 브랜치 추가 만약 원격저장소에 브랜치가 없을 경우 추가함.
$git push // 두 번째 부터는 git push만 입력해도됨

//소스트리에서 원격 저장소 연결 및 저장 하는 방법
// 저장소 > 원격저장소 추가 > 원격이름/Github 레포지토리 주소/Github 유저이름 추가 > push 버튼 클릭 뒤 원하는 브랜치 선택

// gitHub에 올리면 안되거나 올릴 필요 없는 파일들
// .gitignore 폴더를 생성하고 올리면 안되는 파일 이름 추가

// 협업
// github repository로 접속 -> setting -> collaborate로 초대

// github에 있는 프로젝트를 새로 내려받기
$git clone <Github 레포지토리 주소> 
//원격 브랜치의 커밋 상태 (새 업데이트 내역 확인)
$git fetch
// Github에서 새로 업데이트된 내역 받아와 적용
$git pull (원격명)(원격브랜치명)
$git pull origin master

// 브랜치명 만들고 원격에 추가하기
$git checkout -b my-brench // my-brench를 만들고 이동
$git push origin my-brench // github에 my-brench라는 브랜치 추가

$git checkout -b my-idea origin/my-brench // 서버 / 로컬에서 이동
//브랜치 / 원격 브랜치 제거 방법
$git branch -D my-brench
$git push -d origin my-brench
 

 

 

 

 

 

반응형
profile

Idealim

@Idealim

읽어주셔서 감사합니다. 잘못된 내용이 있으면 언제든 댓글로 피드백 부탁드립니다.