-
[Git] Git 기초와 활용2 branch/conflict/log (우분투 터미널)하면서 이런이런것을 공부했다[연구노트]/Git, Docker, Pytorch 2020. 2. 17. 22:57
아래의 내용들은 이 동영상 강의 내용을 정리한 내용입니다.
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이다.
다음과 같은 구조로 프로젝트가 이어나가도록 한다.
Merge : 합치기. 나눈 branch를 하나로 합치는 작업. 위의 사진의 2번째 노드에서 다른 branch와 만나 융합하는 작업이다.
Branch 관련 명령어
$ git branch
다음과 같이 별다른 branch를 만들지 않았다면, master만 있다.
$ git branch <NewBranchName>
새로운 branch를 만드는 방법.
$ git checkout NewBranchName
$ git branch내가 진짜 작업할 branch를 고르는 명령어
만약 파일을 수정하고, add하고 commit까지 해줬더라면, HEAD가 새로운 branch만 가리킨다.
만약 에러가 있어서 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가 가리키는 방향)
branch 삭제하는 방법.(local repo에서만 삭제 된다.)
$ git branch -d <branchname>
$ git branch -D junhaB # junhaB에서 수정된 내용이 있더라도 commit을 안했더라도 강제 삭제remote repo의 branch도 삭제하기
$ git push origin --delete <branchname>
merge
$ git checkout master # master branch에 먼저가서
$ git merge <newBranch> # 이것과 융합한다. (합친다) 두개를 같게 만든다.
$ git merge <newBranchName> --no-f # git log graph를 그렸을때 branch에 대한 정보가 추가 된다.2. Branch사이의 충돌 처리
2개의 branch에서 서로 다른 파일을 수정했다면, merge할 때, conflict(충돌)이 발생하지 않는다.
하지만 같은 파일을 수정했었더라면, merge할 때 충돌이 발생한다.
다음과 같이 같은 파일을 변경하고 Master로 돌아가서 merge를 시행하면, 어느 파일에 충돌이 발생한지 나온다.
충돌한 파일에 들어가면 <<<< 부터 >>>> 가 충돌한 부분이고,
master의 상태로 놔두고 싶다면, 초록색 박스를 남기고 빨간색 부분을 다 지우고
NewBracnh의 상태로 놔두고 싶다면, 파란색 박스를 남기고 빨간색 부분을 다 지우면 된다.
그리고 다음과 같이 그냥 다시 merge하면 안된다. add와 commit과정을 다시 하고 merge를 해야한다.
그리고 변경한 내용을 전부 remote repository에 올리려면 다음의 명령어
$ git push -f
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 <commit번호>
reset한 것을 다시 원래 대로 돌리고 싶다면 다음의 명령어를 사용한다. (by )
$ git reflog
# 출력값 확인하기
$ git reset --hard HEAD@{위의 출력에서 하나 선택}'하면서 이런이런것을 공부했다[연구노트] > Git, Docker, Pytorch' 카테고리의 다른 글
[Git] Git 기초와 활용3 Readme/Rebase/onfig (Ubuntu terminal) (0) 2020.02.18 [우분투] 우분투 명령어 및 프로세스 (0) 2020.02.18 [Docker] Docker 설치 및 기초 명령어 (0) 2020.02.17 [Git] Git개념 및 기본 명령어 공부1(우분투 Terminal) (0) 2020.02.17 [Docker,Git] Youtube 한글 강과 공부법과 순서 (0) 2020.02.16