2009-11-06 4 views
0

이것은 이상한 질문처럼 보일지 모르지만 나와 함께 감당할 수 있습니다.가지가없는 분기

저는 (ab?) 제가 작업하고있는 작은 프로젝트에서 자식을 사용하고 싶습니다. 파일을 분기하고 싶지만 분기 된 파일을 현재 브랜치 내에 새로운 이름으로 유지하고 유지하고 있습니다. 역사 (내가 원래의 변경 사항을 rebase 수 있도록). 이것은 서브 버전이 브랜치를 알지 못한다는 점에서 Subversion과 유사합니다.

나는 문서 템플릿을 두 배로하는 문서를 갖고 싶습니다. (이것들은 평범한 텍스트 파일입니다. 합병이 가능할 것이라고 걱정하지 마십시오.) 다른 문서에서 새 문서의 기초를 마련하기를 원합니다. 그냥 그것을 분기합니다.

Git에서는 가능한가요? 그렇지 않다면 (실제로 Git의 구조가 주어진다면 그렇지 않다는 가정하에) 생각할 수있는 대안이 있습니까? 나는 힘내에서 벗어나고 싶지 않다. 내가 더 많이 사용하기 때문에, 좋은 해결책이 없다면, 나 자신의 (가벼운) 브랜치/리베이스를 구현할 수있을 것이다.

답변

2

분기가 잘못 되었습니까? 당신은 꽤 쉽게 "템플릿"브랜치를 유지하고 그들 사이에서 변경된 문서를 이동할 수 있습니다.

는 말, 예를 들어 : 다른 버전의

git checkout -b templates 
git checkout master 
git checkout templates path/to/template.ext 
cp path/to/template.ext path/to/document.ext 
# decide you want to change the template 
cp path/to/document.ext path/to/template.ext 
git commit -a -m "changed template" 
git checkout templates 
git merge master 
+0

예, 이렇게 할 필요가 있습니다. (내 지점/리베이스가 의미하는 바입니다.) 이 접근 방식의 문제점은 문서가 어떤 템플릿을 기반으로했는지 (그리고 그 템플릿이 기반으로하는 템플릿 등)를 알 수있는 방법이 없다는 것입니다. 따라서 올바른 리베이스를 수행하기위한 자체 스키마를 구현해야합니다. 체인을 따라 문서가 변경 될 때 – falstro

0

당신은 생각할 디렉토리 트리에서 다른 장소에서 같은 서브 모듈을 장착 할 수는 장착. 파일 이름은 같지만 버전이 다를 수 있습니다. 나는 그 물건을 유지하는 사람이되고 싶다.

1

git은 사용자의 파일 사본을 감지하고 이에 대한 기록을 올바르게 추적합니다.

어쩌면 나는 당신이 무엇을 요구하고 있는지 이해하지 못하겠습니까?

  • 템플릿 파일을 수정하고 "분기 된"파일에 변경 사항을 반영하고 싶습니까?
  • 단지 어떤 파일이 어떤 템플릿에서 왔는지 추적 할 수있게하려는 것입니까?
+0

어떤 템플릿/파일에서 어떤 파일이 왔는지 추적하고 해당 변경 사항을 파일에 병합 할 수 있습니다. 내가 말할 수있는 한, git은 단지 브랜치를 추적한다. 파일을 복사하는 것은 다른 이름으로 새로운 파일을 작성하는 것과 같다. 또는 실제로 g의 사본이라고 말할 수있는 방법이 있는가? – falstro

+0

그러면 git이 무대 뒤에서 이것을 처리합니다. git에게이 파일이 x의 사본이라는 것을 알릴 필요는 없다. 이미 파일의 내용으로부터 x의 복사본이라는 것을 알고있다. 힘내는 파일 사본을 자동 감지한다. 또한 한 파일에서 다음 파일로 이동하는 내용을 자동 검색합니다. git diff -M과 git show -M을 사용하여 테스트하지만 파일이 복사 되었음이 표시되어야합니다. –

+0

나는 git이 파일이 아닌 내용을 추적한다고 가정한다. 따라서 파일 이름, 내용 만 추적하면 안되며,이 경우 충분히 좋은지 알기가 매우 어려울 것입니다. http://stackoverflow.com/questions/1537616/handling-renames-svn-vs-git-vs-mercurial – falstro