본문 바로가기

728x90
반응형

Git & Github

(12)
git: git stash -p # git stash 부분적으로 하기 git stash는, 아직 커밋되지 않은 모든 변화분을 임시보관하며 변화분이 없도록 한다. 그런데 git rebase 등을 통해 특정 커밋 내역의 작업내용을 바꾸려할 때, git stash pop을 통해 변화분을 가져올 수 있는데,문제는 원하지 않는 작업 내용이 포함되어 있기 때문에다시 git stash를 할 수도 없고, git rebase --continue를 할수도 없다. 이때, 특정 변화분만 stash를 통해서 남겨두거나, 남겨두지 않을 수 있다.  위 사진과 같이 build.gradle, LoginScreen.js, ProfileUpdateScreen.js의 3가지 작업내역 중에,ProfileUpdateScreen.js만 남겨두고git stash를 통해서 build.gradle, LoginScre..
git bisect # 오류 발생 커밋 찾기 # 이진 탐색 이진탐색 알고리즘을 이용하여 git에서 특정 커밋을 찾아내는 방법이 있다. git bisect 이진탐색 방식을 통해 오류 또는 성능저하를 발생시키는 커밋을 효율적으로 찾아낼 수 있다. 편하게 현재 커밋과 특정 커밋을 기준점으로 잡는 방법을 해보자. git 이진탐색 시작git bisect start 위 커맨드를 입력하면 다음과 같이 good, bad commit의 입력을 기다리는 상태라고 안내해준다.  status: waiting for both good and bad commits * 현재 커밋을 오류가 나고있는 상태의 bad commit으로 설정git bisect bad 입력시 아래와 같이 good commit의 입력을 기다리고 있다고 안내해준다. (bad commit은 알려져있다는 표시도 함께)  s..
git config # --list # user.name # user.email 현재 설정된 상태 보기git config -lgit config --list user name 설정 (global)git config --global user.name "hwan" user email 설정 (global)git config --global user.email "your-mail@your.domain" 확인git config user.namegit config user.email
git: cherry-pick by range # cherry-pick을 범위로 가져오기 1. 특정 브랜치의 첫 커밋(Head)부터 N번째까지 있는 N개의 커밋을 cherry-pick - 특정 브랜치의 name: dev 이라 할 때, 범위 지정: branch_name~N..branch name git cherry-pick dev~N..develop 2. 커밋 HASH ~ 커밋 HASH 범위의 commit들을 cherry-pick - HASH1~HASH2 까지의 커밋을 가져오기 - HASH1이 더 아래에 있는 과거 커밋 - HASH1, HASH2를 포함해서 cherry-pick git cherry-pick HASH1^..HASH2 3. 커밋 HASH ~ 그 커밋이 위치한 브랜치의 첫 커밋까지 cherry-pick - 커밋 HASH: HASH1 - 그 커밋이 위치한 브랜치: dev git che..
git&github: 내 최근 커밋 위에 pull request 올려서 테스트 (머지 X, rebase 활용하기) 1. pr의 커밋들을 fetch # git fetch upstream pull/PR_ID/head:BRANCH_NAME $ git fetch upstream pull/387/head:pr-387 위와 같이 하면 pr-387이라는 branch가 생기고, 해당 branch에 id 387의 pr이 받아진다. 2. 내 커밋들을 base로 하기 1) pr을 받은 branch(pr-387)로 이동 # git checkout BRANCH_NAME $ git checkout pr-387 2) 내가 base로 하기를 원하는 branch를 rebase한다 # git rebase MY_BRANCH $ git rebase master
git hook: 특정 명령어 금지 시키기 .git/hooks 디렉토리에 pre-push를 만들어서 git push 명령어 전에 다음 로직을 선행시켜서 git push upstream master를 막아보자 $ cd .git/hooks $ nano pre-push 아래 스크립트 작성 #!/bin/sh remote="$1" while read local_ref local_sha remote_ref remote_sha do if [ "$remote" = "upstream" ] && [ "$remote_ref" = "refs/heads/master" ]; then echo "Pushing to upstream master is prohibited." exit 1 fi done exit 0 pre-push 실행권한 주기 $ chmod +x pre-push
git remote 관리 git remote 이름 정해서 url 추가 git remote add remote 이름 변경 git remote rename remote 삭제 git remote remove remote url 변경 git remote set-url
git hooks: .git/hooks .git/hooks git에는 특정 명령어 단계에 따라서 원하는 작동을 script로 실행할 수 있는 기능이 있다. git으로 관리되는 repository에 들어가서 .git/hooks 를 살펴보면 pre-commit.sample, pre-merger-commit.sample 등등의 깃허브 명령어와 관련된 sample 파일들이 있다. 예를 들어 pre-commit 파일 script를 만들어서 실행할 수 있는 예시들이다. $ nano .git/hooks/pre-commit 를 통해 아래 스크립트를 작성해서 commit 전에 실행시킬 수도 있다. #!/bin/sh if git-rev-parse --verify HEAD >/dev/null 2>&1 ; then against=HEAD else # Initial..

728x90
반응형