코딩이 처음이라면, 코드잇
월 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 하게되면 이런 상태로 수정이 가능하다.
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 |