web-dev-qa-db-ja.com

GitHubで「やり直す」方法

別のフレームワークなどを使用して、プロジェクトを完全に書き直すことを計画しています。参照用に履歴を含む古いコードを保存しておくとよいでしょう。リスク、混乱、驚きを避けるために、これを行うための最良の方法は何ですか?

私のアイデアは、新しいブランチを作成し、そこですべてを置き換えて、そこで実行される基本的な「新しい」バージョンを取得し、最後の「古い」マスターにタグを付けてから、ブランチをマスターにマージすることです。これは合理的に聞こえますか?

15
Landei

私はすべてを単一のリポジトリに保存することに投票します。

私は...するだろう:

  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"

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

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

  • 現在のリポジトリが非常に大きく、リポジトリのクローン作成が遅い場合。あなたmay新しいリポジトリの使用を検討したい。
16

書き直しブランチと歴史的ブランチをマージする差し迫った理由がない限り、私はそれらを別々に保ちます。新しいブランチを作成して古いコードを保持し、マスターで書き換えを行い、それらをそのように分離してください。そうすれば、状況が変化した場合でも、常に古いフレームワーク/実装を使用できます。

8
SnoProblem

これが、孤立したブランチの目的です。

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 in Github デフォルトでマスターを表示するため。

3
Jürgen Paul

現在のプロジェクトで新しいブランチを作成することもできますが、リポジトリをプライベートとしてマークし、新しいコード用に新しいブランチを作成することをお勧めします。これにより、古いリポジトリが残っていますが、廃止された作業による肥大化はありません。

後でブランチをマージしてマスターに戻そうとするのではなく、このアプローチを取ることをお勧めします。これは、古いコードからの肥大化が続くだけでなく、準備ができるまでにイライラするマージ競合がいくつか発生するためです。プルを行います。これを回避するには、2つの完全に異なるブランチをマージするのではなく、明確なブランチから始めるのが最善です。

2
IIllIIll