TigerCow.Door


안녕하세요. 문범우입니다.

이번 포스팅에서는 github에서 특정 repository에 대해 branch를 생성하고 이를 바탕으로 작업을 시작하는 방법에 대해서 알아보도록 하겠습니다.



1. branch 생성하기


branch 라는 것은 직역하면 나뭇가지로써, 실제로 현재 존재하는 repository에서 뻗어나온 가지와 같은 것으로 생각하시면 됩니다.


개발 영역을 분담해서 작업할 때, 서로 작업하는 내용들에 대해 충돌 등의 예방 및 관리들을 위해서 중앙 repository 또는 개별 branch 자체에서 branch를 생성해, 기존에 있던 내용을 그대로 따와 그것을 바탕으로 개별적인 작업을 할 수 있습니다.


먼저 branch를 생성하는 것부터 진행해보도록 하겠습니다.


현재 github과 연결되어 있는 프로젝트의 폴더로 들어가 아래와 같이 명령어를 입력합니다.


1
$ git branch branch_making_test
cs


해당 명령어를 입력해도 아무 결과가 나오지 않지만,


1
$ git branch
cs


위의 명령어를 한번 더 쳐서 확인해보면 아래 사진과 같이 master와 branch_makig_test 의 두개 항목이 있는 것을 볼 수 있습니다.


git branch 라는 명령어는 현재 branch가 어떠한 것들이 있는지 알려주는 명령어 입니다.

그리고 앞에 있는 * 의 의미는 현재 선택되어 있는(가리키고 있는) branch를 이야기하는 것 입니다. 현재 master branch를 가리키고 있기 때문에 이를 변경해보도록 합니다.

(위와 같은 화면에서 나가기 위해서는 q 한번 또는 두번을 눌러줍니다.)



2. branch 변경하기


branch를 변경하기 위해서는 checkout이라는 명령어를 사용합니다.


1
$ git checkout branch_making_test
cs


위와 같이 입력하면 branch_making_test라는 브런치로 변경되었다는 결과가 뜨고 git branch 명령어를 확인해보면 이전과 달리 branch_making_test의 앞에 *가 쳐져있는 것을 확인할 수 있습니다.


그리고 다음 명령어를 통해 앞으로 push/pull을 할때 새로 만든 브런치를 원격저장소를 사용하도록 지정합니다.


1
$ git push --set-upstream origin branch_making_test
cs



3. branch 삭제하기


현재 우리의 branch는 우리의 로컬 저장소에도 세팅이 되어있고 github이라는 원격저장소에도 세팅이 되어 있습니다.(push를 했다면..)


먼저 로컬 저장소에서 branch를 삭제하는 방법은 간단합니다.

checkout 명령어를 통해 삭제할 branch가 아닌 다른 branch로 이동을 하고 아래의 명령어로 branch를 삭제합니다.


1
$ git branch -d branch_making_test
cs


이렇게 하면 git branch 의 명령어로 확인해보았을때 해당 branch가 정상적으로 삭제된 것을 확인할 수 있습니다.

하지만 github과 같은 원격 저장소에는 아직 branch가 삭제되지 않았습니다.

원격저장소에서도 이를 삭제시키기 위해서는 다음과 같은 명령어를 입력합니다.


1
$ git push origin :branch_making_test
cs


위의 명렁어를 입력하면 해당 branch가 삭제되었다는 결과가 뜨고 실제로 github에서 확인해보았을 때 해당 branch가 삭제된 것을 확인할 수 있습니다.



4. 새로운 branch를 따서 작업하기


위에서 배운 것들을 응용해서, 우리가 github에 올려두었던 프로젝트를 그대로 가져와 새로운 branch에서 작업을 진행해보도록 하겠습니다.


1. 먼저 기존에 올려두었던 github의 프로젝트를 clone 하여 가져옵니다.

1
$ git clone <repository 주소>
cs


2. 이후 명령어창을 통해 git branch를 새로 만듭니다.

1
$ git branch <새로운 branch >
cs


3. checkout 명령어를 통해 branch를 이동합니다.

1
$ git checkout <새로운 branch >
cs


4. 원격 저장소에 해당 branch에 대한 정보를 업데이트 합니다.

1
$ git push --set-upstream origin <새로운 branch >
cs


이후 처음에 clone한 원격저장소로 가서 확인해보면 새로운 branch가 생긴것을 볼 수 있으며 해당 폴더에서 작업을 하시면서, 이전과 같이 커밋과 푸시를 진행하시면 해당 branch에 수정사항이 적용되는 것을 확인할 수 있습니다.

블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc


안녕하세요. 지난 포스팅에서 commit이라는 기능을 통해 버전을 만들어 보는 과정을 살펴보았습니다.

