오픈소스 git&github 스터디(2)

브랜치

브랜치 기능 (Branch) : 동시에 여러 개발자들이 프로젝트에서 각기 다른 기능을 개발할 수 있도록 함.

마스터 브랜치 : 배포가 가능한 버젼. 프로젝트에서 주 버젼이 됨. (자동으로 생성됨)
항상 안정화되고 배포가능한 상태이어야 하기 때문에 병렬적인 작업이 필요함.

git branch : 현재 브랜치 목록을 보여줌
*main 브랜치가 default브랜치명임.

(여담 : master 브랜치가 디폴트였는데, 노예제를 연상시킨다는 이유로 main으로 변경되었다 한다...!)

git branch (추가하고자 하는 브랜치명) : 브랜치가 생성됨.

C:\Tutorials\Git-Tutorial>git branch
* main

C:\Tutorials\Git-Tutorial>git branch develop

C:\Tutorials\Git-Tutorial>git branch
  develop
* main

git checkout (브랜치명) : 브랜치를 선택한다.

C:\Tutorials\Git-Tutorial>git branch
  develop
* main 

C:\Tutorials\Git-Tutorial>git checkout develop
Switched to branch 'develop'

C:\Tutorials\Git-Tutorial>git branch
* develop
  main

main에서 develop브랜치로 선택이 변경되었음을 확인할 수 있다.
수정된 코드를 main 브랜치에 병합하고 싶다면

git merge (브랜치명)을 입력하여 main 브랜치에 병합해준다.
병합 수행 시 main 브랜치에서 수행한다.

병합이후 필요없어진 브랜치는 -d 옵션을 사용하여 삭제한다.

C:\Tutorials\Git-Tutorial>git branch -d develop
Deleted branch develop (was e1acb02).

C:\Tutorials\Git-Tutorial>git branch
* main

브랜치 충돌(conflict) 처리하기

def add(a,b):
    return a+b
def sub(a,b):
    return a-b
def mul(a,b):
    return a*b
def div(a,b):
    return a//b # 주석

main 브랜치의 코드

def add(a,b):
    return a+b
def sub(a,b):
    return a-b
def mul(a,b):
    return a*b
def div(a,b):
    return a//b 

develop 브랜치의 코드

서로 다르므로 merge를 진행할 때 충돌이 일어난다.

파일을 열어보면 main과 develop 브랜치의 다른 부분을 명시하고 있다.

수동으로 삭제한뒤 저장하여 add & commit 하는 방법이 있다.


원격 저장소(Remote Repository) 관리하기

이해가 잘 안된다.
..ㅠㅠ


로그(log) 다루기

▶ stat: 각 커밋에 따른 통계 정보를 출력합니다.

▶ graph: 브랜치(Branch)와 병합(Merge) 정보를 그래프 형태로 출력합니다.

▶ p: 커밋에 적용된 구체적인 사항을 출력합니다.

▶ pretty: 지정된 형식으로 커밋 정보를 출력합니다.

사용 시)
git log stat
git log -p
git log --pretty=oneline

pretty 사용 예시

C:\Tutorials\Git-Tutorial>git log --pretty=format:"%h -> %an, %ar : %s" --graph
*   e1ce4b6 -> minhee020, 19 minutes ago : Add my_module [Div] & Comment
|\
| * 700429a -> minhee020, 28 minutes ago : Add my_module [Div]
* | 54c6062 -> minhee020, 26 minutes ago : Add my_module [Div] & Comment
|/
* e1acb02 -> minhee020, 38 minutes ago : Add my_module [Mul]
* a317e4e -> minhee020, 2 hours ago : Add my_module [Sub]
* 9109cb6 -> minhee020, 2 hours ago : Add my_module [Add]
* fa9bbda -> minhee020, 3 hours ago : Add Text File [document.txt]

출처: https://ndb796.tistory.com/193?category=1029186 [안경잡이개발자]

이미 github에서 ui를 통해 깔끔한 형태로 제공하고 있기 때문에 꼭 알아둬야하는건 아니다.


좋은 웹페이지 즐겨찾기