1. 병합

→ 특정 브랜치의 변경내역을 다른브랜치로 가져오는 것. 즉, 두 브랜치의 코드가 하나로 합쳐짐

 

1) 소스트리에서 브랜치 병합하기

master 브랜치에는 무조건 돌아가는 최종 코드만 커밋해야 하기 때문에 feature;a에 먼저 머지를 해보고 문제가 없다는 것을 검증해야 한다.

 

feature;a로 체크아웃한 후 master 우클릭에서 현재 브랜치로 master 병합을 클릭한다.

 

master에서 작업한 메인기능 2번기능 추가가 feature;a에 추가되어 있어야 한다.

 

해당 파일을 확인해보면 2번 기능 추가 내용이 잘 들어있는 것을 확인할 수 있다.

 

master를 체크아웃한 후 확인해보면 master 브랜치는 5번 커밋에 머물러 있기 때문에 feature;a에서 만든 a.txt는 확인할 수 없다.

 

master를 체크아웃한 상태에서 feature;a를 병합한다.

 

위와 같이 양쪽 브랜치가 동등해진 것을 확인할 수 있다. → 하나의 기능 개발이 완료된 것을 의미

 

2) CLI에서 브랜치 병합하기

기본적으로 master보다는 feature;a에 먼저 머지를 해야 하므로 feautre;a 브랜치로 체크아웃을 한다.

 

git merge 타겟브랜치명을 통해 병합을 할 수 있다.

 

위와 같은 화면이 나온다면 esc 키 누른 후 :q!를 입력해서 빠져나온다.

 

위와 같이 feature;a에 마스터에 추가된 내용을 끌고 온다.

 

위와 같이 feature;a 체크아웃 상태에서 gittest.txt 파일에 2번 기능이 추가되어 있는 것을 확인할 수 있다.

 

master 체크아웃 상태에서는 아직 머지를 하기 전이므로 a.txt 파일을 확인할 수 없다.

 

master 브랜치에서 feature;a를 merge 해준 후 확인해보면 위와 같이 잘 병합된 것을 확인할 수 있다.

 

 

2. 충돌 문제 해결하기

같은 파일에 대해 각 브랜치에서 새 브랜치를 생성한 이후 새롭게 같은 파일을 수정하고 병합하는 경우 충돌이 발생한다.

 

1) 소스트리에서 충돌 문제 해결하기

master로 체크아웃 한 후 gittest.txt에 3번 기능을 추가한 후 add, commit을 진행한다.

 

위와 같이 잘 커밋된 것을 확인할 수 있다.

 

feature;a로 체크아웃한 후 파일을 확인해보면 위와 같은 상태이다.

 

같은 위치에 위와 같은 내용 추가 후 add, commit 진행한다.

 

위와 같이 gittest.txt 3번 기능, 즉 동일한 지점에 두 브랜치에서 작업한 경우 merge를 진행하면 오류가 발생할 것이다.

 

이처럼 머지하려고 하면 master의 코드가 옳은지, feature;a의 코드가 옳은지 모호한 상황이 발생하기 때문에 충돌이 일어난다.

 

충돌난 파일을 더블클릭에서 연 후 위아래 코드를 적절하게 반영하고 다시 병합하면 충돌이 해결된다.

 

위 내용은 충돌 발생 시 자동으로 작성된다.

 

수정 후 다시 커밋해보면 위와 같이 병합이 잘 된 것을 확인할 수 있다.

 

2) CLI에서 충돌 문제 해결하기

먼저, feature;a 브랜치에서 gittest.txt 파일에 3번 기능을 추가한다.

 

add와 commit을 진행해준다.

 

마스터 브랜치로 체크아웃한 후 같은 지점에 3번 기능을 추가해준다.

 

add와 commit을 진행해준다.

 

feature;a 브랜치로 체크아웃 후 master와 병합하려고 하면 위와 같이 충돌 에러가 발생하는 것을 확인할 수 있다.

 

위와 같이 충돌난 파일을 열고 수정해준다.

 

다시 머지를 진행해보면 먼저 커밋을 하라는 메시지가 나온다.

 

add와 commit을 진행한 후 다시 merge를 해보면 위와 같이 이미 병합이 완료된 것을 확인할 수 있다.

'네트워크캠퍼스 > GIT, GITHUB' 카테고리의 다른 글

클론  (0) 2024.01.11
로컬 저장소 내역 깃허브 업로드  (0) 2024.01.10
브랜치  (0) 2024.01.04
커맨드라인을 활용한 깃  (0) 2024.01.03
소스트리를 활용한 깃  (0) 2024.01.02

1. 브랜치

→ 기능 작성 시 반영될지 안될지 모르는 기능을 임시적으로 저장하는 새로운 노선을 만드는 것

즉, 특정 시점에 논리적인 복사본을 만들어 기능 단위로 반영여부를 결정하며 개발하도록 도와주는 기능

 

1) 소스트리로 브랜치 생성하기

 

위와 같이 브랜치를 생성했고, 아직 다른 작업을 하지 않았기 때문에 새로운 브랜치와 마스터 브랜치는 차이가 없다.

 

a.txt 파일 추가 후 커밋하면 위와 같이 feature;a가 올라간 것을 확인할 수 있다.

 

더블클릭을 통해 master 브랜치로 체크아웃하고 폴더를 확인해보면 a.txt가 없는 것을 확인할 수 있다.

 

위와 같이 gittest.txt 파일의 내용을 수정해준 후