이번에는 우리가 만들었던 버전들을 확인하고 과거의 버전들과 비교해보는 과정을 살펴보겠습니다.


1. 과거 버전 확인하기


먼저 과거에 우리가 어떤 버전을 만들었는지 확인해봅니다.

지난 포스팅에서도 중간중간에 쓰인 명령어 입니다.


git log


를 입력하면 아래 사진과 같은 결과가 출력됩니다.



위의 사진을 살펴보면 아래에서 시간순으로 우리가 진행했던 커밋이 나타납니다.

첫번째 커밋에서는 커밋 메세지를 'commit test'로 진행을 했습니다.

그리고 노란색으로 나와 있는 commit뒤의 내용은 commit ID라고 합니다. commit ID는 뒤에서 사용되니 일단 알아두도록 합시다.


이렇게 과거에 우리가 작성한, 만들어낸 버전들을 확인할 수 있습니다.



2. 과거 버전 비교하기 (1)


그런데 각각의 버전들이 코드상에 어떠한 변화를 주었는지는 어떻게 확인할까요?

바로 아래의 명령어를 통해 확인할 수 있습니다.


git log -p


위의 명령어를 입력하면 아래와 같은 결과가 출력됩니다.



아까 git log 명령어를 입력했을때와는 좀 다른 모습이죠?

해당 결과에서는 새로운 버전 관리(commit)으로 인해 코드상에 어떠한 변화가 있는지 까지 살펴볼 수 있습니다.

먼저 맨 아래, commit test 부터 간략히 살펴보겠습니다.


--- /dev/null 에서 맨 앞에 있는 ---은 이전의 버전에 대한 것을 말합니다. 즉, 해당 문장은 이전의 버전에서 아무것도 존재하지 않았다는 것 입니다.

+++ b/f1.txt 에서 맨 앞의 +++는 새롭게 관리된 버전에 대한 것을 말합니다. 즉, 해당 문장은 f1.txt에 대한 변화가 생겨났다는 의미입니다.

그리고 그 아래를 보면 +we study git+12345 라는 문장이 있습니다. f1.txt에 두 문장이 추가(+)되었다는 것을 의미합니다.


그리고 그 위의 버전 관리(commit)을 확인하겠습니다.

이전 버전에 대해 변화가 생긴 파일은 f1.txt파일이며 새롭게 관리된 버전에 대한 변화 또한 f1.txt에서 발생합니다. 그리고 +it changed!!! 를 통해 it changed!!! 라는 문장이 추가되었음을 알 수 있습니다.


좀 더 변화를 주고 확인해볼까요?


f1.txt를 아래와 같이 수정합니다.



그리고 새로운 버전을 생성합니다. 커밋 메세지는 3th commit이라고 하겠습니다.

그리고 좀 전과 같이 git log -p 명령어를 입력합니다.



위와 같은 결과가 출력되네요.

아래 두개의 커밋에 대해서는 위에서 살펴보았으므로 가장 최근, 제일 위에 있는 3th commit에 대해서 살펴봅니다. 코드가 변화된 내용을 보면, -12345, +here was number... 가 있습니다. 12345는 지워졌다는 의미이고 새롭게 here was number... 가 추가되었다는 의미입니다.



3. 과거 버전 비교하기 (2)


우리가 방금 알아본 방법에서는 연속된 버전들에 대한 비교만 가능하였습니다. 그런데 맨처음 버전과 3번째 버전의 비교를 하려면 어떻게 할까요?

이럴때는 각 커밋에 대한 commit ID를 필요로 합니다.

commit ID는 위에서 잠깐 말씀 드렸는데 git log 또는 git log -p 를 입력했을때 각 커밋에 대한 내용중 commit 뒤에 입력되어져있는 긴 문자열을 말합니다.


예를 들어 아래 사진에서 빨간 줄 쳐진 것들을 이야기합니다.



그리고 위의 사진에서 빨간줄 쳐진 두개의 commit ID를 이용하여 첫번째 버전과 세번째 버전에 대한 비교를 진행해보겠습니다.

명령어의 기본 형태는

git diff "commit ID1".."commit ID2"

입니다.


따라서 저는 다음과 같이 입력하겠습니다.


$ git diff b85cef55b135b541e2d91e9f34be8dff142fce04..7e9b25fae69d96c30fa400ad914f7b6aaad78dc0


이에 대한 결과는 아래 사진과 같습니다.

내용에 대한 설명은 위에서 언급한 것들과 비슷하므로 넘어가도록 하겠습니다.




4. 현재 수정 중인 것과 비교하기


git 에서는 또 다른 기능이 있습니다.

