1. ホーム
  2. git

[解決済み] Githubのフォークをクリーンアップして、クリーンなプルリクエストを行うにはどうしたらいいですか?

2023-06-08 06:07:37

質問

Github でリポジトリをフォークしました。私はいくつかの小さな変更を行い、上流にプルリクエストを提出しましたが、途中で私のフォークが非常に混乱し、きれいなプルリクエストを生成することができなくなりました。

私の問題は 最新のコミットのみをプルする に関連しているようですが、新しいブランチを作成してチェリーピックでコミットを取得すると、まだ余分なものが残っています。私は リベース も試しましたが、今では マイマスター のクリーンコピーを生成することができません。 アップストリーム . これは、どうやら、私が をマージするのではなく、リベース 私がしようとしているのは、その結び目をほどき、有益に前進できるようなきれいな状態に戻す方法を見つけ出すことです。

私は自分のフォークを吹き飛ばし、上流の新しいフォークを作りたいのですが、それも難しいようですね。

Gitの罪を告白した後、どうすればgithubの赦しを得られるのでしょうか?

どのように解決するのですか?

ステップ1: 上流の変更を取り込む

で説明されているように、上流レポを "upstream" として追加することが推奨されます。 レポをフォークする のページで説明されています。

git pull --rebase upstream master

--rebase オプションはマージなしで最新のコミットの上にあなたの変更を配置します。

ステップ 2: (オプション) あなたのコミットを 1 つのコミットにマージする

git reset --soft upstream/master

このコマンドは、すべてのコミットを取り消しますが、ファイルは変更しません。そのため、一度のコミットですべての変更をコミットすることができます。

git commit -a

ステップ3: 変更の確認とテスト

変更を表示するために、組み込みの gitk , ソースツリー , トータスギット または タワー (有料) など。

ステップ4:プッシュ

git push はエラーを投げます。なぜなら、プッシュするとターゲットリポジトリの履歴が変更されてしまうからです。

ステップ3で示した変更が正しいと確信が持てたら、"-f"でプッシュします。

git push -f origin master



追加情報

リモートを追加するコマンドは

git remote add upstream git://github.com/[username]/[project].git

また、直接URLから引っ張ってくることも可能です。

git pull --rebase  git://github.com/[username]/[project].git

しかし、その場合、他のステップで "upstream/master" の代わりに最新のアップストリームコミットのハッシュが必要になります。