커밋을 진행하면 위와 같이 master 브랜치에 커밋된 것을 확인할 수 있다.

 

2) CLI로 브랜치 생성하기

git branch 브랜치명 명령어를 통해 새 브랜치를 생성할 수 있다.

이때 홑따옴표를 사용하는 경우 ' ' 로 감싸주어야 한다.

브랜치를 생성하면서 동시에 체크아웃까지 원한다면 git checkout -b 브랜치명을 이용하면 된다.

 

git branch 명령어를 통해 현재 레포지토리 내부의 브랜치 전체를 조회할 수 있다.

 

git checkout 명령어를 통해 새로운 브랜치를 체크아웃한 것을 확인할 수 있다.

 

새로운 a.txt 파일 생성 후

 

add, commit 명령어를 이용하여 스테이지에 올리고 커밋까지 진행한다.

 

git log --graph : 단순조회

git log --branches --graph --decorate --oneline : 전체브랜치 한줄로 시각화

git log --graph --all : 전체 로그 다 조회

 

master 브랜치를 체크아웃한다.

 

gittest.txt 파일 수정 후 위와 같이 add와 commit도 진행한다.

 

브랜치를 확인해보면 위와 같이 나눠져 있는 것을 확인할 수 있다.

 

※ 만약, 추가기능을 반영하지 않는다면 추가브랜치를 삭제해도 된다.

→ git branch -d 브랜치명 명령어를 이용해 삭제할 수 있다.

'네트워크캠퍼스 > GIT, GITHUB' 카테고리의 다른 글

클론  (0) 2024.01.11
로컬 저장소 내역 깃허브 업로드  (0) 2024.01.10
병합  (0) 2024.01.05
커맨드라인을 활용한 깃  (0) 2024.01.03
소스트리를 활용한 깃  (0) 2024.01.02

1. 커맨드라인을 활용한 깃

1) repository 생성

CLI에서 git으로 폴더를 관리하는 경우 git으로 관리하는 폴더 접근 후 git bash here 클릭

 

git init 명령어를 사용하여 최초 .git 폴더를 생성할 수 있다.

 

2) 첫 번째 버전 생성 + 스냅샷 정보 시각화

gittest.txt라는 빈 메모장 생성

 

git status 명령어를 통해 현재 스테이지의 상태 조회 가능

 

git add 파일명 : 특정 파일을 스테이지에 올림

git add . : 현재 작업공간의 모든 파일을 스테이지에 올림

 

git add 해준 후 git status로 다시 확인해보면 아까 untracked 였던 gittest.txt 파일이 add된 것을 확인할 수 있다.

 

git commit -m "메세지" 명령어를 통해 커밋 메세지를 남기며 커밋할 수 있고, status를 확인해보면 최종 커밋 이후 변경사항이 없는 것을 확인할 수 있다.

즉, 커밋하면 첫 버전이 등록된 것이고 스테이지에 있던 파일은 소멸된다.

 

git log 명령어를 통해 해시코드와 커밋내역을 확인할 수 있다.

 

git log --graph 명령어 활용 시 왼쪽에 그래프 형태로 확인할 수 있다.

 

3) 두 번째 버전 생성 + 스냅샷 시각화

위와 같이 수정

 

git status를 해보면 위와 같이 변경이 감지된 것을 확인할 수 있다.

작업 폴더의 버전이 저장소의 버전보다 높아졌기 때문에 작업 내역을 다시 스냅샷해야 한다.

 

git add한 후 커밋을 통해 스냅샷을 찍을 수 있고, 두 번째 버전도 저장소에 등록되고 스테이지에 있던 파일은 소멸된다.

 

git log --graph로 조회해보면 ☆(커밋)이 2개인 것을 확인할 수 있다.

HEAD는 현재 조회중인 커밋 내용

 

4) 세 번째 버전 생성 + 스냅샷 시각화

gitsub.txt 파일 생성

 

위와 같이 변경사항이 있는 것을 확인할 수 있다.

 

git add 명령어를 통해 gitsub.txt 파일을 스테이지에 올릴 수 있다.

 

위와 같이 세 번째 커밋을 수행

 

 

 

※ CLI의 경우 스테이지에서 삭제하고자 할 때 git reset 파일명 명령어 사용

 

5) CLI 환경에서 수행하는 체크아웃

git checkout 커밋고유번호를 통해 체크아웃 가능

※ 고유번호는 앞 7글자만 입력해도 된다.

 

위와 같이 git checkout 명령어를 활용하여 체크아웃을 할 수 있다.

 

해당 폴더를 확인해보면 위와 같이 첫번째 스냅샷을 확인할 수 있다.

 

git log는 현재 체크아웃 중인 시점과 이전 커밋만 보여주므로 전체 커밋내역을 확인하기 위해서는 git log --all 명령어를 사용해야 한다.

 

최신버전 커밋으로 돌아갈 때는 위 방식으로 고유번호를 다시 체크해도 되지만 위와 같이 git checkout - 명령어를 통해 최신커밋으로 이동할 수도 있다.

 

위와 같이 최신 버전의 스냅샷으로 돌아온 것을 확인할 수 있다.

'네트워크캠퍼스 > GIT, GITHUB' 카테고리의 다른 글

클론  (0) 2024.01.11
로컬 저장소 내역 깃허브 업로드  (0) 2024.01.10
병합  (0) 2024.01.05
브랜치  (0) 2024.01.04
소스트리를 활용한 깃  (0) 2024.01.02

+ Recent posts