Giit now에서 시작하는 Commiit 드라이버 개발

9220 단어 Gitgit-now
이것은 Nextremer Advent Calendar 2016 다음날의 문장이다.

TL;DR


  • git-now 자세히 제출해주세요
  • git push하기 전에 git rebase -i습관을 들여라
  • git-now의 임시 제출을 원래대로 하지 않기 위해Pre-Push Hook
  • 을 설정하십시오.

    개시하다


    지트를 사용하는 데 누구나 고민할 것 같은 일은git push.
    지겹지 않게 밀면 일지가 신기해져...
    그럼에도 불구하고 어느 정도 단위로 미루면 현지의 차분 파일의 양이 신기해진다...

    기본적으로 부지런히 제출하는 것이 좋다


    상세한commiit는 다음과 같은 장점이 있다.
  • 업무 내용에 사용할 수 있는 스냅샷(미세 힘줄이라도 원활한 곳으로 쉽게 복구할 수 있음)
  • 작업 내용은 쉽게 잃어버리지 않는다(reset-hard HEAD를 잘못 두드려도 문제없다)
  • 업무 흐름을 따라잡기 쉽다(예를 들어 무슨 잘못을 저질렀거나 그런 것. 제출하지 않으면 각종 수정이 뒤죽박죽이 되어 자신의 코드임에도 따라잡지 못한다)
  • 갑자기 다른 작업에 들어가도 간단히 전환
  • git stash라면 작업 내용을 저장할 수 있지만 stash 파일을 선택할 수 없습니다
  • git commiit를 실행하면 필요한 파일만 생성할 수 있음
  • (틀리지 않으면) 로컬 창고에서만 하는 말이기 때문에 더럽히지 않고 도표 제출
  • 물론 좋은 점도 있고 나쁜 점도 있다
  • 만약에 메일push가 생기면 참담해진다(뒤에 설명하자면 메시지 제출은 기본적으로 적절하다
  • 매번commiit가 귀찮아요
  • 나는 부지런히 제출하는 것이 가장 좋다는 것을 알고 있지만, 미룰 때 나는 커미션을 총결하고 싶다


    거기서 어떤 입도로 Commiit & Push를 진행할까요!

    git rebase -i 명령을 사용하여 로컬 창고의 미적용 커밋을 편집할 수 있습니다.몇 개의 제출을 하나로 모아 평론을 수정하고 특정한 제출을 배제한다.
    우리는 개발에 열심히 노력하면서 개발을 진행한 다음에 미루는 타이밍에 두드리자git rebase -i.
    pick <commit id #1> 1回目のコミット
    pick <commit id #2> 2回目のコミット
    pick <commit id #3> 3回目のコミット
    pick <commit id #4> 4回目のコミット
    pick <commit id #5> 5回目のコミット
    
    # Rebase ...
    #
    # Commands:
    #  p, pick = use commit
    #  r, reword = use commit, but edit the commit message
    #  e, edit = use commit, but stop for amending
    #  s, squash = use commit, but meld into previous commit
    #  f, fixup = like "squash", but discard this commit's log message
    #  x, exec = run command (the rest of the line) using shell
    #
    # If you remove a line here THAT COMMIT WILL BE LOST.
    # However, if you remove everything, the rebase will be aborted.
    
    이런 화면이 나올 거예요.미추천 위원은 일렬로 전체git rebase -i였다.아래의 도움말에도 pick는 그걸로 직접 제출한다는 뜻이라고 쓰여 있다.변경 pick의 부분을 통해 제출할 수 있습니다.자주 사용하면 다음과 같은 몇 가지가 있습니다.
  • pick: 커밋 사용
  • p: 수정 제출 주석
  • r: 이전 제출로 통합(변경 가능 제출 의견)
  • s: 마지막으로 제출한 것으로 요약
  • 예를 들어 다음과 같이 수정합니다.이제 1-3의 제출을 제출하고 제출 주석을 함께 수정합니다.4~5개 제출을 취합한 뒤 제출 주석을 수정하겠다는 뜻이다.
    r <commit id #1> 1回目のコミット
    f <commit id #2> 2回目のコミット
    f <commit id #3> 3回目のコミット
    r <commit id #4> 4回目のコミット
    f <commit id #5> 5回目のコミット
    
    제출 주석을 변경하려면 ↑f에서 시작한 편집기를 저장하고 닫은 다음 다시 시작하십시오.제출 주석을 입력하고 저장합니다.
    예:

    ※ rebase-i에서git rebase-i 오류가 발생했을 경우

    There is no tracking information for the current branch. 실행 후 다음 오류가 나타날 수 있습니다.
    There is no tracking information for the current branch.
    Please specify which branch you want to rebase against.
    See git-rebase(1) for details.
    
        git rebase <branch>
    
    If you wish to set tracking information for this branch you can do so with:
    
        git branch --set-upstream-to=<remote>/<branch> <your branch>
    
    이 오류가 나타나면 오류 메시지에도 쓰여 있습니다. git rebase -i예: git branch --set-upstream-to=git branch --set-upstream-to=origin/topic-bugfix topic-bugfix 밀어낼 원격 분기를 지정하면 되지만 원격 창고에 없는 분기(밀어내지 않은 분기) 내--set-upstream-to=<remote>/<branch>에서는 분기를 지정하면 됩니다.

    리베이스 사용법은 알지만 자주 제출하면 귀찮겠죠?


    거기는 리베이스예요!


    git-now는 명령 하나로 임시 제출을 쉽게 완성할 수 있는 도구다.
    하마터면 제출을 시작할 뻔했는데 타이밍git-now에 두드리기만 하면 제출했다.
    뭐, 그냥 보통git now쓰면 되지만 매번 메세지를 쓸 때마다 번거롭고 유형도 많고...그래서 사용했다git commit -am "適当なメッセージ".
    Mac 사용자가 Homebrew를 사용한다면 git now 쉽게 가져올 수 있습니다.
    이걸로 가져오는 거예요.brew install git-nowgit nowgit now→ 별로 밀지 말아야 할 것 같은데(ゝ')→git nowgit rebase -i이러한 절차에 따라 개발할 수 있습니다(\') 와

    git push→git now가 편한 건 알지만 잘못 누르면 큰일 나죠?


    거기는 git rebase-i!


    GTI 표준에는 훅 기능이 있습니다.회Pre-Push Hook 또는 コミット前に○○したい의 물건입니다.이번에 プッシュしたら☓☓したい를 사용해서 미룰 때 남은 것이 있는지 검사해 보세요Pre-Push Hook.
    Git Hook은 각 Git 프로젝트git now에서 생성됩니다.거기에 직접 써도 되지만 모든 항목의 변경이 번거롭기 때문에.git/hooks/git init라면 자신의 훅 생성으로 설정하세요.git clone 디렉터리를 만들고 그 아래에 ~/.git_template/hooks/ 파일을 만듭니다.pre-push의 내용은 다음과 같다.
    #!/bin/sh
    
    # An example hook script to verify what is about to be pushed.  Called by "git
    # push" after it has checked the remote status, but before anything has been
    # pushed.  If this script exits with a non-zero status nothing will be pushed.
    #
    # This hook is called with the following parameters:
    #
    # $1 -- Name of the remote to which the push is being done
    # $2 -- URL to which the push is being done
    #
    # If pushing without using a named remote those arguments will be equal.
    #
    # Information about the commits which are being pushed is supplied as lines to
    # the standard input in the form:
    #
    #   <local ref> <local sha1> <remote ref> <remote sha1>
    #
    # This sample shows how to prevent push of commits where the log message starts
    # with "WIP" (work in progress).
    
    remote="$1"
    url="$2"
    
    z40=0000000000000000000000000000000000000000
    
    while read local_ref local_sha remote_ref remote_sha
    do
        if [ "$local_sha" = $z40 ]
        then
            # Handle delete
            :
        else
            if [ "$remote_sha" = $z40 ]
            then
                # New branch, examine all commits
                range="$local_sha"
            else
                # Update to existing branch, examine new commits
                range="$remote_sha..$local_sha"
            fi
    
            # Check for WIP commit
            commit=`git rev-list -n 1 --grep '^\[from now\]' "$range"`
            if [ -n "$commit" ]
            then
                echo >&2 "Found NOW commit in $local_ref, not pushing"
                exit 1
            fi
        fi
    done
    
    exit 0
    
    간단히 말해서 댓글에 pre-push이 포함된 경우 미루는 것을 허용하지 않는다.
    이렇게 하면 [from now] 제출git now 누출된 제출이 남으면 미룰 수 없고 오폭하는 경우가 없습니다(') WO

    TL; DR과 함께


  • git-now 자세히 제출해주세요
  • rebase하기 전에 git push습관을 들여라
  • git-now의 임시 제출을 원래대로 하지 않기 위해Pre-Push Hook
  • 을 설정하십시오.

    좋은 웹페이지 즐겨찾기