IT수업/GIT

IT 수업 10주차 (1) GIT 다운로드와 기본 작업(만들기, 병합, 충돌해결)

워제하 2024. 2. 23. 12:58

 

 

 

설치한 후 다 next누르면 된다

설치가 다 됐으면 폴더 하나를 만들어서 cmd를 열고 작업하면 된다.

 

● git --version : 버전보기

 

 

< git 최초 설정 >

git config --global user.email "이메일" : 이메일 설정하기

git config --global user.name "아이디" : 사용자 이름 설정하기

git config --global --list : git 설정확인

 

 

 

만들어진 이메일과 아이디는 여기서 볼 수 있다.

 

 

 

 

 

< git 작업하기 >

새로운 폴더를 만들고 cmd 창에 git init을 친다.

 

git init : 워킹디렉토리 만들기 (cmd창에 치면 폴더에 .git 생김)

그러면 .git 폴더가 만들어진다.

 

들어가보면 이렇게 파일들이 들어있다.

 

 

 

새로 파일하나를 만든다.

 

cmd 창에서 git status를 입력하면 commit 되지 않은 aaa.txt파일이 보인다.

 

이 파일을 커밋 해주기 위해서 git add 파일명 (or git add * : 전체 파일 다운로드)을 해주고 git status를 확인해보면 aaa.txt 파일이 커밋 된 것을 볼 수 있다.

 

git add * : 모든 파일들이 Staging area에 올라감

 

 

커밋 메세지를 git commit -m " 메세지" 로 적어준다.

여기서 -m은 메세지라는 뜻이다.

* 겹따옴표로 해야함.

 

git log로 로그를 볼 수 있다.

 

 

새로운 파일 하나 더 만든다.

 

git add * 해주고 git commit -m "메세지"를 한다.

git commit -m "bbb.txt added"

 

그리고 git log --oneline해준다.

git log --oneline : 로그를 한 줄로 보여줌

 

 

 

 

< 리셋하기 >

리셋은 --soft --hard가 있다.

--soft : head와 branch만 이동하므로 돌아가더라도 작업한 현재 내용들이 그대로 남아있다.

--hard : 현재 작업했더 내용을 싹 다 날릴 수 있기 때문에 조심해야 한다.(작업이 없고 돌리고 싶을 때 사용하면 됨)

 

지금은 --hard를 사용할 것이다. --hard 하면 해당 위치로 돌아가게 된다.

즉, --hard f92a360 했기 때문에  aaa.txt 만 남기고 다 사라진다.

 

 

git reflog : 작업의 레퍼런스 로그 보여줌. 이전에 head가 가리키고 있던 내용전부를 기록함

 

여기서 --hrad 2812f2a 로 ccc.txt파일을 만든 시점으로 돌아 가면 다시 bbb.txt와 ccc.txt 파일이 돌아와있는 것을 볼 수 있다.

 

 

 

 

이번에는 --soft를 사용해본다.

ddd.txt파일을 새로만들고 commit 해준다.

 

aaa.txt 파일을 만든 시점으로 reset --soft하면 나머지 파일들이 살아있는 것을 볼 수 있다.

 

git restore --staged 파일명 : Staging Area 에 올라간 파일을 다시 Unstaging시켜 빼낼 수 있다.

 

빼낸 후 commit 하면 ccc.txt와 ddd.txt파일이 

-m 은 메세지라는 뜻

 

 

 

 

< branch > 

git branch : 현재 작업 위치 보기

* : 현재 작업 브랜치 표시

 

git brach 브랜치명 : 브랜치 생성

 

 

git switch 브랜치명 : 작업위치 바꾸기

 

 

 

dev로 위치를 바꿔 bbb.txt파일과 eee.txt을 커밋해준다.

 

 

그러면 이렇게 로그를 확인 할 수 있다.

 

 

 

dev에서 넣은 ddd.txt와 eee.txt파일이 master로 스위치 되면 폴더에서 사라지는 걸 볼 수 있고

master에서 dev로 다시 스위치 하면 ddd와 eee.txt 파일이 다시 생기는 것을 볼 수 있다.

git switch master
git switch dev

 

 

 

 

< 병합작업 >

< 마스터라는 브랜치에 묶어줌 >

master모드로 스위치 한뒤 fff.txt파일을 새로 만들고 추가해봤다.

현재 작업창이 클린하다는 것을 알려줌

 

 

 

merge를 이용해 병합을 해본다.

git merge dev : 병합하기

 

충돌이 일어나지 않으면 dev에서 작업한 파일들을 가져올 수 있다

(만약 dev와 feature 라는 두 브랜치가 있는데, feature에서 작업한 내용을 dev에 병합하고 싶으면 dev로 브랜치 변경해 dev에서 git merge feature하면 feature에 있는 작업한 파일이 dev에 병합된다.)

 

 

 

 

이번엔 dev로 스위치해준다.

서로 병합하기 위해서는 dev에서도 master를 병합을 시켜줘야 한다.

 

 

 

 

<충돌시키기>

master로 스위치하고 aaa.txt 파일의 두번째 내용을 수정한다.

수정한 텍스트파일을 commit해준다.

 

 

 

이번에는 dev로 스위치해 aaa.txt 파일의 두번째 줄을 수정해준다.

수정한 파일을 commit 해준다.

 

그리고 병합을 해본다.

conflict 로 충돌된것을 볼 수 있다

 

그리고 작업한 텍스트파일을 보면 이렇게 나온다

이렇게 충돌된 txt 파일을 수정해준다.

충돌을해결하고 다시 merge 해준다.

 

git merge --abort : 충돌 무시하고 병합

git merge --continue : 충돌해결후 병합 ( 나가기는 :wq)

 

 

 

이미 바로 위에서 commit을 해버려서 --continue가 안 먹히지만 둘 중에 하나만 하면 된다.

(--continue 하려면 commit 하면 안됨)

 

 

master로 스위치해서 master에서도 merge를 해준다.

 

 

< vs코드로 테스트 >

vs 에서도  cmd랑 똑같이 하면된다. 

터미널 창을 보려면 보기를 눌러 터미널을 누르면 된다.

 

 

< 병합문제 > 

위와 같이 브랜치를 만들어 마스터에서는 nth:child(1)을 추가하고  dev에서는 nth:child(2)를 만들어 추가하고 병합시키면 충돌이 나게 된다.

 

이렇게 수정 사항이 나오면 밑에와 같이 수정한 후 commit해주면 된다.

수정은 이렇게 해주면 된다.

터미널창에서 git merge --continue를 한 후 :wq로 나가면 된다.

 

 

 

 

 

< 실습해보기 >

 

 

 

 

 

 

< 기본 정리 >

git init
git staus(상태보기)
git add *
git commit -m "____"
git branch (브랜치 보기)
git brtach 브랜치명 
git switch 브랜치명
git merge 브랜치명 (병합)
git reflog
git log --oneline

 

 

 

 

'IT수업 > GIT' 카테고리의 다른 글

git 정리  (0) 2024.05.14
IT 수업 10주차 (2)GIT HUB에 연결시키기  (1) 2024.02.26