programing

새 프로젝트에 대한 새 빈 분기 생성

muds 2023. 5. 16. 23:10
반응형

새 프로젝트에 대한 새 빈 분기 생성

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

어떻게 하면 되죠?

저는 몇 가지를 시도해 보았지만 효과가 없었습니다.

$ 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에 밀어넣습니다.

풀 또는 가져오기는 항상 모든 원격 분기에 대한 로컬 정보를 업데이트합니다.단일 원격 분기에 대한 정보만 가져오려면 해당 정보를 지정해야 합니다.

정답은 고아 분기를 만드는 것입니다.저는 (Archived link)블로그에서 이것을 하는 방법을 자세히 설명합니다.

...

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

which git

이전 버전을 뱉으면 방금 설치한 버전이 포함된 폴더로 PATH를 확장해야 할 수도 있습니다.

자, 준비됐습니다.Git Checkout이 포함된 폴더에 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

2022년 업데이트

2으로 Git 2.23을 사용할 수 .git switch --orphan <new branch>기록이 없는 빈 분기를 만듭니다.와는과 다르게 .git checkout --orphan추적된 모든 파일이 제거됩니다.

이 분기에 실제로 커밋이 있으면 원격 저장소로 푸시할 수 있습니다.

git switch --orphan <new branch>
git commit --allow-empty -m "Initial commit on orphan branch"
git push -u origin <new branch>

다음과 같이 빈 새 분기를 만듭니다.

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

그리고 그게 당신의 너무 어려운 문제에 도움이 되는지 알아보세요.또한 분기를 하나만 가져오려면 명령줄에서 분기를 지정하는 것이 가장 안전합니다.

가장 좋은 솔루션은 다음을 사용하여 새 지점을 생성하는 것입니다.--orphan아래와 같은 옵션

git checkout --orphan <branch name>

이렇게 하면 새 지점을 만들고 새 지점으로 직접 체크아웃할 수 있습니다.부모 없는 지점이 될 것입니다.

기본적으로--orphan옵션은 작업 디렉터리의 파일을 제거하지 않으므로 다음 방법으로 작업 디렉터리 파일을 삭제할 수 있습니다.

git rm --cached -r

자세한 내용은 무엇입니까?--orphan수행:

--orphan <new_branch>
이름이 지정된 새 고아 분기 만들기<new_branch>에서 시작한<start_point>그리고 그것으로 전환합니다.이 새 분기에 대한 첫 번째 커밋에는 부모가 없으며 다른 모든 분기 및 커밋과 완전히 연결되지 않은 새 기록의 루트가 됩니다.

인덱스와 작업 트리는 이전에 git checkout <start_point>를 실행한 것처럼 조정됩니다.이를 통해 git commit -a를 쉽게 실행하여 루트를 커밋함으로써 <start_point>와 유사한 경로 집합을 기록하는 새 이력을 시작할 수 있습니다.

이 기능은 전체 기록을 표시하지 않고 커밋에서 트리를 게시하려는 경우에 유용합니다.이 작업을 수행하여 현재 트리는 "정리"되어 있지만 전체 내역에 독점적이거나 다른 방식으로 방해를 받는 코드 비트가 포함된 프로젝트의 오픈 소스 분기를 게시할 수 있습니다.

<start_point>의 경로 집합과 완전히 다른 경로 집합을 기록하는 연결 끊김 기록을 시작하려면 작업 트리의 최상위 수준에서 gitrm -rf.를 실행하여 분리된 분기를 만든 직후 인덱스와 작업 트리를 지워야 합니다.그런 다음 작업 트리를 다시 채우고 다른 곳에서 복사하거나 타르볼을 추출하는 등의 방법으로 새 파일을 준비할 수 있습니다.

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

중인 합니다.master다음합니다.그런 다음 3단계에서 모든 파일의 링크를 해제합니다.마지막으로 4단계 이후에는 비어있는 새로운 지점과 함께 작업합니다.

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

git checkout master 
git checkout new_branch

히에리 노무스의 이 대답을 바탕으로 합니다.

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

git checkout --orphan <branchname>

이렇게 하면 부모가 없는 새 분기가 만들어집니다.그런 다음 다음 작업 디렉터리를 지울 수 있습니다.

git rm --cached -r .

그런 다음 빈 커밋으로 지점을 커밋한 다음 푸시합니다.

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

나는 이 도움을 찾았습니다.

git checkout --orphan empty.branch.name
git rm --cached -r .
echo "init empty branch" > README.md
git add README.md
git commit -m "init empty branch"

여기서 찾았습니다

만약 당신이 git 2.23 이상을 사용한다면 당신은 익숙해질 것입니다.git switch그리고.git restoregit checkout

따라서 빈 분기가 필요한 경우 다음을 수행합니다.

git switch --orphan YourNewBranch

그게 다야 :)

언급URL : https://stackoverflow.com/questions/13969050/creating-a-new-empty-branch-for-a-new-project

반응형