Giit에서 충돌을 제거하려면

7072 단어 Git

개요


언제 올지 모르는 충돌 해소의 날을 위해 마련한 비망록.
(즉, 충돌을 제거하려면 다음을 수행합니다.)

정황


업무 지점에서 편집을 진행한 후 포스터가 나오면 충돌이 발생합니다!

공구.

  • gitlab
  • netbeans
  • 등장 지점

  • develop(합병목표)
  • a_branch(develop으로 통합)
  • b_branch(업무 지점)
  • 전제 조건


    업무 지점 (b branch) 에서 개발자로 끌어내세요.
    먼저브랜치를 합병해서 그 지점 편집자와 경쟁한 것 같아.

    포즈가 나왔을 때 충돌이 생기면 이렇게 표현할 거예요.



    절차.


    개발자를 최신 상태로 전환

    # ブランチをdevelopに切り替えて
    git checkout develop
    
    # pullする(リモートの状態を反映させて最新に)(fetch + mergeでもOK)
    git pull origin develop
    

    개발자를 업무 지점에 합병하다

    # 作業ブランチに切り替えて
    # git checkout <作業ブランチ>
    git checkout b_branch
    
    # developをマージ
    git merge develop
    
    그렇다면 충돌이 일어날 것이다.
    출력
    Auto-merging fuel/app/classes/util/message.php
    CONFLICT (add/add): Merge conflict in fuel/app/classes/util/message.php
    Automatic merge failed; fix conflicts and then commit the result.
    

    컨디션 체크.

    git status
    
    출력
    On branch b_branch
    # ここにも、マージできなかった旨がかいてある
    You have unmerged paths.
      (fix conflicts and run "git commit")
      (use "git merge --abort" to abort the merge)
    
    # a_branchが追加してたファイルで、コンフリクト起こしてないから自動マージされたやつ
    Changes to be committed:
    
            new file:   fuel/app/classes/util/ahoge.php
    
    # コンフリクト起こして自動マージできなかったやつ
    # ※これを修正してコンフリクト解消する必要がある!※
    Unmerged paths:
      (use "git add <file>..." to mark resolution)
    
            both added:      fuel/app/classes/util/message.php
    
    로그도 보고(IDE 플러그인 또는 기타 도구로 확인할 수 있음)
    git log --graph --all --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
    
    (※'git graphiall'에서 확인할 수 있도록gitconfig에 알리스를 설치)

    그럼 충돌 취소


    이번에 넷빈스를 통해 해결한 방법은 IDE를 사용하지 않고 편집기에서 해도 된다.

    확인


    충돌을 일으킨 파일both added이 빨간색으로 표시됩니다.

    대상 파일을 열면 충돌을 일으키는 부분은 다음과 같다.
    <<<<<<< HEAD
    # 作業ブランチでの変更内容
    ・・・
    =======
    # develop(マージしたブランチ)での変更内容
    ・・・
    >>>>>>> develop
    
    이번에는 이런 느낌이야.
    새 파일 및 상수 추가branch b브랜치도 갔고.
    message.php
    <<<<<<< HEAD
    <?php
    
    class Util_Message
    {
        const B_MESSAGE_1 = 'bbranchが追加したメッセージ 1個目。';
        const B_MESSAGE_2 = 'bbranchが追加したメッセージ 2個目。';
    =======
    <?php
    
    class Util_Message
    {
        const A_MESSAGE_1 = 'abranchが追加したメッセージ 1個目。';
        const A_MESSAGE_2 = 'abranchが追加したメッセージ 2個目。';
    >>>>>>> develop
    }
    

    차이를 확인하면서 편집합니다.


    개체 파일→fuel/app/classes/util/message.phpGit差分를 마우스 오른쪽 버튼으로 클릭합니다.

    이렇게 하면 차이를 보면서 수정할 수 있어요.

    수정하면 이런 느낌이야.어떤 수정이 있었는지 쉽게 볼 수 있다.
    이렇게 저장합니다.

    편집된 파일을 검사하다


    만약 이렇게 하지 않는다면,git는 자신이 이미 충돌을 없앴다는 것을 의식하지 못할 것이다
    git add fuel/app/classes/util/message.php
    

    확인

    git status
    
    충돌 방지 및 편집된 파일 추가
    출력
    On branch b_branch
    All conflicts fixed but you are still merging.
      (use "git commit" to conclude merge)
    
    Changes to be committed:
    
            new file:   fuel/app/classes/util/ahoge.php
            modified:   fuel/app/classes/util/message.php
    
    

    그리고 바로 커밋과 푸쉬로 OK.

    git commit -m "コンフリクト解消" # デフォルトのマージコミットコメントを使用する場合は、git commitのみでenter。エディタが開くので、コミットコメントを保存。
    
    git push origin b_branch
    

    일단 일지를 한번 보도록 하겠습니다.


    가지를 나눈 건 잘 모으는 거예요?어휘력.

    gitlab 확인


    포스터 화면을 열면 충돌이 없어져서 정보를 교환할 것 같아요.

    끝맺다


    후기

  • 이번에는merge로 해결했지만rebase방법(안 해봤어)
  • 도 있어요.
  • vim을 사용하면git mergetool로 파일을 편집하는 것이 좋겠죠?
  • 좋은 웹페이지 즐겨찾기