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"

余談:コミットを追加したくないことがわかっている場合は、古いレガシーコードのタグを作成することもできます。

これを行う代わりに新しいリポジトリを作成する必要がある場合:

  • 現在のレポが非常に大きく、レポのクローン作成が遅い場合。新しいレポの使用を検討することもできます。

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

デフォルトでmasterが表示されるためnew_branch、Githubでデフォルトのブランチを一時的に設定する必要がある場合があります。


2

現在のプロジェクトに新しいブランチを作成できますが、リポジトリをプライベートとしてマークし、新しいコード用に新しいブランチを作成する方がよい場合があります。そうすれば、古いリポジトリは残っていますが、時代遅れの作業による肥大化はありません。

廃止されたコードからまだその肥大化が残っているためだけでなく、準備が整うまでにいくつかのイライラするマージ競合がある可能性があるため、後でブランチをマスターにマージしようとするのではなく、このアプローチを取ることをお勧めします引っ張ります。それを避けるために、完全に異なる2つのブランチをマージするのではなく、明確なブランチから始めるのが最善です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.