지금 작성 중인, 수정 중인 것에 대해서 제일 최근의 버전(commit)과 비교하는 것입니다.

이를 확인하기 위해 f1.txt를 다음과 같이 수정합니다.



그리고 git add 또는 git commit을 진행하지 않고 바로 아래 명령어를 입력합니다.


git diff


그럼 다음과 같은 결과가 출력됩니다.



위에서 git log -p 를 입력했을 때와 비슷한 내용이죠?

git diff 명령어는 현재 수정중인 파일들, 즉 add를 하지 않은 것들에 대해서 가장 최근의 버전과 비교를 하는 명령어입니다.

git diff 를 통해서 git add 및 git commit 을 하기전에 내가 수정한 코드에 대해 확인할 수 있습니다.


이렇게 해서 과거의 버전 또는 현재 수정하는 것들에 대한 비교를 진행해보았습니다.

위에서 학습한 방법들을 통해 각각의 버전들에 대한 차이점을 인지하고, 만약 프로그램에서 갑작스런 오류가 발생했을때 어떤 버전에서 잘못된 것인지 잡아낼 수 있습니다.


블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc


이번 포스팅에서는 git 에서 버전을 생성하기 위한 commit에 대해서 실습을 진행해보겠습니다.

git add와 git commit 에 대해서 헷갈리실 수도 있는데, 하단에서 간략하게 그림으로 설명을 진행하였습니다.


1. 사용자 등록


먼저 버전을 만들기 전에 사용자를 등록해야 합니다.

말 그대로, 버전을 만드는데 어떤 사용자가 만들었는지를 표시하기 위함입니다.

사용자 등록 명령어는 아래와 같습니다.


git config --global user.name "이름"

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


이러한 명령어로 사용자 등록을 하면 아래 사진과 같이 됩니다.



사용자 등록은 한번만 해주시면 되겠습니다.



2. 버전 생성(commit)


이제 진짜로 버전을 생성해보도록 합니다.

git 에서 버전을 생성하는 것은 커밋(commit)이라고 합니다. 그리고 각 커밋을 실행할때는 해당 커밋이, 해당 버전이 어떠한 것을 하였는지 커밋 메세지를 남겨야 합니다. 주로 어떤 기능이 변경되었는지, 무엇을 추가했는지 간략하게 남깁니다.

명령어는 아래와 같습니다.


git commit -m "커밋 메세지"



커밋을 하면 위의 사진과 같이 뜨게됩니다.

지금까지 진행된 커밋을 확인하기 위해서는 아래 명령어를 입력합니다.


git log




커밋을 몇번 더 해보도록 하겠습니다.

그럼 코드를 먼저 수정해볼게요. vim f1.txt 명령어를 실행해서 파일을 수정합니다.



위와 같이 f1.txt를 수정하였습니다. vim 에디터에서 내용을 입력하기 위해서는 i 버튼을 눌러줘야하는 점 잊지마세요.


그리고 파일 변경을 확인하기 위해서, git status 명령어를 입력합니다.



아직 git add를 안해주었네요. 변경된 f1.txt 파일을 대상으로 등록해야 합니다.

따라서 git add f1.txt 명령어를 입력하고 git status를 통해서 다시 확인합니다.



변경된 f1.txt 파일이 대상으로 등록이 잘 되었습니다.

다시 한번 버전을 생성해볼게요. 즉, 커밋을 진행해보겠습니다.

이번에 커밋 메세지는, 'second commit' 이라고 하겠습니다.



커밋을 하고 git log를 통해서 확인해보니 첫번째 커밋기록과 함께 나타납니다.

이렇게 해서 버전 생성까지 진행해 보았습니다.


그런데, add 와 commit 도대체 무슨 차이일까? 너무 헷갈려! 하시는 분들도 계실 것 같은데, 간략하게 그림으로 정리해보면 다음 사진과 같습니다.



먼저 우리가 작업을 하다가, git add f1.txt 를 하는 것은 f1.txt 파일을 stage area라는 공간에 옮겨 놓는 것과 같습니다.

stage area는 commit 하기를 기다리는, 대기하는 녀석들이 모여 있는 곳 입니다.




그리고 우리가 git commit -m "커밋메세지" 를 실행하면 stage area에 있던 녀석들이 커밋 메세지로 버전이 생성되며 이 버전이 git repository에 옮겨지는 방식입니다.



이렇게 해서 버전 생성, 커밋(commit)을 진행해보고 add와 commit 의 차이점을 간략하게나마 알아보았습니다.

추가적으로 궁금한점이나 오류가 발생하시는 분은 언제든 댓글을 남겨주세요 :)

블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc