Aio Dev Blog
HomeAbout Me

Git에 관해서

By Aio
Published in 개발 지식
April 01, 2021
2 min read
Git에 관해서

Git

commit 영어 네이밍 https://blog.ull.im/engineering/2019/03/10/logs-on-git.html

깃 저장소 결합하기

[Git] 어떻게 Git 전문가가 되는가? (amend, rebase)

Git1 - 1.수업소개

Git은 프로그래머 만을 위한 것은 아님

버전 관리 / 백업 / 콜라보

GIT2 - CLI 버전관리 - 1. 수업소개

CLI 는 한번에 여러 명령을 내릴 수 있음

git init !{dir}

working tree (수정 ,처음 만듬)/ staging Area / Repository

L) cat으로 내용보기

git status . 깃은 최초에 한번은 트랙킹 하라고 지시해야함

git log —stat / —all —graph —oneline

git log -p

git diff

git reset —hard (안 적으면 최신 커밋, 또는 커밋 ID적음, push하기전 까지의 커밋만)

git check out

git add . (루트 폴더)

git commit -am ” ” (트래킹되지 않은 파일은 안 됨) —amend 멧세지 수정

git tag {tag_name}

git revert 특정 커밋의 실행은 되돌림, 특정 커밋으로 가고 싶으면 순차적으로 revert해야함

diff / .gitignore / tag / backup

Branch & Conflict

git3 - CLI branch & conflict 2. 실습준비

git branch > 목록보기

git branch {Name}

git checkout {branch}

base merge → merge commit

중심이 될 브랜치에 체크아웃 , 합칠 부품 브랜치를 merge

같은 파일 , 다른 부분 → 그냥 합쳐짐 base를 기준으로 잡는 3 way merge

git mergetool p4Merge

  • git workflow (모범 사례), cherrryPick / rebase

checkout은 Head를 변경 / commit 자체를 가리키면 defached

Git%205dad49ded61d4da081200dbc28bb9ddd/git3_-_branch__conflict__1.2._checkout_vs_reset_3-28_screenshot.png
Git%205dad49ded61d4da081200dbc28bb9ddd/git3_-_branch__conflict__1.2._checkout_vs_reset_3-28_screenshot.png

reset은 브랜치가 가리키는 commit을 바꿈

BackUp

GIT3 - CLI 백업

Git hosting

HTTP SSH git remote add {name} URL

git remote → 리스트 -v URL 까지

git push —set-upstream {name} {master}
= git push -u

git clone URL !Dir

SSH 자동 로그인 / Issue (투두리스트) /

협업

GIT4 - CLI 협업

pull을 하지 않고 수정하면 push 전에 반드시 pull을 하고 coflict를 수정 해줘야함

pull을 하면 최신 커밋으로 가고, fetch를 하면 업데이트는 되지만 head이동은 없음 pull을 다시 해주던가, merge시킨다.

.git/FETCH_HEAD에 원격 저장소의 HEAD 저장됨 git fetch: git merge FETCH_HEAD

git format-patch {commit id } git am -3 -i *.patch (3way방식) (상호작용으로 패치마다 물어봐줌) (알아서 순서대로 적용해줌)

pull request compare → fork의 오리지널 저장소와 비교 code review - Gerrit

Reset & Revert

GIT4 - Reset & Revert 1. 수업소개

Git%205dad49ded61d4da081200dbc28bb9ddd/GIT4_-_Reset__Revert_3.1._reset_vs_checkout__4-42_screenshot.png
Git%205dad49ded61d4da081200dbc28bb9ddd/GIT4_-_Reset__Revert_3.1._reset_vs_checkout__4-42_screenshot.png

checkout 헤드의 커밋 ID를 바꿈, 커밋 ID 또는 브랜치 이름을 지정, 커밋은 살아있음 (log —all)

reset 브랜치의 커밋 ID를 바꿈 , 커밋 데이터는 남아있음.

브랜치 없이 커밋을 가리키면 detached head 상태가됨

git reflog 로 하면 내렸던 명령 로그

Git%205dad49ded61d4da081200dbc28bb9ddd/GIT4_-_Reset__Revert_4.1._reset_--soft_vs_--mixed_vs_--hard_9-36_screenshot.png
Git%205dad49ded61d4da081200dbc28bb9ddd/GIT4_-_Reset__Revert_4.1._reset_--soft_vs_--mixed_vs_--hard_9-36_screenshot.png

git reset —hard {Branch, default = head} 아무것도 안 적으면 현재 최근 커밋으로 초기화 옵션 기본은 mixied

Git%205dad49ded61d4da081200dbc28bb9ddd/GIT4_-_Reset__Revert_5.1._revert__5-27_screenshot.png
Git%205dad49ded61d4da081200dbc28bb9ddd/GIT4_-_Reset__Revert_5.1._revert__5-27_screenshot.png

Git%205dad49ded61d4da081200dbc28bb9ddd/GIT4_-_Reset__Revert_5.3._revert______11-9_screenshot.png
Git%205dad49ded61d4da081200dbc28bb9ddd/GIT4_-_Reset__Revert_5.3._revert______11-9_screenshot.png

Cherry Pick & Rebase

git4 - cherry-pick & rebase : 2. cherry-pick의 개념과 기본사용법

Cherry Pick

Git%205dad49ded61d4da081200dbc28bb9ddd/Untitled.png
Git%205dad49ded61d4da081200dbc28bb9ddd/Untitled.png

특정 커밋을 커밋할때의 변화만을 가져옴 git cherry-pick {commit ID}

Git%205dad49ded61d4da081200dbc28bb9ddd/GIT4_-_cherry-pick__rebase___4.1.cherry_pick____1_2_4-10_screenshot.png
Git%205dad49ded61d4da081200dbc28bb9ddd/GIT4_-_cherry-pick__rebase___4.1.cherry_pick____1_2_4-10_screenshot.png

충돌이 나면 3way 방법으로 수정 후 git cherry-pick —continue 로 진행

Git%205dad49ded61d4da081200dbc28bb9ddd/git4_-_cherry-pick__rebase___3._rebase____10-8_screenshot.png
Git%205dad49ded61d4da081200dbc28bb9ddd/git4_-_cherry-pick__rebase___3._rebase____10-8_screenshot.png

Git%205dad49ded61d4da081200dbc28bb9ddd/git4_-_cherry-pick__rebase___5.1._rebase____1_2_9-2_screenshot.png
Git%205dad49ded61d4da081200dbc28bb9ddd/git4_-_cherry-pick__rebase___5.1._rebase____1_2_9-2_screenshot.png

rebase할려는 브랜치로 체크아웃 후 (m2) 체크아웃중인 브랜치는 사라짐

git rebase {branch_name} , rebase할려는 브랜치의 커밋 하나 마다 Apply 개별 실행됨 git rebase —continue m 브랜치(push 미실행 브랜치)가 원격 저장소로 push 되고 나서는 rebase 하면 안됨 merge와 rebase의 결과 물은 같음 git log를 깔끔하게 해주는 효과

git —show-current-patch 충돌 사항 보기 git log -p

Git Flow

git flow model

Git%205dad49ded61d4da081200dbc28bb9ddd/Untitled%201.png

master → 언제나 실행 가능한 버전 release branch에서 master로 merge할때는 git merge —no-ff release/0.N 으로 의도적으로 커밋도 나겨야함 그 이후 git brance -d relase/0.N 으로 브랜치 삭제 , but 커밋으로 존재했던 것을 남김 그리고 git tag 0.N해줌

브랜치는 삭제해도 commit은 남음

git flow 앱을 사용하면 좀 더 쉽게 할 수 있음

Github

Github.com - 1. 수업소개


Tags

#Git
Previous Article
Git에 관해서
Next Article
Git에 관해서

Aio

FullStack Web Developer

Topics

개발 지식
일본어
JavaScript
Linux

Table Of Contents

1
Git
2
Github
© 2022, All Rights Reserved.

Quick Links

About Us

Social Media