커밋이 많은 개발 지점이 있습니다. 이러한 커밋에는 "실제"변경 사항 (예 : 기능 추가)과 임시 변경 사항 (예 : 테스트 코드를 한 번에 추가 한 다음 나중에 커밋 할 때 제거)이 포함됩니다. 이 지점의 실제 변경 사항이 점차 마스터에 추가됩니다. 추가 할 때마다 새로운 마스터에 개발 된 브랜치를 리베이스합니다. 각주기마다 개발 분기와 마스터 간의 차이가 점점 작아지고 있습니다. 그러나 리베이스 된 개발 브랜치에는 원래의 모든 커밋이 포함됩니다. 이 커밋들 중 일부는 이제 제로 넷 효과를 갖습니다.자물쇠를 자동으로 제거하는 방법 Git에서 자신을 취소하는 방법
간단한 예 :이 시점에서
DEV_BRANCH
Commit ...
Commit D: Remove all test code from f.cpp
Commit ...
Commit C: Add new feature to f.cpp
Commit ...
Commit B: Add more test code to f.cpp
Commit A: Add some test code to f.cpp
Commit ...
MASTER
Commit X: Add new feature to f.cpp
Commit ...
, C
커밋에서 f.cpp로 변경은 마스터가 X
를 저지 이미에서 하고, 결합 될 때 A
+ B
+ D
을 범 변화가 없다 ~ f.cpp. 즉, 분기와 마스터 사이의 diff는 파일 f.cpp에 대해 아무것도 표시하지 않습니다.
(실제로, A는, B, C, D는뿐만 아니라 다른 파일에 대한 변경 사항을 포함 할 수있다 커밋합니다.)
는 자동적으로 하나 REBASE 동안 또는 다른 개발 브랜치에 커밋을 단순화 할 수있는 방법이 있나요 ? 상기 간단한 예에서
은 자동가 C
커밋 제거 (변화 이미 이제 "빈"따라서 마스터 병합) 또한, B
및 D
(결합 변화 없음) A
얻어 것이 가능 ?
더 복잡한 시나리오에서는 f.cpp가 다른 파일을 수정하는 경우에도 개발 분기의 커밋에서 파일 f.cpp에 대한 변경 사항을 자동으로 제거 할 수 있습니다 (단순화하기 위해). 그러나 커밋은 남겨 둡니다. 그것들이 다른 파일들에 대한 변경 사항들을 포함한다면 존재 하는가?
개발 분기의 모든 커밋에서 파일의 모든 변경 내용을 마스터의 파일과 동일하게 적용하면 개발 분기에서이 파일의 변경 내용을 제거 할 수 있습니까? (다른 효과가없는 파일에 대한 변경 사항을 다른 파일과 동기화해야 할 경우 부작용이 발생할 수 있음을 알고 있습니다. 그러나 체리를 사용하지 않아도 문제가되지는 않습니다. - 개발 지점의 중간 상태를 고르십시오.)
@quetzalcoatl 네, 일반적으로이 어려운 문제가 있음을 깨닫는다. 그러나, 내 상황이 제한된 것, dev 분기 본질적으로 중간 상태가 필요하지 않습니다. 나는 마스터로부터 새로운 브랜치를 만들고 원래의 dev 브랜치에 있던 모든 변경된 파일을 복사하는 것으로 생각했다. 그러나, 이것은 하나 개의 새로운 덩어리가 커밋 만들고 that..after이-기능 위에 마스터를 저지하고-리베이스 (STABLE) - 온에 대한 –
지금 생각 (나는 모든 실제적인 변경을 따기 일 오전까지 유용하도록) 모든 단위가 푼다 마스터 당신은 devel과 master 사이에'merge --squash --no-commit --no-ff'를 만들어서 devel에서 어떤 파일이 실제로 변경되었는지를 탐지 할 수 있습니다. 그러면 ** 변경 사항이 적용된 파일 목록이 제공됩니다. ** chg **라고 부르면 병합을 중단하고 HEAD downto master에서 devel history를'filter-branch' (removeemptycommits 포함)로 이동하고 각 커밋을 편집하고 파일을 제거합니다 ** ** chg **에 있지 않습니다. 그러면 변경 사항 만 올바르게 적용되고 오탐 (false positives)이 발생하게됩니다. 변경 사항과 변경 사항이 모두 되돌려 진 파일입니다. – quetzalcoatl
그 부분은 낙관적 도움이 그래서 .. 약간의 청소를하지 쉽게 등 지수 복잡도/아니며, 대부분의 아마 bash는 스크립트로 구현 가능하다 ..하지만 가양를 해결하는 것은 원래의 문제로 단지 열심히 보인다 경우가 있지만, 일반적인 경우 – quetzalcoatl