티스토리 뷰

728x90

 오늘은 지난 포스팅 <7. 리눅스 깃 Git 초보를 위한 정리와 실습 (1/2)>에 이어서 깃 관련 실습을 더 진행해보겠습니다! 시작하기에 앞서 이전에 해왔던 깃 커밋에 관련된 기록을 확인해봅시다.

git log

맨 밑에서부터 first_init -> myapp.c is added -> myfuncs.h is added 시간 순서대로 커밋 메시지를 확인할 수 있습니다.

우리는 이제 checkout 관련 실습을 해보겠습니다.

14. checkout 예전 상황으로 다시 돌아가기

git checkout 4de2
#git checkout [hash]

git log에서 노란색 글씨로 적혀있는 commit 4de2411~~~ 이부분에서 우리는 커밋 해시를 알 수 있습니다. 이 해시를 이용해서 이전 상황으로 돌아가봅시다.

ls 또는 tree 명령어를 실행해보면 myfuncs.h가 아직 생성되지 않은 것을 확인할 수 있습니다.

 

15. 다시 원상복구 하기

만약 myfuncs.h가 생성된 상태를 다시 불러오고 싶다면, 

git reflog를 통해 myfuncs.h가 생성된 커밋 해시(e06862d)를 얻습니다.

얻은 커밋해시를 이용해 git checkout e06862d 한다면,  

git checkout e06862d

다시 원상복구 할 수 있습니다.

16. git branch 만들기

 branch를 만들어보겠습니다. branch는 기존의 개발 상태에서 다양한 방법을 시도해볼 수 있기때문에 유용합니다. 

 branch에 대해 간단히 설명하자면 기본적으로 깃은 처음에 master 브랜치로 시작합니다. master 브랜치로 열심히 깃 작업을 진행하다보면 개발하는 도중 어떤 시점에 갑자기 다른 버전을 개발하고 싶을 수 있습니다. 이때 원래의 개발을 master 브랜치에 놓고 새로운 브랜치를 만들어 작업할 수 있습니다. 만약에 새로운 브랜치에서 오류가 발생하고 생각했던 방법이 올바르지 않다는 것을 깨달아도 다시 master 브랜치로 돌아갈 수 있습니다. git branch는 다양한 사용자가 개발을 할 때도 이롭게 작용합니다. 프로그램 사이에 충돌을 막을 수 있고 깃 브랜치에서 필요한 부분만 가져와 merge하면 되기 때문에 git branch를 사용하면 효율적으로 프로그래밍할 수 있습니다.

#git branch 만들기
git branch myexp

#git branch 바꾸기 (master -> myexp)
git checkout myexp

#branch 확인
git branch

16. 새로운 branch에서 커밋

myfuncs.c와 myapp.c, myfuncs.h에 zoo() 함수를 추가한 후 커밋합니다.

//myfuncs.c
#include "myfuncs.h"
#include <stdio.h>

void foo(void){
	printf("hello foo\n");
}
	

void goo(void){
	printf("hello goo\n");
}

void zoo(void){
	printf("hello zoo\n");
}
//myapp.c

#include "myfuncs.h"

int main(){

	for(int i=0;i<3;i++){
		foo();
		goo();
	}

	foo();
	goo();
	
	for(int i=0;i<3;i++){
		zoo();
		}

	return 0;
}
//myfuncs.h
#ifndef MUFUNCS_H
#define MUFUNCS_H

void goo();
void foo();
void zoo();

#endif

gedit 명령어를 이용해 파일의 내용을 바꾼 후, gitt add & commit

16. branch 상태 확인

git branch를 다시 master로 바꾼 후 컴파일을 진행해서 커밋한 후에 현황을 살펴봅시다.

#git branch 바꾸기
git checkout master

#컴파일
gcc -c src/myfuncs.c -o obj/myfuncs.o -I./include
gcc -c src/myapp.c -o obj/myapp.o -I./include
gcc -o bin/myapp obj/myapp.o obj/myfuncs.o 

#git add & commit
git add .
git commit -m "modify is completed"

#git branch 현황 살펴보기
git log --oneline --graph master myexp

좌측에 브랜치가 제대로 잘 만들어진 것을 확인할 수 있습니다.

16. branch merge

myexp branch에서 생성한 zoo() 함수를 앞으로 계속 쓰고 싶기 때문에 myexp 브랜치를 master 브랜치에 합쳐보도록(merge) 하겠습니다.

git merge myexp

branch가 잘 merge 된 것을 확인할 수 있습니다.

17. branch delete

myexp branch의 역할이 끝났으니 이제 myexp branch를 지워봅시다.

git branch -d myexp

 

그럼 이것으로 포스팅을 마치겠습니다!! 

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
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
글 보관함