티스토리 뷰
오늘은 지난 포스팅 <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
그럼 이것으로 포스팅을 마치겠습니다!!
'👩🏻💻개발공부 > 리눅스' 카테고리의 다른 글
9. 리눅스 프로세스(Process) 개념 알아보기🔎 (0) | 2022.12.11 |
---|---|
8. 리눅스 시스템 콜 예제로 알아보기(2/2)🔍 (0) | 2022.12.01 |
8. 리눅스 시스템 콜 예제로 알아보기(1/2)🔍 (0) | 2022.12.01 |
M1 맥북에 리눅스 가상환경 설치하기 ( UTM ) + 데스크탑 (2) | 2022.11.29 |
7. 리눅스 깃 Git 초보를 위한 정리와 실습 (1/2) (0) | 2022.11.28 |
- Total
- Today
- Yesterday
- 깃 예제
- 개발일지
- JavaScript
- 스페인
- Signal
- 공룡책
- 자바스크립트
- MySQL
- JS
- Process
- googleapis
- 개발
- SQL
- 프로그래머스
- 백준
- 혼공학습단
- 리눅스
- 혼공
- Linux
- 프로젝트
- 스페인 교환학생
- 운영체제
- AWS
- nodejs
- 혼공단 9기
- 해커톤
- C++
- 혼공단 SQL
- 혼공단
- 교환학생
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |