상세 컨텐츠

본문 제목

git - 활용

git

by go_ra_ni 2021. 6. 25. 15:31

본문

728x90

https://www.codeit.kr/

 

코딩이 처음이라면, 코드잇

월 3만원대로 Python, JavaScript, HTML/CSS, Java 등 1,600개 이상 프로그래밍 강의를 무제한 수강하세요

www.codeit.kr:443

 

코드잇의 강의를 참고하여 정리함

 

 

 

git reset 한 뒤 복구하는 법

 

 

 

현재 premium branch의 commit log이다. 여기서 맨 처음 d19a commit으로 reset해보자

 

이제 history를 사용하면 처음 commit하나만 출력된다.  이 상태에서 최신 commit으로 돌아가는 방법은

1. commit id로 reset 하거나

2. git reflog를 사용하면 된다.

 

git reflog는 head가 가리킨 commit log를 보여준다.

 

이런 식으로 목록이 출력되고 좌측 id를 참고하여 복구할 수 있다. 목록 탈출은 q를 누르면 된다.

단, commit이 되지않은 내용은 복구되지 않으니 주의하자

 

 

commit history 보는 방법

 

이전의 log 명령어에서 한줄 출력 명령어는 

git log --pretty=oneline 이었다.

여기서 모든 branch의 commit을 확인하는 명령어는 

git log --pretty=oneline --all이다.

그러나 이렇게 출력하면 어느 branch의 commit인지 구분지 잘 가지않는다.

 

 

git log --pretty=oneline --all --graph

 

graph 옵션을 추가하면 이렇게 좌측면에 선으로 branch구분이 나타나게 된다.

 

 

gui 환경에서 git 사용하기

https://www.sourcetreeapp.com/

 

Sourcetree | Free Git GUI for Mac and Windows

A Git GUI that offers a visual representation of your repositories. Sourcetree is a free Git client for Windows and Mac.

www.sourcetreeapp.com

 

참고만하고 CLI에서 되도록 진행하도록하겠다.

 

 

git rebase branch_name

 

commit 을 재배치하기

 

현재 branch의 base를 인자로 주어진 branch로 삼는 것이다.

 

 

rebase를 사용한 뒤 모습이다.

 

test branch 뒤에 premium branch의 commit이 자리잡게 된다.

 

 

작업 중 잠깐 저장하기!

 

premium branch에서 이 함수를 추가하던 중에 다른 branch 로 이동하려고 해보자

오류가 발생한다. 작업중이던 내용을 add 나 commit하지 않고 넘어가면 사라질 수 있으므로 오류가 발생한다.

 

이럴때 git stash를 사용해야한다.

 

stash는 stack 구조로 이루어져있다.

 

현재 작업중이던 내용을 stack에 저장하고 list인자를 추가하여 확인할 수 있다.

 

작업중이던 내용이 사라진 것을 확인할 수 있다.

 

불러오는 명령어는 

git stash apply이다.

 

사라졌던 코드가 되돌아오게 된다.

 

 

 

잘못된 branch에서 작업했을 경우 수정하기

 

 

이 함수는 master branch에서 작성했지만 premium branch로 이동해야한다고 가정하자

 

stash로 저장한 후 branch 변경을 하였다. list를 확인해보니 0번째 stash가 우리가 수정해야하는 작업 내용이다.

 

git stash apply stash@{0}

으로 해당하는 자료를 현재 branch에 꺼내올 수 있다.

 

충돌이 일어난 코드를 수정한 후 commit하면 정상적으로 코드를 옮기기에 성공할 수 있다.

 

stack에 저장된 정보는 꺼내써도 그대로 저장되어있다.

 

삭제하려면

 

git stash drop stash@{0}

으로 삭제가 가능하다.

 

apply와 drop을 동시에 진행하는 명령어도 있다.

 

 

git stash pop

이다.

 

git cherry-pick 

 

체리만 집어먹는 모양새에서 따온 체리피커라는 말이 있다.

 

필요한 commit만 가져오는 명령어 이다.

 

이 상황에서 1번 함수 commit만 가져오고 싶다고 해보자

 

이런 식으로 다른 branch의 commit id를 입력하여 그 commit만 가져오고 충돌을 해결한 후 

commit하면 된다.

 

 

 

 

commit 삭제

 

 

 

2개의 commit을 했다고 해보자 그러나 2번째만 적용하고 1번째 추가 commit은 의미가 없으니 없애고 싶다고 해보자

 

여기서는 reset을 사용하여 간단하게 해결 가능하다.

 

git reset --soft는 현재 작업 환경은 그대로 두고 head만 이동하기 때문에 

 

id : dc41

로 이동하면 위의 2개의 commit은 사라지고 work directory는 현재 상태로 유지된다.

 

바로 add 를 다시하고 commit 하게되면 이런 상태로 수정이 가능하다.

 

 

 

728x90

'git' 카테고리의 다른 글

git + coding 소모임 2주차  (0) 2021.07.07
git + coding 소모임 1주차  (0) 2021.07.06
git - branch 2  (0) 2021.06.24
git - branch  (0) 2021.06.24
git - commit 관리 2  (0) 2021.06.23

관련글 더보기