(PR) 방법 전환 #42

Description

@blcklamb

문제 상황

PR 시 이전 것을 close 하지 않으면 이후 PR이 꼬여버리거나
코드리뷰를 원치 않는 commit을 관리하기가 번거롭다.

해결 방법

원본 repository를 fork를 떠서 각자 개별적으로 관리한 뒤
코드리뷰를 원하는 코드만 별도로 PR을 올린다.

Fork?

clone과 유사해보이지만, 용도가 다릅니다.
clone는 기존 저장소의 소스코드 및 git 이력을 복사하는 데 그치기에
이후 다른 사람들끼리 원본 저장소에 기여하려면 다시 pull을 해야 push할 수 있습니다.

fork는 원본 저장소를 가져오면서 원본 저장소와의 연결이 존재합니다.
사본 저장소(forked repo)에서 작업한 뒤 원본 저장소로 기여하려면 PR을 올리고
pending 상태로 둔 다음에 원하는 부분을 쉽게 조정할 수 있다는 점에서 다릅니다.

STEP 1. Fork

자신의 repository로 fork 합니다.

image

image

image

본인이 작업하는 IDE에 clone합니다.

image

STEP 2. Commit

열심히 알고리즘을 풀고 commit할 준비를 합니다.

commit 전 원격 저장소를 update합니다.

$ git remote remove origin
$ git remote add origin {fork한 레포지토리}

image

평소하던대로 commit 합니다.

image

STEP 3. PR

원본 repository로 PR하는 방법은 여러 가지가 있는데, 편한 방법을 택하시면 됩니다.

  1. commit 내역 클릭
    또는
  2. Pull requests>New Pull Request 버튼 클릭

image

다음 캡쳐에서 나온 것처럼 컨벤션을 지키며 메시지를 작성하시면 됩니다.

PR 컨벤션

[CR] N월 N주차

PR 메시지에 포함되어야 할 것

- 문제 번호
- 리뷰어에게 하고 싶은 말(선택)

image

image

STEP 4. Code Review

Code Review

image

image

image

image

STEP 5. Merge

Reviewer에게 Approve를 받았으면, 해당 코드리뷰를 확인한 다음,

Merge Pull Request를 클릭하시면 됩니다.

스크린샷 2022-08-12 오후 3 34 14

예상 문제 상황

  • 원치 않은 commit을 PR에 올렸을 때

<commit 수정 방법>

  • 커밋 내역 확인하기
$ git log --oneline -{보고 싶은 커밋 수}
ex.
git log --oneline -3

스크린샷 2022-08-12 오후 3 50 33

  • 되돌리고 싶은 커밋 개수만큼 reset시키기
    (혹시 모르니 다시 올리고 싶은 파일은 복사해서 임시 저장 해주세요)
$ git reset --hard HEAD~{원하는 개수}
ex.
git reset --hard HEAD~3

스크린샷 2022-08-12 오후 3 52 27

스크린샷 2022-08-12 오후 3 52 33

스크린샷 2022-08-12 오후 3 52 47

  • Merge conflict가 났을 때
    (작성 예정입니다.)

혹시나 읽다가 모르시겠으면 꼭 알려주세요!

Metadata

