본문 바로가기
반응형

분류 전체보기703

[GIT] 깃(Git) 참조 로그(reflog)란? (ft. 커밋 취소 복구하기) git reflog git reflog란 무엇일까? 여기서 reflog는 reference log를 의미한다. 즉, 제목에서 쓰인 것처럼 참조 로그를 말한다고 생각하면 된다. 이력이라고 해서 모든 사소한 이력을 기록하는 게 아니라, 이전에 HEAD가 가리키고 있었던 내용들을 전부 기록한다고 생각하면 된다. (명령어로 인해 가리키고 있던 HEAD의 포인터가 변경될 때마다 저장된다고 생각하면 된다.) $ git reflog 그렇다면 이 git reflog를 통해 무엇을 할 수 있을까? 일단 가장 흔하게 사용되는 것은 git reset --hard 옵션을 통해 날려버렸던 내용들을 다시 복구하는데 주로 사용된다. 말 그대로 커밋 취소를 취소한다(?) 라고 생각할 수 있을 것 같다. 그 외에 브랜치를 복구한다거나.. 2022. 10. 19.
[GIT] 깃(Git) 커밋(Commit) 취소하기 (ft. amend/reset/revert) GIT을 사용하다 보면 커밋을 덮어쓰거나(amend), 취소하거나(reset), 되돌려나(revert) 하는 상황이 발생할 수 있다. 각 명령어를 사용하는 방법에 대해 알아보고자 한다. git add 취소하기 제목이랑 좀 연관이 없을 수 있는데, 그래도 commit을 하기 위해서는 add를 먼저 해야 하기 때문에 add 취소에 대해 먼저 알아보도록 하자. 현재 아래와 같은 상황이라고 가정해보자. git은 친절하게도 취소하는 방법에 대해 어느 정도 설명을 해주고 있다. 현재 git staged 상태의 a.txt를 취소하기 위해서는 git restore --staged 을 입력하라고 안내하고 있으며, staged area에 없는 b.txt를 취소하기 위해서는 git restore 을 입력하라고 쓰여있다. 여.. 2022. 10. 19.
[GIT] 깃(Git) 별칭(Alias) 사용하기 git alias git alias라는 명령어가 따로 존재한다기보다는, 지금까지 git을 사용할 때 자주 사용했던 명령어들을 별칭으로 좀 더 쉽고 편안하게 쓸 수 있게 만들어주는 기능이라고 생각하면 된다. 명령어를 통해 간단하게 설정이 가능하다. 아래는 가장 흔하게 사용되는 별칭이며 공식문서에서도 안내하고 있는 별칭들이다. $ git config --global alias.co checkout $ git config --global alias.br branch $ git config --global alias.ci commit $ git config --global alias.st status 별칭을 이런 식으로 git config --global에 설정을 해주었다면 다음과 같이 사용하면 된다. # gi.. 2022. 10. 18.
[GIT] 깃(Git) 스태시(stash) 사용하기 - 변경된 내용 임시 저장하기 git stash git stash는 무엇일까? git stash는 파일의 변경 내용을 일시적으로 기록해두는 영역이라고 생각하면 된다. 실제로 현업에서 git을 사용하다 보면 생각보다 많이 사용하게 되는 게 git stash라고 한다. 예를 들어 아직 commit 하기 이전에 작업을 진행 중이었는데, 정말 급한 일들 현재 내가 하고 있는 업무보다 우선순위가 높은 새로운 업무를 받거나, 버그를 당장 고쳐야 한다거나 할 때 지금 하고 있는 작업을 commit 하기 애매하다면 git stash를 사용해 현재 변경했던 모든 내용들을 일시적으로 저장할 수 있다. 그리고 우선순위가 높은 작업들을 전부 처리한 뒤 git stash로 임시 저장한 내용들을 다시 불러와 작업을 이어서 할 수 있다. 스태시 저장하기 현재 .. 2022. 10. 18.
[GIT] 깃(Git) 체리픽(cherry-pick) - 필요한 commit만 가져오기 git cherry-pick git cherry-pick이 뭘까? git cherry-pick은 제목과 마찬가지로 필요한 commit만 골라서 가져오는 명령어이다. 쉽게 말해 다른 브랜치에 있는 commit들 중에서 원하는, 필요한 commit을 지금 내 브랜치에 가져와 commit을 하는 것이다. 참고로 해당 commit을 branch끼리 옮기는 게 아니라 동일한 commit을 다른 branch에 복사하는 개념이라고 생각하면 된다. (실제로 commit이 추가된다.) 그렇다면 cherry-pick은 언제 사용하는 걸까? git cherry-pick은 유용한 도구이지만 같은 commit이 중복되는 일이 발생하거나 그 외에도 여러가지 문제가 발생할 수 있기 때문에 꼭 필요한 상황에서만 사용하는 것을 권장한.. 2022. 10. 18.
[GIT] 브랜치 병합 충돌 시 해결 (ft. mergetool set vscode) 우선 이전에 작성한 글에서 브랜치 병합에는 merge와 rebase가 있다고 설명을 하였다. 보통 충돌이 나는 이유는 "같은 파일"을 대상으로 작업을 할 때 충돌이 가장 많이 난다고 생각된다. 각각 merge와 rebase에서 충돌이 날 경우 처리해 주는 방법이 다른데 이 방법에 대해 알아보자. git merge conflict 우선 서로 다른 브랜치가 같은 파일을 수정했다는 상황에서 시작해보자. 여기서 지금 master 브랜치와 record 브랜치가 동일한 b.txt라는 파일을 수정해서 commit을 진행하였다. 만약 여기서 merge를 하게 되면 어떻게 될까? 바로 b.txt 라는 파일이 병합하는 도중에 충돌이 났다고 알려준다. 그러고서는 브랜치명이 빨갛게 변한 것을 볼 수 있다. 여기서 간단하게 해.. 2022. 10. 15.
[GIT] 깃(Git) 브랜치(Branch) 사용하기 (ft. 조회/생성/이동/삭제/병합) git branch git을 사용하게 되면 가장 많이 듣는 게 브랜치라고 생각된다. 쉽게 설명하자면 코드를 통째로 복사하고 나서 원래 코드와는 상관없이, 독립적으로 개발을 진행할 수 있게 도와주는게 브랜치의 기능이다. 브랜치를 그냥 단순하게 새로 만들어서 사용해도 좋지만, 만약 혼자 작업하는게 아니라 협업을 한다고 하면 브랜치 전략을 사용하는것이 좋다. 브랜치 전략에 대해 설명하자면 또 길어지니 브랜치 전략에 링크를 걸어두었으니 가서 확인해 보도록 하자. 브랜치 조회하기 git branch라는 명령어를 통해 간단하게 현재 존재하는 브랜치를 조회할 수 있다. $ git branch * master 아래 화면을 보면 현재 존재하는 브랜치가 master 브랜치뿐이라는 것을 알 수 있다. 여기서 재미난 점은 브.. 2022. 10. 15.
[알고리즘] 접두사합(prefix sum) 알고리즘 by javascript (ft. 부분합/구간합) Prefix Sum(접두사 합) 부분합, 누적합, 구간합 등으로 불리며 해당 합을 빠르게 구하는 알고리즘이다. 사실 알고리즘 치고는 매우 간단하다. 이 알고리즘의 원리는 다음과 같다. 각각의 숫자까지의 합을 미리 계산하여 저장해놓고 그 저장한 값을 활용하여 구간합을 구한다. 사실 접두사합, 구간합, 부분합 알고리즘을 검색하면 많은 블로그가 나올 텐데, 기본적으로 접두사 합 알고리즘의 공식을 다음과 같이 설명하고 있다. P[Right] - P[Left - 1] 크게 틀린 공식은 아니니 일단 이런 식으로 사용하는구나 정도는 알고 진행하면 좋다. 다른 알고리즘도 마찬가지겠지만 문제에 따라 정해진 공식을 사용할 수 없는 경우가 많다. 예를 들어 숫자 [100, 101, 102, 103, 104]가 주어졌다고 가.. 2022. 10. 12.
[GIT] 깃(Git) 태그(tag) 사용하기 (ft. 조회/추가/변경/삭제) git tag git에는 tag를 줄 수 있는 기능이 존재하는데, 보통 릴리즈 버전을 관리하기 위해 사용된다. 릴리즈 할때마다 semantic versioning의 규칙에 따라 태킹을 하고는 한다. (*semantic versioning은 가장 흔하게 버전을 관리할 때 사용하는 규칙이므로 알아두면 좋다.) 태그 조회하기 우선 git tag라는 명령어를 통해 이미 만들어진 태그가 있는지 확인할 수 있다. $ git tag v0.1 v1.3 이 명령어는 알파벳 순서로 태그를 보여주지만, 사실 순서는 그렇게 큰 의미는 없다. 그리고 검색 패턴을 사용하여 태그를 검색할 수 있는데, tag 명령어에 -l 또는 --list 옵션 및 와일드카드(*) 패턴과 함께 사용하여 조건에 맞는 태그를 조회할 수 있다. $ gi.. 2022. 10. 6.
반응형
TOP