[git] 새로운 프로젝트를위한 새로운 빈 브랜치 생성

우리는 프로젝트를 저장하기 위해 자식 저장소를 사용하고 있습니다. 우리는 원래 지점에서 출발하는 지점을 가지고 있습니다. 그러나 이제 문서를 추적 할 작은 새 프로젝트를 만들고 싶습니다. 이를 위해 파일을 저장하기 위해 비어있는 새 분기를 만들고 네트워크의 다른 사용자가 해당 분기를 복제하기를 원합니다.

우리는 어떻게 할 수 있습니까?

몇 가지를 시도했지만 작동하지 않았습니다.

$ mkdir proj_doc; cd proj_doc
$ git init
$ git add .
$ git commit -m 'first commit'
$ git br proj_doc
$ git co proj_doc
$ git br -d master
$ git push origin proj_doc

분기를 정상적으로 푸시하는 것처럼 보이지만 가져 오기 또는 가져 오기를 수행하면 다른 분기에서 정보를 다운로드 한 다음 다른 프로젝트에서 추가 파일을 얻습니다. 가장 좋은 해결책은 무엇입니까?



답변

고아로 분기를 만들 수 있습니다.

git checkout --orphan <branchname>

부모가없는 새 지점이 만들어집니다. 그런 다음 다음을 사용하여 작업 디렉토리를 지울 수 있습니다.

git rm --cached -r .

문서 파일을 추가하고 커밋 한 다음 github에 푸시하십시오.

pull 또는 fetch는 항상 모든 원격 브랜치에 대한 로컬 정보를 업데이트합니다. 단일 원격 브랜치에 대한 정보 만 가져 오거나 가져 오려면이를 지정해야합니다.


답변

정답은 고아 지점을 만드는 것입니다. 내 블로그 에서이 작업을 수행하는 방법을 자세히 설명합니다 . (아카이브 링크)

시작하기 전에 최신 버전의 GIT로 업그레이드하십시오. 최신 버전을 실행하려면 다음을 실행하십시오.

which git

이전 버전이 나오면 방금 설치 한 버전이 포함 된 폴더로 PATH를 보강해야 할 수도 있습니다.

좋아, 준비 됐어 자식 체크 아웃이 들어있는 폴더에 CD를 넣은 후 고아 지점을 만듭니다. 이 예에서는 지점 이름을 “mybranch”로 지정합니다.

git checkout --orphan mybranch

고아 지점의 모든 항목을 삭제하십시오.

git rm -rf .

약간 변경

vi README.txt

변경 사항 추가 및 커밋

git add README.txt
git commit -m "Adding readme file"

그게 다야. 당신이 실행하는 경우

git log

커밋 히스토리는 처음부터 시작됨을 알 수 있습니다. 마스터 브랜치로 다시 전환하려면 다음을 실행하십시오.

git checkout master

다음을 실행하여 고아 지점으로 돌아갈 수 있습니다.

git checkout mybranch

답변

다음과 같이 빈 새 분기를 만드십시오.

true | git mktree | xargs git commit-tree | xargs git branch proj-doc

proj-doc 파일이 이미 단일 하위 디렉토리에서 커밋에있는 경우 다음과 같이 새 분기를 만들 수 있습니다.

git commit-tree thatcommit:path/to/dir | xargs git branch proj-doc

그것이 git branch --orphan당신에게 많은 것을 git rm하고 떠나야 할 때보 다 더 편리 git mv할 것입니다.

시험

git branch --set-upstream proj-doc origin/proj-doc

너무 많은 페치 문제에 도움이되는지 확인하십시오. 또한 실제로 단일 브랜치를 가져 오려면 명령 줄에서 지정하는 것이 가장 안전합니다.


답변

git 버전에 –orphan 옵션이없는 경우이 방법을 사용해야합니다.

git symbolic-ref HEAD refs/heads/<newbranch>
rm .git/index
git clean -fdx

몇 가지 작업을 수행 한 후 :

git add -A
git commit -m <message>
git push origin <newbranch>


답변

master파일 / 디렉토리 가있는 브랜치 가 있다고 가정 해 보겠습니다 .

> git branch
master
> ls -la # (files and dirs which you may keep in master)
.git
directory1
directory2
file_1
..
file_n

빈 가지를 만드는 방법을 단계별로 살펴보십시오.

  1. git checkout —orphan new_branch_name
  2. 다음 명령을 실행하기 전에 올바른 디렉토리에 있는지 확인하십시오.
    ls -la |awk '{print $9}' |grep -v git |xargs -I _ rm -rf ./_
  3. git rm -rf .
  4. touch new_file
  5. git add new_file
  6. git commit -m 'added first file in the new branch'
  7. git push origin new_branch_name

2 단계에서는 새 브랜치의 파일과 보관하는 파일과 혼동되지 않도록 모든 파일을 로컬에서 간단히 제거합니다. master 브랜치에 . 그런 다음 3 단계에서 모든 파일의 연결을 해제합니다. 마지막으로 4 단계와 그 이후에 새로운 빈 분기를 사용합니다.

완료되면 지점간에 쉽게 전환 할 수 있습니다.

git checkout master
git checkout new_branch


답변

자료의이 Hiery Nomus에서 대답 .

고아로 분기를 만들 수 있습니다.

git checkout --orphan <branchname>

부모가없는 새 지점이 만들어집니다. 그런 다음 다음을 사용하여 작업 디렉토리를 지울 수 있습니다.

git rm --cached -r .

그런 다음 빈 커밋으로 분기를 커밋 한 다음 푸시

git commit -m <commit message> --allow-empty
git push origin <newbranch>


답변

체크 아웃 이 문서를 , 그것은에 대한 세부 정보를 지 웁니다있다

--orphan <new_branch>
<new_branch>시작 하는 새로운 고아 브랜치 를 <start_point>만들고 시작 하십시오. 이 새로운 브랜치에서 첫 커밋은 부모가 없으며 다른 모든 브랜치와 커밋에서 완전히 분리 된 새로운 역사의 근원이 될 것입니다.

인덱스와 작업 트리는 이전에 git checkout을 실행 한 것처럼 조정됩니다. 이를 통해 git commit -a를 쉽게 실행하여 루트 커밋을 만들어 비슷한 경로 집합을 기록하는 새로운 기록을 시작할 수 있습니다.