【Git】 Git 기초와 활용2 branch/conflict/log (terminal)

아래의 내용들은 이 동영상 강의 내용을 정리한 내용입니다.

https://www.youtube.com/playlist?list=PLRx0vPvlEmdD5FLIdwTM4mKBgyjv4no81

따로 공부하면 좋은 사이트

https://backlog.com/git-tutorial/kr/stepup/stepup2_1.html

ps. terminal에 작성한 gedit은 우분투 기본 텍스트 편집기 입니다. (윈도우의 메모장)

1. Branch 다루기

Master branch : 자동적으로 생성되고, 가장 중심이 되는 Branch이다.

다음과 같은 구조로 프로젝트가 이어나가도록 한다.

img

Merge : 합치기. 나눈 branch를 하나로 합치는 작업. 위의 사진의 2번째 노드에서 다른 branch와 만나 융합하는 작업이다.

Branch 관련 명령어

$ git branch

다음과 같이 별다른 branch를 만들지 않았다면, master만 있다.

$ git branch

새로운 branch를 만드는 방법.

$ git checkout NewBranchName $ git branch

내가 진짜 작업할 branch를 고르는 명령어

img

만약 파일을 수정하고, add하고 commit까지 해줬더라면, HEAD가 새로운 branch만 가리킨다.

img

만약 에러가 있어서 HEAD가 master와 origin/master까지 모두 가리키고 있다면, remote repo에 branch만들어주면 된다.

remote에도 나의 branch 추가해주기

$ git push –set-upstream origin junhaB

다음과 같이 한번 해주면 remote repository에 branch가 추가된것을 확인할 수 있다.

그리고 각각의 branch에 들아가서 add, commit을 따로따로 수행할 수 있다.

내가 어떤 branch에 들어가 있는지에 따라서, 파일들의 내용들이 완전히 바뀌는 것을 확인할 수 있다.

$ git log $ git status #내가 작업하는 branch가 어디인지 확인하능.

를 통해서 어디에서 작업하고 있고 어디에서 수정했는지 확인이 가능하다, (HEAD가 가리키는 방향)

img

img

img

branch 삭제하는 방법.(local repo에서만 삭제 된다.)

$ git branch -d $ git branch -D junhaB # junhaB에서 수정된 내용이 있더라도 commit을 안했더라도 강제 삭제

remote repo의 branch도 삭제하기

$ git push origin –delete

merge

$ git checkout master # master branch에 먼저가서 $ git merge # 이것과 융합한다. (합친다) 두개를 같게 만든다. $ git merge --no-f # git log graph를 그렸을때 branch에 대한 정보가 추가 된다.

2. Branch사이의 충돌 처리

2개의 branch에서 서로 다른 파일을 수정했다면, merge할 때, conflict(충돌)이 발생하지 않는다.

하지만 같은 파일을 수정했었더라면, merge할 때 충돌이 발생한다.

img

다음과 같이 같은 파일을 변경하고 Master로 돌아가서 merge를 시행하면, 어느 파일에 충돌이 발생한지 나온다.

충돌한 파일에 들어가면 «« 부터 »» 가 충돌한 부분이고,

master의 상태로 놔두고 싶다면, 초록색 박스를 남기고 빨간색 부분을 다 지우고

NewBracnh의 상태로 놔두고 싶다면, 파란색 박스를 남기고 빨간색 부분을 다 지우면 된다.

그리고 다음과 같이 그냥 다시 merge하면 안된다. add와 commit과정을 다시 하고 merge를 해야한다.

img

그리고 변경한 내용을 전부 remote repository에 올리려면 다음의 명령어

$ git push -f

img

3. Remote Repository 관리하기

$ git remote

해당 local repo에서 remote와 관련된 것이 무엇인지 보여준다.

기본적으로 origin을 보여준다.

origin에 대한 자세한 정보를 보고 싶다면,

$ git remote show origin

을 사용한다.

일반적으로 하나의 local repo와 하나의 remote repo를 연동시켜 놓는다.

하지만 하나의 local repo와 여러개의 remote repo를 연동 시켜 놓는것도 가능하다.

이때 사용가능한 명령어들은 다음과 같다.

$ git remote add test # 새로운 remote repo와 연결 $ git remote rename test temp # remote repo이름 바꿈 $ git remote -v # 전체 연결된 remote repo들을 확인해본다. $ git log origin/master # 특정 remote repo의 특정 branch에 대한 log를 확인하는 방법 $ git log temp/junhaB # 특정 remote repo의 특정 branch에 대한 log를 확인하는 방법

하지만 위에서 말했듯이 일반적인 경우에 local repo와 remote repo를 하나씩 연동하기 때문에

이 명령어들은 필요할때 찾아봐서 이용하면 된다. 즉 몰라도 된다.ㅎㅎ

4. Log 다루기

기본 적으로 다음의 명령어로 log를 확인할 수 있다.

$ git log $ git log –stat # 어떤 코드에 얼마나 많은 양의 수정을 했는지 그려준다

-p 옵션

$ git log -p

정확히 어떤 변경을 했는지, 코드 내부의 내용까지 보여주면서 log정보를 보여준다.

pretty옵션

$ git log –pretty=oneline 출력 결과 1a19ea5a514a2525815ec23b87bb6f2cd8b4781b (HEAD -> master, origin/master) commend ad875c560f0f6ce50e791efe6d1c2a9b51c73b45 commend 3793893ad7f56190be06b916ed3b1cc67443108a add line of aa 42b8cb2c1a42b8c12bf4d4f47e67c5ba6236ac0e add junha.py. 수정 readme 1916e39cf972406de7f89407ab35587e450342d0 first commit[readme.md]

commit했던 것들을 깔끔하게 보여준다.

pretty에 대한 공부는 아래의 페이지를 이용하면 좋다.

http://www.dreamy.pe.kr/zbxe/CodeClip/3766623

복잡하면 이것만 사용하기 :

$ git log –pretty=format:”%h -> %an : %s” –graph

그리고 아래의 명령어를 사용해서 내가 원하는 commit으로 돌아갈 수 있다.

$ git reset –hard

img

reset한 것을 다시 원래 대로 돌리고 싶다면 다음의 명령어를 사용한다. (by )

$ git reflog # 출력값 확인하기 $ git reset –hard HEAD@{위의 출력에서 하나 선택}

img


© All rights reserved By Junha Song.