27

私が見る限りgit pull someRemote master、リモートブランチを私のものにマージしようとしています。

git pullを使用して、「自分のものを完全に破棄し、リモートの別のクローンを作成する」と言う方法はありますか?自分のリポジトリとその履歴を保持したいのですが、そのコマンドの後にsomeRemoteのマスターブランチの1:1コピーを作成したいと思います。

明確にするために、RMとMYの2つのリポジトリがあると想像してください。数値はコミットであり、これは1つのブランチ(マスター)のみを想定しています。

RM1 --- RM2 --- RM3 --- RM4 --- RM5 ---RM6..。
| |
+-> MY1 --- MY2 --- MY3-+-> MY4 --- MY5 ---MY6..。

そこで、RM1のクローンとして自分のリポジトリを開始します。それから私は幸せに成長し、RMは幸せに成長しますが、私たちは自分の仕事を共有することはありません。MY3の後、私のブランチはそれほど素晴らしいものではないが、RM4はかなり良いことに気づきました。だから私はgit pullRM4をMYに入れたいと思います。ただし、MY1-3での変更を保持したくないので、MY4をRM4の1:1コピーにします。

ただし、履歴を保持したいので、理想的にはMY3とRM4の間、またはMY3とRM2-4の間で変更を設定したいと思います。

それでも私のリポジトリにとどまるはずです。

それは可能ですか?

(これは、プロジェクトをフォークし、少し実験し、数週間そのままにしてから、変更を加えずに更新したいGitHubプロジェクト用です。現時点では、フォークを削除して再フォークしますが、これはそうではありません。最善のアプローチです。)

4

3 に答える 3

33

まず、マスターブランチの名前を別の名前に変更します。

git branch -m master my_old_master

次に、新しいマスターを作成します。

git checkout -b master someRemote

Gitのブランチ名の優れている点は、実際の場所ではなく、場所へのポインターにすぎないことです(「場所」はSHA1コミットIDです)。

于 2010-04-19T03:43:10.670 に答える
4

パスへのローカル変更を破棄するgitcheckoutの後であるように聞こえます。

チェックアウトを使用して変更を元に戻すことができます。

git checkout myfile.h

インデックスからmyfile.hを復元します

http://git-scm.com/docs/git-checkout

于 2010-04-19T03:30:56.203 に答える
2

現在のマスターブランチを保持したいが、新しいバージョン(リモートブランチをミラーリング)を登録したい場合は、次のことができます。

  • マージフィルタードライバーを登録します(このマージの場合:1keepTheir
  • するgit pull --no-commit
  • 削除する必要のある余分なファイル(リモートブランチに存在しなかったマスター内のファイル)がないかどうかを確認します
  • 専念
于 2010-04-19T06:09:40.590 に答える