문제
주어진 경우 나 두 개의 독립적인 변화 에 나 파일:예를 들어.추가하는 새로운 방법과 변경 다른 방법이다.
저는 종종을 원하지 않을 commit 모두 변경 나 커밋하지만, 두 개의 독립 commits.
에 git 을 사용하는 것이 가 대화형 모드 의 git add(1) 분할 헝크 작은 것들로:
git add --patch
무엇을 할 수있는 가장 쉬운 방법이 파괴?(아마도를 사용하여 Eclipse plug-in)
업데이트:
에 일에 대한 Git, 라이언은 그것: "얽힌 복사본으로 작업 문제입니다."
해결책
Git-svn 만들 수 있습니다 로컬 GIT 저장소의 원격 SVN 저장소 작업과 함께 사용하여 전체 GIT 기능 세트(부분을 포함 커밋)및 그들을 모두 밀어 다시 SVN 장합니다.
다른 팁
거북이 1.8SVN 지금 지원 이와 함께 그것은"복원 후 commit"기능이 있습니다.이할 수 있 파일을 편집 할 모든의 편집이 되는 취소 후 commit
설명에 따:
커밋하는 부분만 파일과 관련되는 하나의 특정 문제점:
- 에서 커밋 대화,마우스 오른쪽 버튼으로 클릭 파일을 선택하고,"복원 후 commit"
- 에서 파일을 편집하어Tortoisemerge 를 갖습:변경 사항을 취소는 당신을 원하지 않을 commit 직
- 파일 저장
- 커미 파일
내가 이를 사용하여 TortoiseSVN.
내장에서 병합 유틸리티를 사용 할 수 있습니다 보는 사이의 비교가 저장소 버전의 작동을 복사본입니다.
사 백업 만들기 의 기능을 비교 유틸리티
- Go 투입으로 파일 당신이하는 모든 변경합니다.
- 에서 commit 창 파일을 두 번 클릭하여 표시 diff.
- 에 차이 설정한 옵션을 클릭합 원본 파일 백업.
- 오른쪽 클릭하여 변경을 원하지 않는,그리고 선택 사용 사용하는 다른 텍스트를 블록.
- 저장 비교 정확히 한 번.백업이 덮어쓸 수 있는 각 시간을 절약할 수 있습니다.이런 이유로 당신은 단지 저장하고 싶다.
- 투입 변경합니다.
- 덮어쓰기는 원본으로 만들어집니다.bak 파일(는 귀하의 모든 원래의 변경).
- 커미 파일입니다.
이제 모든 변경 사항을 사용하여 두 가지 별도의 커밋.
을 사용하여 시험 svn diff > out.patch
에 복사하는 out.patch
파일 out.patch.add
고 out.patch.modify
가 있는 경우에만 작동 패치 파일 되돌리는 원래 사용하여 파일 svn revert out.c
.
편집 패치 파일을 손으로 그렇게 그들은 단지 포함 어 놓 에 대한 추가하거나 수정.에 적용하는 원래 사용하여 파일 patch
명령을 테스트하는 경우 추가했,다음 svn commit
니다.
씻고 씻어에 대해서도 반복 out.patch.modify
패치입니다.
는 경우는 변경은 별도로 파일에서 당신의 초기 질문에 명시된 추가하는 새로운 방법,변경되는 기존의 방법-이
이것은 매우 지루한 솔루션을 확신하지 않지만 당신이해야 하는 어떤 이유가 있는 별도의 커밋.
당신은 또한 확인 수있는 여러 작업의 사본은 동일한 원본을 적용에 대하여 작동:
svn co http://location/repository methodAdd
svn co http://location/repository methodModify
야 svn up
고 테스트를 확인든 것이 잘되어 있다는 것입니다.
이것은 사용하여 가능한 TortoiseSvn(윈도우)이후 v1.8.
4.4.1.커미 대화
당신의 작업 사본을 최신으로 유지되고 있으며 충돌이 없이,당신이 범죄를 저지르지 준비가 원하는 대로 변경합니다.선택 파일 및/또는 폴더를 적용할 다음 TortoiseSVN→Commit....
<snip>
4.4.3.Commit 만 부품의 파
때때로 당신은 당신만 원하 commit 부품의 변경 내용은 파일입니다.이러한 상황은 일반적으로 발생하는 경우에는 뭔가 하지만 그는 긴급한 수정 요구 투입되기 위하여,그리고는 해결 될 일이 동일한 파일에서 당신 에 노력하고 있습니다.
에서 오른쪽 클릭하여 파일을 사용하여 컨텍스트 메뉴→복원 후에는다.이 파일의 복사본으로 그것입니다.다음을 편집할 수 있습니다 파일,예를 들어,에 tortoisemerge 를 갖습고 모든 변경 사항을 취소하고 싶지 않은 다.을 저장한 후에 그 변경 당신을 투입할 수 있는 파일입니다.
후 commit 이 완료되면,파일의 복사본은원 자동으로,그리고 당신은 파일이 귀하의 모든 수정 지 않은 헌다.
리눅스에서 구입할 http://webstaff.itn.liu.se/~karlu20/div/blog/2013-05-31_SVNPartialCommit.php 니다.시도하지 않은 그것을 자신을,하지만.
내가 이렇게 하려면 사용:
- 내 편집기(내가 사용하는 vim),파일을 편집하는 단 하나의 변화를 표시
- 파일을 저장합니다(하지만 종료하지 않는 편집기)
- Commit 변경된 파일을 svn
- 칠"취소"편집기에서 충분한 시간을 위한 두 번째는 설정의 변경 다시 표시
- 파일을 다시 저장
- 커미는 두 번째의 설정을 변경합니다.
이것은 단순한 접근제로 한 세트의 변경 내용은 개인 정보 보호 정책을 확인을 취소합니다.더 복잡한 상황에서,나를 줄 것이라고 commit 모두 변경 사항에 대한 걱정없이다.
이제는 내가 자식을 사용하,이은 뭔가가 나지 않을 것을 다시 수행해야!
내가 사용하는 로컬 darcs repo,하거나 병합에서 변경습니다.병합(opendiff 열 FileMerge,병합 프로그램을 함께 제공되는 Xcode;대체로 좋아하는 병합 공구):
cp file file.new
svn revert file
opendiff file.new file -merge file
병합 관련 변경 사항을 저장합 병합,종료 병합 프로그램
svn ci -m 'first hunk' file
mv file.new file
svn ci -m 'second hunk' file
하나 이상일 경우에는 관련이 없는 덩어리에서 파일,헹구기 및 반복한다(그러나 당신은 왜 이렇게 오랫동안 기다리하기 전에?!)
또한,당신이 알고 있는 경우 git 을 사용할 수 있습니다 git-svn 을 유지하는 지역 git repo 와 동기화하는 커밋 svn 마스터 서버훌륭한 작품에서 제한된 경험이다.
도 VisualSVN Visual Studio.이 최신 6.1 릴리스 소개 QuickCommit 기능입니다.할 수 있는 부분적으로 선택한의 변화를 사용하여 파일을 새로운 Commit 이 블록 고 행 선택 컨텍스트 메뉴 명령에는 Visual Studio 편집기입니다.
- 열려있는 모든 파일을 원하는 분할에서 편집기의 선택
- 를 사용하여 다른 도구 세트(에서 승리,사용하여 스파이크의 제안(이전 버전))다시 번째 설정
- Commit
- 로 돌아가기 편집기의 선택과 모든 파일을 저장
그것은 작은 위험한 이 스파이크 전체 제안하지만 쉽게 할 수 있습니다.또한 당신이 그것을 시도해야합에서 다른 무언가 처음으로 일부 편집기를 거부하를 저장하는 파일이 변경되었 아래에서 그들지 않으면 당신은 다시는 파일(을 잃는 귀하의 모든 변경)
내 생각에 더 쉽게 옵션을 생성하는 파일을 비교하고,복귀 등을 것을 두 사본의 저장소를 확인하고 사용한 시각적 차이와 같은 도구를 DeltaWalker 복사하는 덩이를 다른 하나에서.
첫 번째 복사 하나가 될 것입 당신은 실제로 작업의,그리고 두 번째는 것이 목적입니다.일단 당신이 변하는 첫 번째 복사할 수 있습니다 섹션 중 하나 이상의 두 번째,commit,복사 또 다른 섹션,커밋,etc.
- 모두 복사한 파일을 수정 관련하여 백업 복사본입니다.
- 을 만들의 패치를 사용하여 작동 상태
svn diff
. - 되돌리기를 사용하여 파일
svn revert
. - 다시 적용하는 부분의 패치하려는 커밋거나 사용
patch
도구,또는 수동으로 편집 또는 어떤 것이다. - 실행
diff
나중에 비교하는 작업 사본으로 백업해야 합 적용 패치-부품습니다. - 구축하고 테스트합니다.
- 다.
- 복사하고 백업 사본에 다시 귀하의 저장소를 확인합니다.
- 반복 2.(지 1.!) 완료 할 때까지.