5가지 경우git 명령은 제출한 원자성을 유지하는 데 도움을 줍니다.

나는 최근에 훈련소를 졸업하고 첫 번째 개발 업무를 시작했다.
예전의 많은 사람들처럼 첫 주가 정보의 눈사태인 것 같아 당황스러웠다.
본고는 내가 초급 소프트웨어 개발자로서의 첫 주와 원자 제출을 더욱 쉽게 관리하기 위해 배운 새로운Git 명령을 되돌아본다.
만약 당신이 이전에 원자 제출을 들어 본 적이 없다면, 당신은 here과 읽을 수 있습니다.본질적으로 원자 제출은 독립된 작업이나 복구 프로그램을 둘러싸고 이루어진다.
이러한 방식으로 작업을 저장하면 다음과 같은 몇 가지 주요 이점이 있습니다.

  • 너의 역사를 추적하다.git log를 사용하면 제출한 기록을 쉽게 볼 수 있습니다.나는 또 여기에 보충하고 싶은 것이 하나 있다. 제출한 메시지로 모든 변경 사항을 기록하는 것은 매우 중요하다. 그것은 너에게 무엇을 했는지, 그리고 왜 그런지 알려줄 것이다.

  • 복습하기 쉽다.만약 당신의 코드가 원자 변화 하나만 주목한다면, 당신의 심사자는 당신의 코드를 더욱 쉽게 이해할 수 있을 것이다.

  • 회복하기 쉽다.코드에 새로운 버그를 도입하면 변경 사항을 복구하고 문제를 복구하기 쉽다.
  • 깨끗한 작업나무 한 그루를 유지하고 원자의 원리를 지키기 위해 매일 발생할 수 있는 5가지 상황과 이를 어떻게 쉽게 통과할 수 있는지.

    1. 당신은 막 일에 몰두하여 내용을 추가하는 것을 잊었다는 것을 깨달았다git log부터 변경하려는 마지막 제출이 맞는지 확인하십시오.
    commit 2df06c898ba035a0c0878e4f78032b0bd676f3ad (HEAD -> master)
    Date:   Sat Feb 13 14:50:27 2021 +0000
    
        Frontend: Created layout for homepage
    
        This is a base on which we will develop the homepage and add
        new content.
    
    
    변경 사항을 git add.으로 임시 구역에 추가하고 git commit --amend으로 제출합니다.
    이렇게 하면 마지막으로 제출한 내용을 새로 추가한 내용으로 덮어쓸 수 있습니다.
    만약 당신이 지금 git log을 만들고 있다면, 당신은 여전히 제출만 하는 것을 볼 수 있습니다.
    commit 5f7037f6e7e243e178a58b119e56c0b3337cd408 (HEAD -> master)
    Date:   Sat Feb 13 14:50:27 2021 +0000
    
        Frontend: Created layout for homepage
    
        This is a base on which we will develop the homepage and add
        new content.
    

    2.당신은 두 가지 일을 동시에 했지만 각각 하고 싶어요.git add <file>을 사용할 수 있지만 더 강력한 옵션이 있습니다.
    당신의 열쇠는 git add --patch이거나 아예 git add -p입니다.
    이 옵션을 추가하도록 전송하면 파일의 모든 변경 내용이 인덱스에 즉시 추가되지 않고 각 변경 내용을 반복하여 다음과 같이 원하는 작업을 묻습니다.
    diff --git a/styles.css b/styles.css
    index 23d8732..470d5dc 100644
    --- a/styles.css
    +++ b/styles.css
    @@ -2,4 +2,5 @@
         margin: 0;
         padding: 0;
         box-sizing: border-box;
    +    background-color: aquamarine;
     }
    (1/1) Stage this hunk [y,n,q,a,d,e,?]? y
    

    3. 두 제출을 합치길 원합니다. 이 두 제출은 같은 원자 제출의 일부분입니다.git log부터.
    아래의 예에서 우리는 f2662c55f7037f으로 통합하기를 희망한다(예를 들어 마지막 제출을 첫 번째 제출로 통합한다).
    commit f2662c51cf2f14ccb33907267f1d823ff6b8a678 (HEAD -> master)
    Date:   Sat Feb 13 16:36:03 2021 +0000
    
        Frontend: added style link to Index.html
    
        This is in order to be able to see the style changes.
    
    commit f84f936e22a0028ad00d3c33771518f23ac192b2
    Date:   Sat Feb 13 15:29:42 2021 +0000
    
        Frontend: Set up style sheet with default styling
    
        This is a base on which the rest of the homepage will be styled
        upon.
    
    commit 5f7037f6e7e243e178a58b119e56c0b3337cd408
    Date:   Sat Feb 13 14:50:27 2021 +0000
    
        Frontend: Created layout for homepage
    
        This is a base on which we will develop the homepage and add
        new content.
    
    기본 작업 재설정을 완료하려면 git rebase -i Head~2을 입력합니다.
    이것은 우리가 마지막으로 제출한 색인 위치를 2로 유지하기를 원하기 때문에 HEAD~2를 상호작용식rebase 명령에 전달할 수 있음을 의미한다.
    커뮤니케이션 패널을 엽니다. 커뮤니케이션 f2662c5을 찾고, 단어 pickf으로 변경하고, 통합할 커뮤니케이션 (예: 5f7037f) 아래로 이동합니다.
    pick f84f936 Frontend: Set up style sheet with default styling
    f f2662c5 Frontend: added style link to Index.html
    
    # Rebase 5f7037f..f2662c5 onto 5f7037f (2 commands)
    #
    # Commands:
    # p, pick <commit> = use commit
    # r, reword <commit> = use commit, but edit the commit message
    # e, edit <commit> = use commit, but stop for amending
    # s, squash <commit> = use commit, but meld into previous commit
    # f, fixup <commit> = like "squash", but discard this commit's log message
    # x, exec <command> = run command (the rest of the line) using shell
    # b, break = stop here (continue rebase later with 'git rebase --continue')
    # d, drop <commit> = remove commit
    # l, label <label> = label current HEAD with a name
    # t, reset <label> = reset HEAD to a label
    # m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
    # .       create a merge commit using the original merge commit's
    # .       message (or the oneline, if no original merge commit was
    # .       specified). Use -c <commit> to reword the commit message.
    #
    # These lines can be re-ordered; they are executed from top to bottom.
    #
    # If you remove a line here THAT COMMIT WILL BE LOST.
    #
    # However, if you remove everything, the rebase will be aborted.
    
    현재 git log을 검사하면commit f2662c5이 더 이상 존재하지 않습니다.

    4. 귀하의 코드는 이미 심사를 거쳤습니다. 제출에 대한 변경이 필요합니다.
    역사상 더 오래된 제출을 수정하려면 기초를 재조정하는 것이 최선이다.ed57576을 제출할 때 일부 내용을 변경해야 한다고 가정하십시오.
    commit e7433f8b9ff28eb819b8740c6692ffb975b426d4 (HEAD -> feature-button, origin/feature-button)
    Date:   Sun Feb 14 11:53:53 2021 +0000
    
        Frontend: changed border radius value for the button
    
    commit ed57576bf379fd7132eb2338b0be34b71f4a94f2 (main)
    Date:   Sun Feb 14 11:55:38 2021 +0000
    
        Frontend: added border specifications
    
    commit a429de8e24c1a5a05c7c4b24c599b637a4fce715 (origin/main)
    Date:   Sat Feb 13 17:15:56 2021 +0000
    
        Frontend: Added button on landing page
    
    이 경우 rebase -i Head~1을 실행하고 커밋을 편집하기 위해 상호 작용 패널에서 pick을 변경할 수 있습니다.
    e e7433f8 Frontend: changed border radius value for the button
    
    # Rebase ed57576..e7433f8 onto ed57576 (1 command)
    #
    # Commands:
    # p, pick <commit> = use commit
    # r, reword <commit> = use commit, but edit the commit message
    # e, edit <commit> = use commit, but stop for amending
    # s, squash <commit> = use commit, but meld into previous commit
    # f, fixup <commit> = like "squash", but discard this commit's log message
    # x, exec <command> = run command (the rest of the line) using shell
    # b, break = stop here (continue rebase later with 'git rebase --continue')
    # d, drop <commit> = remove commit
    # l, label <label> = label current HEAD with a name
    # t, reset <label> = reset HEAD to a label
    # m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
    # .       create a merge commit using the original merge commit's
    # .       message (or the oneline, if no original merge commit was
    # .       specified). Use -c <commit> to reword the commit message.
    #
    # These lines can be re-ordered; they are executed from top to bottom.
    #
    # If you remove a line here THAT COMMIT WILL BE LOST.
    
    저장한 후 변경을 계속하고 다음을 수행할 수 있습니다.egit add .git commit --amend지점을 원격 저장소로 밀어넣으려면 현재 버전을 교체하기 위해 강제로 해야 합니다.
    이 용도: git rebase --continue.

    5. 주인이 변했어. 너 지금 충돌했어.
    지점 업데이트를 주 노드에 집적하는 방법의 하나는 합병이다.다른 방법은 호스트에서 지점까지의 재기반을 실행하는 것이다.후자의 장점은 깨끗하고 선형적이며 무분별한 제출 역사를 씻어낼 수 있다는 것이다.
    최신 버전의 마스터 가져오기 시작:git push -f origin <feature-name>git checkout master분기 체크 인 및 베이스 재설정 수행git pullgit checkout <branch name>충돌이 있을 경우 유지할 버전을 선택하라는 메시지가 표시됩니다.
    button {
    Accept Current Changes | Accept Incoming Change | Accept both Changes
    <<< HEAD (Current Change)
        border-radius: 2%;
        border: 2px solid red;
        background-color: green;
    =======
        border-radius: 5%;
        background-color:green;
    >>> 376b235 (Frontend: changed border radius value for the button)(Incoming Change)
    }
    
    모든 결합 충돌이 해결되면 수정된 파일을 재데이텀에 추가하고 이 절차를 계속할 수 있습니다.git rebase mastergit add .git rebase --continue깃이 강해!이렇게 많아서 너는 심지어 그것들의 존재조차 모른다.
    나는 장면 방법이 내가 Git의 힘을 어떻게 활용하는지 배우기에 가장 적합하다는 것을 발견했다.만약 당신이 더 많은 연습을 하고 싶다면, 나는 당신이 these개의 연습을 하는 것을 건의합니다.

    좋은 웹페이지 즐겨찾기