23

Gitリポジトリ内の2つのファイルに複数の変更を加えました(具体的には、醸造する2つの数式を追加しました)。

私は変更を個別にコミットしました:

git commit file1
git commit file2

次に、GitHubに1回プッシュしました。

git push git@github.com:myname/homebrew.git

ここで、2つのプルリクエストをアップストリームリポジトリに送信します。1つはfile1用、もう1つはfile2用です。これは可能ですか?

4

3 に答える 3

10

各ファイルを独自のブランチに配置します。ブランチごとにプル リクエストを生成することができます。

于 2011-12-07T19:53:57.060 に答える
10

同じコミットで両方のファイルを変更した場合、いいえ、これは不可能です。プッシュとプルはコミット レベルで動作します。彼らはそれらを分割しません。

変更をまだ共有していない場合は、コミットを 2 つに分割し、それぞれにブランチを作成してから、それらのプル リクエストを開始できます。

これは多くの方法があるものの 1 つですが、たとえば、次のようなことができます。

# make sure the commit in question is the most recent
# make branch to point to the previous commit, leaving the changes in your work tree
git reset HEAD^
# commit the changes to the first file
git add file1
git commit
# make a branch for the first commit
git branch first-branch HEAD^
# commit the changes to the second file
git add file2
git commit
# create and check out a branch for this commit
git checkout -b second-branch
# rebase the branch back, so that it doesn't include the first commit
git rebase --onto HEAD^^ HEAD^ second-branch

# point your master branch somewhere that makes sense - maybe before either branch
git checkout master
git reset --hard first-branch^

これにより、次のような履歴が残ります。

- x (master) - A (first-branch)
   \
    - B (second-branch)

ここで、コミット A はファイル 1 を変更し、コミット B はファイル 2 を変更しました。

履歴が思いどおりになったら、2 つのブランチを別々にプッシュして、必要なことを行うことができます。

git push origin first-branch second-branch
于 2011-12-07T19:57:47.097 に答える
2

リビジョン全体 (実際には、リビジョンにつながるブランチ全体) のみを取得できますが、リポジトリから個々のファイルにアクセスできます。

git checkout <rev> -- <file>
于 2011-12-07T19:53:21.547 に答える