브랜치에서 모든 커밋을 가져오고 지정된 커밋을 다른 커밋으로 푸시
다음 분기가 있습니다.
master
production
및 다음 원격 분기 :
origin/master
origin/production
origin/master
분기를 가져오고 마지막 가져 오기 ( log -p master..origin/master
) 에서 변경된 내용의 차이 를 가져 오는 스크립트가 있습니다. 그런 다음 병합 origin/master
합니다.
발견 된 커밋은 코드 검토 도구로 푸시됩니다.
성공한 커밋을 프로덕션 브랜치로 푸시 한 다음 origin/production
.
어떻게 할 수 있습니까?
또한 2 개의 스크립트가 실행 중입니다. 하나는에서 가져오고 origin/master
, 데이터베이스에 커밋 세부 정보를 푸시하고, 병합하고, 다른 하나는 성공적인 커밋을 푸시해야하는 현재 작성 중인 스크립트 입니다.
경쟁 조건 / 병합 충돌을 피하면서 두 스크립트를 실행하고 싶습니다. 지정된 커밋으로 만 작업하고 싶기 때문에 원하지 않는 커밋을 제거하는 방법이 있을까요?
제가 찾고있는 용어는 '체리 픽'입니다. 즉, 한 분기 중간에서 단일 커밋을 가져 와서 다른 분기에 추가합니다.
A-----B------C
\
\
D
된다
A-----B------C
\
\
D-----C'
물론 이것은 git cherry-pick 명령으로 수행 할 수 있습니다.
이 커밋의 문제는 git이 커밋이 모든 기록을 포함하는 것으로 간주한다는 것입니다. 따라서 다음과 같은 세 개의 커밋이있는 경우 :
A-----B-----C
그리고 B를 제거하려고하면 다음과 같이 완전히 새로운 커밋을 만들어야합니다.
A-----------C'
C '는 다른 SHA-1 ID를 가지고 있습니다. 마찬가지로 체리가 한 브랜치에서 다른 브랜치로 커밋을 선택하는 것은 기본적으로 패치를 생성 한 다음 적용하는 것과 관련이 있으므로 그런 방식으로 히스토리도 손실됩니다.
이 커밋 ID 변경은 다른 것들 중에서 git의 병합 기능을 중단합니다 (아주 드물게 사용되는 경우이를 해결하는 휴리스틱이 있습니다). 하지만 더 중요한 것은 기능적 종속성을 무시한다는 것입니다. C가 실제로 B에 정의 된 함수를 사용했다면 절대 알 수 없습니다.
아마도 이것을 처리하는 더 좋은 방법은 더 미세한 나뭇 가지를 가지는 것입니다. 즉, '마스터'를 갖는 대신 'featureA', 'bugfixB'등을 갖습니다. 한 번에 전체 브랜치에 대한 코드 검토를 수행합니다. 각 브랜치는 한 가지 작업에만 집중하는 것입니다. 완료되면 한 지점. 이것이 git이 설계 한 워크 플로이며 장점입니다. :)
패치 수준에서 작업을 고집한다면 darcs를 살펴볼 수 있습니다. 리포지토리를 패치 집합으로 간주하므로 체리 피킹이 기본 작업이됩니다. 그러나 이것은 매우 느린 것과 같은 자체 문제가 있습니다. :)
편집 : 또한 두 스크립트에 대한 두 번째 질문을 이해하지 못합니다. 좀 더 자세하게 설명 할 수있을 것입니다. 혼란스럽지 않도록 별도의 질문으로 설명 할 수 있습니까?
나는 이것이 오래된 질문이라는 것을 알고 있지만 여기에서 참조됩니다 : Git에서 특정 커밋을 병합하는 방법
따라서 새로운 답변 : 기능 분기 및 풀 요청을 사용하십시오.
fA는 기능 A가있는 커밋이고 fB는 기능 B가있는 커밋입니다.
fA fC (bad commit, don't merge)
/ \ /
master ----A----B----C
\ /
fB
Pull requests are associated with GitHub's functionality, but really all I mean is that someone has the responsibility of merging the feature branches into master.
'program story' 카테고리의 다른 글
Atom 편집기에서 선택 항목을 대문자 (또는 소문자)로 변환하는 키보드 단축키 (0) | 2020.09.01 |
---|---|
PHP : 이미지 파일이 있는지 확인하는 방법은 무엇입니까? (0) | 2020.08.31 |
ASP.NET에서 SQL SERVER에 대한 연결 문자열 설정 (0) | 2020.08.31 |
JavaScript를 사용하여 현재 URL에서 쿼리 문자열을 얻는 방법은 무엇입니까? (0) | 2020.08.31 |
페이지를 떠나기 전에 저장되지 않은 변경 사항에 대해 사용자에게 경고 (0) | 2020.08.31 |