Metadata

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
     blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
    }
    } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
    })();
    (function(){
    try {
    var __m = "github.com";
    var __re = new RegExp('^' + "github\\.com" + '
    
    Skip to content

    (PR) 방법 전환 #42

    Description

    @blcklamb

    문제 상황

    PR 시 이전 것을 close 하지 않으면 이후 PR이 꼬여버리거나
    코드리뷰를 원치 않는 commit을 관리하기가 번거롭다.

    해결 방법

    원본 repository를 fork를 떠서 각자 개별적으로 관리한 뒤
    코드리뷰를 원하는 코드만 별도로 PR을 올린다.

    Fork?

    clone과 유사해보이지만, 용도가 다릅니다.
    clone는 기존 저장소의 소스코드 및 git 이력을 복사하는 데 그치기에
    이후 다른 사람들끼리 원본 저장소에 기여하려면 다시 pull을 해야 push할 수 있습니다.

    fork는 원본 저장소를 가져오면서 원본 저장소와의 연결이 존재합니다.
    사본 저장소(forked repo)에서 작업한 뒤 원본 저장소로 기여하려면 PR을 올리고
    pending 상태로 둔 다음에 원하는 부분을 쉽게 조정할 수 있다는 점에서 다릅니다.

    STEP 1. Fork

    자신의 repository로 fork 합니다.

    image

    image

    image

    본인이 작업하는 IDE에 clone합니다.

    image

    STEP 2. Commit

    열심히 알고리즘을 풀고 commit할 준비를 합니다.

    commit 전 원격 저장소를 update합니다.

    $ git remote remove origin
    $ git remote add origin {fork한 레포지토리}

    image

    평소하던대로 commit 합니다.

    image

    STEP 3. PR

    원본 repository로 PR하는 방법은 여러 가지가 있는데, 편한 방법을 택하시면 됩니다.

    1. commit 내역 클릭
      또는
    2. Pull requests>New Pull Request 버튼 클릭

    image

    다음 캡쳐에서 나온 것처럼 컨벤션을 지키며 메시지를 작성하시면 됩니다.

    PR 컨벤션

    [CR] N월 N주차
    

    PR 메시지에 포함되어야 할 것

    - 문제 번호
    - 리뷰어에게 하고 싶은 말(선택)
    

    image

    image

    STEP 4. Code Review

    Code Review

    image

    image

    image

    image

    STEP 5. Merge

    Reviewer에게 Approve를 받았으면, 해당 코드리뷰를 확인한 다음,

    Merge Pull Request를 클릭하시면 됩니다.

    스크린샷 2022-08-12 오후 3 34 14

    예상 문제 상황

    • 원치 않은 commit을 PR에 올렸을 때

    <commit 수정 방법>

    • 커밋 내역 확인하기
    $ git log --oneline -{보고 싶은 커밋 수}
    ex.
    git log --oneline -3

    스크린샷 2022-08-12 오후 3 50 33

    • 되돌리고 싶은 커밋 개수만큼 reset시키기
      (혹시 모르니 다시 올리고 싶은 파일은 복사해서 임시 저장 해주세요)
    $ git reset --hard HEAD~{원하는 개수}
    ex.
    git reset --hard HEAD~3

    스크린샷 2022-08-12 오후 3 52 27

    스크린샷 2022-08-12 오후 3 52 33

    스크린샷 2022-08-12 오후 3 52 47

    • Merge conflict가 났을 때
      (작성 예정입니다.)

    혹시나 읽다가 모르시겠으면 꼭 알려주세요!

    Metadata

    Metadata

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
      Skip to content

      (PR) 방법 전환 #42

      Description

      @blcklamb

      문제 상황

      PR 시 이전 것을 close 하지 않으면 이후 PR이 꼬여버리거나
      코드리뷰를 원치 않는 commit을 관리하기가 번거롭다.

      해결 방법

      원본 repository를 fork를 떠서 각자 개별적으로 관리한 뒤
      코드리뷰를 원하는 코드만 별도로 PR을 올린다.

      Fork?

      clone과 유사해보이지만, 용도가 다릅니다.
      clone는 기존 저장소의 소스코드 및 git 이력을 복사하는 데 그치기에
      이후 다른 사람들끼리 원본 저장소에 기여하려면 다시 pull을 해야 push할 수 있습니다.

      fork는 원본 저장소를 가져오면서 원본 저장소와의 연결이 존재합니다.
      사본 저장소(forked repo)에서 작업한 뒤 원본 저장소로 기여하려면 PR을 올리고
      pending 상태로 둔 다음에 원하는 부분을 쉽게 조정할 수 있다는 점에서 다릅니다.

      STEP 1. Fork

      자신의 repository로 fork 합니다.

      image

      image

      image

      본인이 작업하는 IDE에 clone합니다.

      image

      STEP 2. Commit

      열심히 알고리즘을 풀고 commit할 준비를 합니다.

      commit 전 원격 저장소를 update합니다.

      $ git remote remove origin
      $ git remote add origin {fork한 레포지토리}

      image

      평소하던대로 commit 합니다.

      image

      STEP 3. PR

      원본 repository로 PR하는 방법은 여러 가지가 있는데, 편한 방법을 택하시면 됩니다.

      1. commit 내역 클릭
        또는
      2. Pull requests>New Pull Request 버튼 클릭

      image

      다음 캡쳐에서 나온 것처럼 컨벤션을 지키며 메시지를 작성하시면 됩니다.

      PR 컨벤션

      [CR] N월 N주차
      

      PR 메시지에 포함되어야 할 것

      - 문제 번호
      - 리뷰어에게 하고 싶은 말(선택)
      

      image

      image

      STEP 4. Code Review

      Code Review

      image

      image

      image

      image

      STEP 5. Merge

      Reviewer에게 Approve를 받았으면, 해당 코드리뷰를 확인한 다음,

      Merge Pull Request를 클릭하시면 됩니다.

      스크린샷 2022-08-12 오후 3 34 14

      예상 문제 상황

      • 원치 않은 commit을 PR에 올렸을 때

      <commit 수정 방법>

      • 커밋 내역 확인하기
      $ git log --oneline -{보고 싶은 커밋 수}
      ex.
      git log --oneline -3

      스크린샷 2022-08-12 오후 3 50 33

      • 되돌리고 싶은 커밋 개수만큼 reset시키기
        (혹시 모르니 다시 올리고 싶은 파일은 복사해서 임시 저장 해주세요)
      $ git reset --hard HEAD~{원하는 개수}
      ex.
      git reset --hard HEAD~3

      스크린샷 2022-08-12 오후 3 52 27

      스크린샷 2022-08-12 오후 3 52 33

      스크린샷 2022-08-12 오후 3 52 47

      • Merge conflict가 났을 때
        (작성 예정입니다.)

      혹시나 읽다가 모르시겠으면 꼭 알려주세요!

      Metadata

      Metadata

      Labels

      Type

      No type

      Projects

      No projects

        Milestone

        No milestone

        Relationships

        None yet

        Development

        No branches or pull requests

        Issue actions

        , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
        Skip to content

        (PR) 방법 전환 #42

        Description

        @blcklamb

        문제 상황

        PR 시 이전 것을 close 하지 않으면 이후 PR이 꼬여버리거나
        코드리뷰를 원치 않는 commit을 관리하기가 번거롭다.

        해결 방법

        원본 repository를 fork를 떠서 각자 개별적으로 관리한 뒤
        코드리뷰를 원하는 코드만 별도로 PR을 올린다.

        Fork?

        clone과 유사해보이지만, 용도가 다릅니다.
        clone는 기존 저장소의 소스코드 및 git 이력을 복사하는 데 그치기에
        이후 다른 사람들끼리 원본 저장소에 기여하려면 다시 pull을 해야 push할 수 있습니다.

        fork는 원본 저장소를 가져오면서 원본 저장소와의 연결이 존재합니다.
        사본 저장소(forked repo)에서 작업한 뒤 원본 저장소로 기여하려면 PR을 올리고
        pending 상태로 둔 다음에 원하는 부분을 쉽게 조정할 수 있다는 점에서 다릅니다.

        STEP 1. Fork

        자신의 repository로 fork 합니다.

        image

        image

        image

        본인이 작업하는 IDE에 clone합니다.

        image

        STEP 2. Commit

        열심히 알고리즘을 풀고 commit할 준비를 합니다.

        commit 전 원격 저장소를 update합니다.

        $ git remote remove origin
        $ git remote add origin {fork한 레포지토리}

        image

        평소하던대로 commit 합니다.

        image

        STEP 3. PR

        원본 repository로 PR하는 방법은 여러 가지가 있는데, 편한 방법을 택하시면 됩니다.

        1. commit 내역 클릭
          또는
        2. Pull requests>New Pull Request 버튼 클릭

        image

        다음 캡쳐에서 나온 것처럼 컨벤션을 지키며 메시지를 작성하시면 됩니다.

        PR 컨벤션

        [CR] N월 N주차
        

        PR 메시지에 포함되어야 할 것

        - 문제 번호
        - 리뷰어에게 하고 싶은 말(선택)
        

        image

        image

        STEP 4. Code Review

        Code Review

        image

        image

        image

        image

        STEP 5. Merge

        Reviewer에게 Approve를 받았으면, 해당 코드리뷰를 확인한 다음,

        Merge Pull Request를 클릭하시면 됩니다.

        스크린샷 2022-08-12 오후 3 34 14

        예상 문제 상황

        • 원치 않은 commit을 PR에 올렸을 때

        <commit 수정 방법>

        • 커밋 내역 확인하기
        $ git log --oneline -{보고 싶은 커밋 수}
        ex.
        git log --oneline -3

        스크린샷 2022-08-12 오후 3 50 33

        • 되돌리고 싶은 커밋 개수만큼 reset시키기
          (혹시 모르니 다시 올리고 싶은 파일은 복사해서 임시 저장 해주세요)
        $ git reset --hard HEAD~{원하는 개수}
        ex.
        git reset --hard HEAD~3

        스크린샷 2022-08-12 오후 3 52 27

        스크린샷 2022-08-12 오후 3 52 33

        스크린샷 2022-08-12 오후 3 52 47

        • Merge conflict가 났을 때
          (작성 예정입니다.)

        혹시나 읽다가 모르시겠으면 꼭 알려주세요!

        Metadata

        Metadata

        Labels

        Type

        No type

        Projects

        No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
          Skip to content

          (PR) 방법 전환 #42

          Description

          @blcklamb

          문제 상황

          PR 시 이전 것을 close 하지 않으면 이후 PR이 꼬여버리거나
          코드리뷰를 원치 않는 commit을 관리하기가 번거롭다.

          해결 방법

          원본 repository를 fork를 떠서 각자 개별적으로 관리한 뒤
          코드리뷰를 원하는 코드만 별도로 PR을 올린다.

          Fork?

          clone과 유사해보이지만, 용도가 다릅니다.
          clone는 기존 저장소의 소스코드 및 git 이력을 복사하는 데 그치기에
          이후 다른 사람들끼리 원본 저장소에 기여하려면 다시 pull을 해야 push할 수 있습니다.

          fork는 원본 저장소를 가져오면서 원본 저장소와의 연결이 존재합니다.
          사본 저장소(forked repo)에서 작업한 뒤 원본 저장소로 기여하려면 PR을 올리고
          pending 상태로 둔 다음에 원하는 부분을 쉽게 조정할 수 있다는 점에서 다릅니다.

          STEP 1. Fork

          자신의 repository로 fork 합니다.

          image

          image

          image

          본인이 작업하는 IDE에 clone합니다.

          image

          STEP 2. Commit

          열심히 알고리즘을 풀고 commit할 준비를 합니다.

          commit 전 원격 저장소를 update합니다.

          $ git remote remove origin
          $ git remote add origin {fork한 레포지토리}

          image

          평소하던대로 commit 합니다.

          image

          STEP 3. PR

          원본 repository로 PR하는 방법은 여러 가지가 있는데, 편한 방법을 택하시면 됩니다.

          1. commit 내역 클릭
            또는
          2. Pull requests>New Pull Request 버튼 클릭

          image

          다음 캡쳐에서 나온 것처럼 컨벤션을 지키며 메시지를 작성하시면 됩니다.

          PR 컨벤션

          [CR] N월 N주차
          

          PR 메시지에 포함되어야 할 것

          - 문제 번호
          - 리뷰어에게 하고 싶은 말(선택)
          

          image

          image

          STEP 4. Code Review

          Code Review

          image

          image

          image

          image

          STEP 5. Merge

          Reviewer에게 Approve를 받았으면, 해당 코드리뷰를 확인한 다음,

          Merge Pull Request를 클릭하시면 됩니다.

          스크린샷 2022-08-12 오후 3 34 14

          예상 문제 상황

          • 원치 않은 commit을 PR에 올렸을 때

          <commit 수정 방법>

          • 커밋 내역 확인하기
          $ git log --oneline -{보고 싶은 커밋 수}
          ex.
          git log --oneline -3

          스크린샷 2022-08-12 오후 3 50 33

          • 되돌리고 싶은 커밋 개수만큼 reset시키기
            (혹시 모르니 다시 올리고 싶은 파일은 복사해서 임시 저장 해주세요)
          $ git reset --hard HEAD~{원하는 개수}
          ex.
          git reset --hard HEAD~3

          스크린샷 2022-08-12 오후 3 52 27

          스크린샷 2022-08-12 오후 3 52 33

          스크린샷 2022-08-12 오후 3 52 47

          • Merge conflict가 났을 때
            (작성 예정입니다.)

          혹시나 읽다가 모르시겠으면 꼭 알려주세요!

          Metadata

          Metadata

          Labels

          Type

          No type

          Projects

          No projects

            Milestone

            No milestone

            Relationships

            None yet

            Development

            No branches or pull requests

            Issue actions

            , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
            Skip to content

            (PR) 방법 전환 #42

            Description

            @blcklamb

            문제 상황

            PR 시 이전 것을 close 하지 않으면 이후 PR이 꼬여버리거나
            코드리뷰를 원치 않는 commit을 관리하기가 번거롭다.

            해결 방법

            원본 repository를 fork를 떠서 각자 개별적으로 관리한 뒤
            코드리뷰를 원하는 코드만 별도로 PR을 올린다.

            Fork?

            clone과 유사해보이지만, 용도가 다릅니다.
            clone는 기존 저장소의 소스코드 및 git 이력을 복사하는 데 그치기에
            이후 다른 사람들끼리 원본 저장소에 기여하려면 다시 pull을 해야 push할 수 있습니다.

            fork는 원본 저장소를 가져오면서 원본 저장소와의 연결이 존재합니다.
            사본 저장소(forked repo)에서 작업한 뒤 원본 저장소로 기여하려면 PR을 올리고
            pending 상태로 둔 다음에 원하는 부분을 쉽게 조정할 수 있다는 점에서 다릅니다.

            STEP 1. Fork

            자신의 repository로 fork 합니다.

            image

            image

            image

            본인이 작업하는 IDE에 clone합니다.

            image

            STEP 2. Commit

            열심히 알고리즘을 풀고 commit할 준비를 합니다.

            commit 전 원격 저장소를 update합니다.

            $ git remote remove origin
            $ git remote add origin {fork한 레포지토리}

            image

            평소하던대로 commit 합니다.

            image

            STEP 3. PR

            원본 repository로 PR하는 방법은 여러 가지가 있는데, 편한 방법을 택하시면 됩니다.

            1. commit 내역 클릭
              또는
            2. Pull requests>New Pull Request 버튼 클릭

            image

            다음 캡쳐에서 나온 것처럼 컨벤션을 지키며 메시지를 작성하시면 됩니다.

            PR 컨벤션

            [CR] N월 N주차
            

            PR 메시지에 포함되어야 할 것

            - 문제 번호
            - 리뷰어에게 하고 싶은 말(선택)
            

            image

            image

            STEP 4. Code Review

            Code Review

            image

            image

            image

            image

            STEP 5. Merge

            Reviewer에게 Approve를 받았으면, 해당 코드리뷰를 확인한 다음,

            Merge Pull Request를 클릭하시면 됩니다.

            스크린샷 2022-08-12 오후 3 34 14

            예상 문제 상황

            • 원치 않은 commit을 PR에 올렸을 때

            <commit 수정 방법>

            • 커밋 내역 확인하기
            $ git log --oneline -{보고 싶은 커밋 수}
            ex.
            git log --oneline -3

            스크린샷 2022-08-12 오후 3 50 33

            • 되돌리고 싶은 커밋 개수만큼 reset시키기
              (혹시 모르니 다시 올리고 싶은 파일은 복사해서 임시 저장 해주세요)
            $ git reset --hard HEAD~{원하는 개수}
            ex.
            git reset --hard HEAD~3

            스크린샷 2022-08-12 오후 3 52 27

            스크린샷 2022-08-12 오후 3 52 33

            스크린샷 2022-08-12 오후 3 52 47

            • Merge conflict가 났을 때
              (작성 예정입니다.)

            혹시나 읽다가 모르시겠으면 꼭 알려주세요!

            Metadata

            Metadata

            Labels

            Type

            No type

            Projects

            No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              (PR) 방법 전환 #42

              Description

              @blcklamb

              문제 상황

              PR 시 이전 것을 close 하지 않으면 이후 PR이 꼬여버리거나
              코드리뷰를 원치 않는 commit을 관리하기가 번거롭다.

              해결 방법

              원본 repository를 fork를 떠서 각자 개별적으로 관리한 뒤
              코드리뷰를 원하는 코드만 별도로 PR을 올린다.

              Fork?

              clone과 유사해보이지만, 용도가 다릅니다.
              clone는 기존 저장소의 소스코드 및 git 이력을 복사하는 데 그치기에
              이후 다른 사람들끼리 원본 저장소에 기여하려면 다시 pull을 해야 push할 수 있습니다.

              fork는 원본 저장소를 가져오면서 원본 저장소와의 연결이 존재합니다.
              사본 저장소(forked repo)에서 작업한 뒤 원본 저장소로 기여하려면 PR을 올리고
              pending 상태로 둔 다음에 원하는 부분을 쉽게 조정할 수 있다는 점에서 다릅니다.

              STEP 1. Fork

              자신의 repository로 fork 합니다.

              image

              image

              image

              본인이 작업하는 IDE에 clone합니다.

              image

              STEP 2. Commit

              열심히 알고리즘을 풀고 commit할 준비를 합니다.

              commit 전 원격 저장소를 update합니다.

              $ git remote remove origin
              $ git remote add origin {fork한 레포지토리}

              image

              평소하던대로 commit 합니다.

              image

              STEP 3. PR

              원본 repository로 PR하는 방법은 여러 가지가 있는데, 편한 방법을 택하시면 됩니다.

              1. commit 내역 클릭
                또는
              2. Pull requests>New Pull Request 버튼 클릭

              image

              다음 캡쳐에서 나온 것처럼 컨벤션을 지키며 메시지를 작성하시면 됩니다.

              PR 컨벤션

              [CR] N월 N주차
              

              PR 메시지에 포함되어야 할 것

              - 문제 번호
              - 리뷰어에게 하고 싶은 말(선택)
              

              image

              image

              STEP 4. Code Review

              Code Review

              image

              image

              image

              image

              STEP 5. Merge

              Reviewer에게 Approve를 받았으면, 해당 코드리뷰를 확인한 다음,

              Merge Pull Request를 클릭하시면 됩니다.

              스크린샷 2022-08-12 오후 3 34 14

              예상 문제 상황

              • 원치 않은 commit을 PR에 올렸을 때

              <commit 수정 방법>

              • 커밋 내역 확인하기
              $ git log --oneline -{보고 싶은 커밋 수}
              ex.
              git log --oneline -3

              스크린샷 2022-08-12 오후 3 50 33

              • 되돌리고 싶은 커밋 개수만큼 reset시키기
                (혹시 모르니 다시 올리고 싶은 파일은 복사해서 임시 저장 해주세요)
              $ git reset --hard HEAD~{원하는 개수}
              ex.
              git reset --hard HEAD~3

              스크린샷 2022-08-12 오후 3 52 27

              스크린샷 2022-08-12 오후 3 52 33

              스크린샷 2022-08-12 오후 3 52 47

              • Merge conflict가 났을 때
                (작성 예정입니다.)

              혹시나 읽다가 모르시겠으면 꼭 알려주세요!

              Metadata

              Metadata

              Labels

              Type

              No type

              Projects

              No projects

                Milestone

                No milestone

                Relationships

                None yet

                Development

                No branches or pull requests

                Issue actions

                , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                Skip to content

                (PR) 방법 전환 #42

                Description

                @blcklamb

                문제 상황

                PR 시 이전 것을 close 하지 않으면 이후 PR이 꼬여버리거나
                코드리뷰를 원치 않는 commit을 관리하기가 번거롭다.

                해결 방법

                원본 repository를 fork를 떠서 각자 개별적으로 관리한 뒤
                코드리뷰를 원하는 코드만 별도로 PR을 올린다.

                Fork?

                clone과 유사해보이지만, 용도가 다릅니다.
                clone는 기존 저장소의 소스코드 및 git 이력을 복사하는 데 그치기에
                이후 다른 사람들끼리 원본 저장소에 기여하려면 다시 pull을 해야 push할 수 있습니다.

                fork는 원본 저장소를 가져오면서 원본 저장소와의 연결이 존재합니다.
                사본 저장소(forked repo)에서 작업한 뒤 원본 저장소로 기여하려면 PR을 올리고
                pending 상태로 둔 다음에 원하는 부분을 쉽게 조정할 수 있다는 점에서 다릅니다.

                STEP 1. Fork

                자신의 repository로 fork 합니다.

                image

                image

                image

                본인이 작업하는 IDE에 clone합니다.

                image

                STEP 2. Commit

                열심히 알고리즘을 풀고 commit할 준비를 합니다.

                commit 전 원격 저장소를 update합니다.

                $ git remote remove origin
                $ git remote add origin {fork한 레포지토리}

                image

                평소하던대로 commit 합니다.

                image

                STEP 3. PR

                원본 repository로 PR하는 방법은 여러 가지가 있는데, 편한 방법을 택하시면 됩니다.

                1. commit 내역 클릭
                  또는
                2. Pull requests>New Pull Request 버튼 클릭

                image

                다음 캡쳐에서 나온 것처럼 컨벤션을 지키며 메시지를 작성하시면 됩니다.

                PR 컨벤션

                [CR] N월 N주차
                

                PR 메시지에 포함되어야 할 것

                - 문제 번호
                - 리뷰어에게 하고 싶은 말(선택)
                

                image

                image

                STEP 4. Code Review

                Code Review

                image

                image

                image

                image

                STEP 5. Merge

                Reviewer에게 Approve를 받았으면, 해당 코드리뷰를 확인한 다음,

                Merge Pull Request를 클릭하시면 됩니다.

                스크린샷 2022-08-12 오후 3 34 14

                예상 문제 상황

                • 원치 않은 commit을 PR에 올렸을 때

                <commit 수정 방법>

                • 커밋 내역 확인하기
                $ git log --oneline -{보고 싶은 커밋 수}
                ex.
                git log --oneline -3

                스크린샷 2022-08-12 오후 3 50 33

                • 되돌리고 싶은 커밋 개수만큼 reset시키기
                  (혹시 모르니 다시 올리고 싶은 파일은 복사해서 임시 저장 해주세요)
                $ git reset --hard HEAD~{원하는 개수}
                ex.
                git reset --hard HEAD~3

                스크린샷 2022-08-12 오후 3 52 27

                스크린샷 2022-08-12 오후 3 52 33

                스크린샷 2022-08-12 오후 3 52 47

                • Merge conflict가 났을 때
                  (작성 예정입니다.)

                혹시나 읽다가 모르시겠으면 꼭 알려주세요!

                Metadata

                Metadata

                Labels

                Type

                No type

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions