GitHub에서 "다시 시작"하는 방법?


14

다른 프레임 워크 등을 사용하여 프로젝트를 완전히 다시 작성하려고합니다. 히스토리를 포함한 이전 코드를 참조 용으로 유지하는 것이 좋습니다. 위험, 혼란 및 놀라움을 피하기 위해 가장 좋은 방법은 무엇입니까?

내 생각은 새 분기를 만들고 모든 것을 바꾸고 기본 "새"버전을 실행하고 마지막 "이전"마스터에 태그를 지정한 다음 분기를 마스터에 병합하는 것입니다. 이것이 합리적으로 들립니까?


18
이 질문은 Github가 아니라 Git에 관한 것 같습니다.
user253751

오래된 코드를 편집하지 않으려면 태그를 사용할 수 있는지 쉽게 살펴보고 싶을 것입니다. 그러나 태그는 변경할 수 없습니다 (그러나 항상 삭제하고 다시 추가 할 수는 있습니다).
트래비스

2
새 저장소를 작성하십시오.
CodeGnome

답변:


15

모든 것을 단일 저장소에 보관하는 것에 투표합니다.

나는 :

  1. 기존 코드를 가리 키도록 새 분기를 만듭니다.
  2. 모든 코드를 삭제하고 마스터에 커밋
  3. 마스터에서 다시 쓰기를 시작하십시오.

방법은 다음과 같습니다.

# checkout the master branch
git checkout master

# create a new branch so you can find the old code easily
git branch oldStuff-KeepingForReference

# push the branch to github
git push origin oldStuff-KeepingForReference

# You currently have the master branch checked out
# so now cd to the project root and start your rewrite: 
cd <your project root>
rm -rf *

# Create a commit of the delete
git add --all *
git commit -m "Fresh start"

# Start your rewrite
echo "Some changes" > file.txt
git add file.txt
git commit -m "This is the first commit of the rewrite"

따로 : 커밋을 추가하지 않으려는 경우 기존 레거시 코드의 태그를 만들 수도 있습니다.

이를 수행하는 대신 새 저장소를 작성해야하는 경우 :

  • 현재 저장소가 엄청나게 크고 복제가 느릴 때. 당신은 할 수 있습니다 새로운 REPO를 사용하는 것이 좋습니다.

8

다시 쓰기와 히스토리 브랜치를 병합해야하는 절박한 이유가 없다면 별도로 분리해야합니다. 새 코드를 작성하여 이전 코드를 유지하고 마스터로 다시 작성하고 분리 된 방식으로 유지하십시오. 이렇게하면 상황이 바뀌면 항상 이전 프레임 워크 / 구현으로 작업 할 수 있습니다.


3

이것이 고아 지사를위한 것입니다.

git branch -m master new_branch       #rename the branch
git push origin new_branch:new_branch #push the old code
git push origin :master               #delete the origin/master branch containing the old code
git checkout --orphan master          #create a new orphane branch - master. The first commit made on this new branch will have no parents and it will be the root of a new history totally disconnected from all the other branches and commits.

echo foo > file.txt
git add file.txt
git commit -m 'init commit'
git push origin master

기본적으로new_branch master를 표시하므로 Github에서 기본 분기 를 임시로 설정 해야 할 수도 있습니다 .


2

현재 프로젝트에서 새 브랜치를 만들 수 있지만 리포지토리를 개인으로 표시 한 다음 새 코드를위한 새 브랜치를 만드는 것이 좋습니다. 이렇게하면 여전히 기존 리포지토리가 있지만 더 이상 사용되지 않는 작업으로 인한 부담은 없습니다.

쓸모없는 코드에서 여전히 부풀어 오를뿐만 아니라 준비가 될 때까지 몇 가지 혼란스러운 병합 충돌이있을 수 있기 때문에 나중에 지점을 다시 마스터로 병합하려고하는 대신이 방법을 사용하는 것이 좋습니다. 당기십시오. 이를 피하기 위해 완전히 다른 두 가지를 병합하는 것보다 명확한 가지로 시작하는 것이 가장 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.