나는 두 가지 master
와 역사를 공유하고 있다고 가정하고있어 여기 실수는 당신이 branch1
에 git checkout -b branch2
동안 계속 한 것을이었다. 그렇지 않은 경우 다른 방법으로 수정해야합니다.
그래서
master
에 모두
branch1
및
branch2
주 역사, 당신은 수행하여
branch2
를 해결할 수 주어진 :이
branch2
에 소개 된 커밋을하고는
master
에서 파생 있도록 그들을 리베이스됩니다
$ git checkout branch2
$ git rebase --onto master branch1 branch2
. 즉,이 git rebase
은 branch1
에 소개 된 커밋 을 삭제하지만 master
에는 없으며 은 branch2
에 도입 된 커밋 만 남겨 둡니다.
질문의 두 번째 부분은 아니요, Git에게 디렉토리를 유지하도록 지시 할 방법이 없습니다. Git은 트리의 커밋 및 스냅 샷을 처리하며, git branch
은 단순히 " 커밋을 기반으로 새 분기 시작"이라고 말합니다. 역사는 완전히 분리 될 운명 경우, 당신은 고아 분기를 만들 수 있습니다 - A는 부모 나 와 커밋해야합니다 지점을 커밋 :
이
$ git checkout --orphan NAME
이 새로운 지점을 만들 것입니다, 전 - 현재 트리로 채워집니다. 다음 git rm -rf <path>
으로 원하지 않는 디렉토리를 제거하도록 선택할 수 있습니다. 또는 은 git rm -rf .
으로 모든 것을 완전히 제거합니다.
이렇게해도 몇 가지 결과가 있습니다. 분기가 서로 연결이 끊어지면 Git에서 데이터의 일부가 어떻게 인식되는지, 데이터를 현명하게 병합하는 방법을 알지 못하기 때문에 많은 충돌이 발생할 수 있습니다. 에 다른 쪽을 병합하지 않으려면 (예 : gh-pages
가지 GitHub에 있음) 계속 유지할 수 있습니다.
여기에 몇 가지 제안을 더하겠습니다. 첫 번째는 이러한 이 정말로 완전히 별개의 기록으로 별도의 분기가되어야한다고 가정하면 아마 별개의 저장소에 보관해야 할 것입니다. 당신은, 즉
$ git checkout -b NAME master
: - 당신이 지점에 있다면
또한, branch10
말을 - 그리고 master
을 기반으로 새 지점 을 만들려면, 당신은 쉽게 그렇게 할 수 시작 지점으로 사용할 커밋 또는 분기를 선택할 수 있습니다.
마지막으로, 다른 브랜치에 디렉토리를 유지하려는 이유가 명확하지 않으므로 한 걸음 뒤로 물러서서 을 수행하려고하는지 확인해보십시오. 힘내 (Git)에서는 가능한 많은 것들이 있지만 그 강도에 반하는 방법론 을 선택하면 도구를 사용하기가 훨씬 어려워지고 저장소를 공유하기가 더 어려워 질 수 있습니다.
제가 아는 한 망할 놈의 디렉터리 파일을 추적하지 않습니다? 어쩌면 당신이 그것의 내용을 삭제하면 디렉토리가 사라질 것입니다. – Croo
하지만 그 디렉토리가 저장소에서 벗어나길 원치 않습니다. 나는 현재 디렉토리에서 그 디렉토리를 멀리하고 싶다.서로 다른 지점에서 다른 지점을 유지하는 것 –
근본적으로 잘못된 것을하고있는 것일 수 있습니다. 다른 지점에 다른 디렉토리를 유지해야하는 이유는 무엇입니까? 그 디렉토리의 내용은 무엇입니까? – robert