어떻게 공공 관계 중의 약속을 억압합니까
9110 단어 beginnerstutorialgitopensource
제목 이미지는 Saloni에 의해 생성됩니다.Git 아트웍, 텍스트 생성Milan
안녕하세요!
알다시피,hacktoberfest가 곧 다가올 것입니다. 약 한 달 후에, 당신들 중 많은 사람들이 개원 프로젝트에 도움을 제공할 것입니다.물론 프로젝트를 하는 것은 부작용이다. 우리가 왜 이러는지 알아...😏😏 분명히 나무를 심었다🌳🌲🌳🌲 (솔직히 올해 들불의 수를 감안하면 우리는 이렇게 해야 한다)
어쨌든 PR을 만들 때 포맷 압축이나 맞춤법 오류 제출을 요구받을 수 있습니다. 구글 검색 시간을 절약하기 위해 PR의 제출을 왜, 언제, 어떻게 압축하는지 알려드리기 위해 이 글을 썼습니다.
너는 왜 물건을 납작하게 눌러???
상상해 보세요. 당신은 이미 예쁜 코드를 짰고, 모두가 알고 있는 형식으로 평론을 썼으며, 코드는 컴파일되고 실행 중입니다. 당신은 완벽한 제출 메시지로 만족스럽게 제출했습니다...나중에 네가 맞춤법 오류를 범했다는 것을 깨달았다🥲🤦 이제 소프트 리셋을 사용해서 오류를 복구하고 다시 제출할 수 있다. 더 현명한 사람은 없을 것이다. 그러나 만약 당신이 PR에서 제출을 미루었다면?
더욱 현실적으로 말하자면, 만약 당신이 공관을 하고 있다면, 당신이 제출을 추진할 때, 그들은 심사를 받았고, 당신이 부주의로 격식과 제출을 어지럽혔다.또는 PR에서 진행 중인 토론에서 패치를 제출했습니다. 이제 PR을 병합하기 전에 패치를 병합하기를 원합니다. 왜냐하면 낡은 패치는 진정한 의미가 없기 때문입니다.이것이 바로 압축 제출의 편리한 점이다.
압출은 제출 조합이나 압출을 함께 하여 좋은git 역사를 남길 수 있습니다.이 방식을 통해 모든 패치 제출을 하나의 제출에 통합하거나, 형식과 맞춤법 오류 제출을 다른 제출에 압축해서 제출해야 하는git 기록만 남길 수 있습니다.
압출은 언제 진행합니까?
현재 중요한 주의사항이 하나 있는데, 만약 저장소로 전송된 주 지점을 제출한다면, 그것들을 압박해서는 안 된다.git history의 변경 사항을 압축하는 것은 이 지점의 모든 지점의 역사가 저장소와 일치하지 않는다는 것을 의미합니다. 이것은 모든 사람에게 많은 합병 충돌을 가져올 뿐만 아니라 충돌이 발생할 때의 상황을 알고 있습니까?😉 😉
단, 만약 당신이 처리하고 있는 지점이 어떤 문제의 주요 지점이 아니라, 주요 지점에 대해 PR을 하려고 한다면, 제출을 압박할 수 있습니다.대다수 때 당신은 그 특정한 지점에서 혼자 일하기 때문에 역사가 변해도 다른 누구에게도 영향을 주지 않는다.그리고 일단 모든 것이 완성되면, 너는 공관을 합병하여 어떠한 역사적 충돌도 없을 수 있다.
어떻게 압출합니까
예를 들어 봅시다.당신이 일하고 있는 프로젝트를 고려하면, 그 프로젝트의 주요 부분은 이미 약간의 약속이 있다.
# run git log --pretty=oneline
7dc92d4...(HEAD -> Main) Add ReadMe
d3395b0... Initial Commit
이제 나무를 심어야 돼요.🌲🌳 너는 이 프로젝트에 참여하고 문제 해결을 돕기로 결정했다.따라서 이 프로젝트를 분리하고 복제하여 issue-1이라는 지점을 좋은 공헌자로 만들고 이 문제를 연구하기 시작할 수 있다.자신의 제출에 기능 1과 기능 2를 추가하고 PR을 진행했습니다. 검토자와 토론한 결과 제출에 오류가 발견되었고 이를 수정하기 위해 제출을 했습니다.
지금, 당신의git 역사 기록은 다음과 같습니다.
# git log --pretty=oneline
b2f4c83... (HEAD -> issue-1) Bug Fix
32e414f... Add Feature 2
7654633... Add Feature 1
7dc92d4... (Main) Add ReadMe
d3395b0... Initial Commit
귀하의 주요 지점은 Add Readme
제출을 책임지고 문제1은 Bug Fix
제출을 책임집니다.이제 기능 3을 시작할 때, 누군가가 PR에 논평을 할 때, 격식과 맞춤법 오류를 알아차린다😭😢
그래...이 문제들을 복구하고 제출한 후에 기능 3을 사용하세요.최종적으로if가 효력을 발생한 후, 당신의 제출 역사는 현재 아래와 같습니다
# git log --pretty=oneline
f592171... (HEAD -> issue-1) Add Feature 3
574b345... Fix Formatting
b2f4c83... Bug Fix
32e414f... Add Feature 2
7654633... Add Feature 1
7dc92d4... (Main) Add ReadMe
d3395b0... Initial Commit
이러한 컨텐트를 저장소로 밀어 넣고 병합할 때까지 기다리면 기본 저장소 히스토리가 보기 좋게 압축된 형식으로 제출하라는 메시지가 나타납니다.현재 압축 커밋을 실행하려면
git rebase -i HEAD~4
-i
옵션은 베이스 상호작용을 하고 HEAD~4
베이스 현재 머리 위치의 마지막 4회 제출을 고려합니다.서식 적용 커밋이 현재 커밋 이전에 5번 커밋된 경우 4를 6보다 크거나 5보다 큰 숫자로 대체하여 모든 커밋을 가져옵니다.이 명령을 실행하면 다음과 같은 메시지를 볼 수 있습니다
pick 32e414f Add Feature 2
pick b2f4c83 Bug Fix
pick 574b345 Fix Formatting
pick f592171 Add Feature 3
# Rebase 7654633..f592171 onto f592171 (4 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.
#
# Note that empty commits are commented out
이것은 먼저 제출을 표시합니다. 가장 먼저 최신으로 이동한 다음에 압출, 편집, 복구 등 사용할 수 있는 옵션을 표시합니다.Git에 대해 알게 되면 아주 강해질 거야...그러나 소수의 몇 개의 명령을 제외하고는 그것에 대해 아는 것이 많지 않기 때문에, 우리는 계속해서 형식을 압축해서 제출할 것이다.제출에 대한 작업을 수행하려면 주석에서 설명한 대로 제출 전의 단어'pick'을 변경하십시오.서식 적용을 압축하려면
pick 32e414f Add Feature 2
pick b2f4c83 Bug Fix
squash 574b345 Fix Formatting
pick f592171 Add Feature 3
저장하면 다른 제출 메시지를 받을 수 있습니다. 제출을 압박하기 전에 제출 메시지를 표시하고 제출 메시지를 압박합니다.# This is a combination of 2 commits.
# This is the 1st commit message:
Bug Fix
# This is the commit message #2:
Fix Formatting
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date: Thu Aug 19 19:03:51 2021 +0530
#
# interactive rebase in progress; onto 7654633
# Last commands done (3 commands done):
# pick b2f4c83 Bug Fix
# squash 574b345 Fix Formatting
# Next command to do (1 remaining command):
# pick f592171 Add Feature 3
# You are currently rebasing branch 'issue-1' on '7654633'.
#
# Changes to be committed:
# modified: readme.md
#
패치와 유사한 패치를 제출하면 메시지를 보존하기를 원합니다. 이렇게 할 수 있습니다.그렇지 않으면, 이 메시지를 포기하고 싶으면 fixup
대신 squash
을 사용할 수 있습니다.여기에서 두 번째 제출 메시지를 평론하고 일반적인git 제출처럼 저장할 수 있습니다.# This is a combination of 2 commits.
# This is the 1st commit message:
Bug Fix
# This is the commit message #2:
# Fix Formatting
# Please enter the commit message for your changes. Lines starting
...
# git log --pretty=oneline
29768cb... (HEAD -> issue-1) Add Feature 3
10c38d8... Bug Fix
32e414f... Add Feature 2
7654633... Add Feature 1
7dc92d4... (Main) Add ReadMe
d3395b0... Initial Commit
아, 이제 깨끗한git 역사 기록이 생겼군요. 아, 만약 당신이 그것을 저장소의 지점으로 옮기려고 한다면, 역사 기록이 다르기 때문에 미룰 수 없다는 오류를 얻게 될 것입니다.저장소에는 포맷 커밋 기능이 있지만 로컬 저장소에는 사용 내역에 이러한 기능이 없습니다.이 문제를 해결하려면 다음과 같이 밀어야 합니다.git push -f origin issue-1:issue-1
# as you're on issue-1 branch, you can leave the last part, but I like the extra confirmation
이 점이 있으면, 당신의 홍보가 갱신되고, 합병될 가능성이 있으며, 당신은 이 식물을 재배하는 데 더욱 가까워질 것이다🌱당신이 이것이 매우 유용하다고 느끼고 당신의 PRs가 깨끗하기를 바랍니다:)
내가 이 Hacket Toberfest에 관한 글을 쓰기 시작한 이후로, 나는 같은 방식으로 끝내게 되었다.이번 해커데이를 위해 열 저장소가 있습니까?때로는 당신의 저장소가 모든 공개 대금의 환매 협의에서 볼 수 없기 때문에 이것은 초기의 호소이다.만약 당신이 관심 있는 환매 협의가 공개된 대금을 원한다면, 평론에 발표하세요.우리 나무를 심기 시작합시다.🌱🌱🌱
Reference
이 문제에 관하여(어떻게 공공 관계 중의 약속을 억압합니까), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dj-unicode/how-to-squash-commits-in-a-pr-e8i텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)