4

github のプライベート リポジトリをローカル マシンに複製しました。いくつかの変更を行った後、ブランチを github にプッシュしてマージ (または github が呼び出すプル リクエスト) を提案したいと考えています。

それ、どうやったら出来るの?

私はまったく新しい github です (通常は bzr/launchpad を使用し、コマンドはbzr push lp:~<username>/<master-branch>/<name of the new child branch>. でこれに相当するものは何gitですか?)。

[編集: git の用語をほとんど理解していなかったために、私の言葉遣いが混乱していることがわかりました。私が行ったことを再度説明します]

barはプライベートレポです)

$git clone git@github.com:foo/bar.git
$cd bar
$touch <some file> # ie., make some changes
$git commit ...
$ <<<<< NOW I need to push this back to github here.
4

2 に答える 2

4

上記のコメントと元の質問から、github でプル リクエストを実行したいのですが、masterローカルで変更した...それは問題です。あなたがやりたかったことは、最初にブランチを作成し、変更を加え、ローカルでコミットし、ブランチをプッシュすることです。次に、そのブランチから github でプル リクエストを作成できます。

まず、それを修正するために必要なことは次のとおりです。

git branch mytopicbranch
git reset --hard origin/master

masterこれでブランチが作成され、リモート リポジトリにあるものにローカルでリセットされました。次の方法でブランチをプッシュできるようになりました。

git push オリジン mytopicbranch

次に、github で、そのブランチのプル リクエストを作成できます。

通常の流れは次のようになります。

git clone <remote repo> 
<cd to directory>
git checkout -b mybranch 
<make changes> 
<commit changes>
git push origin mybranch
<create pull request on github>

追加する編集:これはあなたが尋ねた理由です。「プルリクエスト」をしたい。プッシュしmasterたいだけの場合は、次のようにします。

git push オリジンマスター

そして、変更はリモートで master にコミットされます。

于 2013-02-13T17:24:10.030 に答える
2

プライベート マスター リポジトリは私が所有していません (つまり、自分のリポジトリをマスター リポジトリにプッシュする権限がありません)。ローカルレポをプッシュバックして、所有者にそれをマスターにマージするように要求することしかできないと思います

あなたはここで多くのことを混乱させているようです。まず、リポジトリは単一のユニットです。リポジトリを複製すると、完全なローカル コピーが得られます。

自分が所有しておらず、書き込み権限もないリポジトリをクローンした場合、そのリポジトリに変更をプッシュすることはできません。その場合は、最初に自分の GitHub アカウントにフォークする必要があります。これを行うには、リポジトリ ビューで fork ボタンをクリックします。これにより、自分のアカウントにリポジトリのコピーが作成され、プッシュ権が付与されます。

そのため、リポジトリのローカル クローンがあれば、好きなことを行うことができます。元のリポジトリも GitHub フォークも、リモートリポジトリには何も影響しません。必要な数のブランチを作成し、必要な場所にコミットできます。ここで、ブランチは Git の構成要素ではないことに注意してください。ブランチはコミットへの単純なポインターであるため、ブランチを作成してもあまり効果がなく、実際にコミットを開始しない限り、構造に影響を与えることはありません。

リモートリポジトリにプッシュしたいコミットがある場合は、次を使用してそれを行うことができますgit push:

git push <remote> <local-branch>:<remote-branch>

masterしたがって、ローカルブランチをtestという名前のリモートのブランチにプッシュしたい場合はorigin、 を実行できますgit push origin master:testtestリモート ブランチ(以前に存在する必要はありません) に明示的にプッシュしたため、リモートのブランチには触れませんmaster。の他のバリエーションはgit push、上記のコマンドの単なる省略形です。たとえば、git push <remote> <branch>これはおそらく 2 番目に一般的なものをプッシュする方法で、ローカル ブランチ<branch>を追跡リモート ブランチ (通常は同じ名前のブランチ) にプッシュします。したがって、ほぼ同等<branch>:<branch>です。最も一般的な方法はgit push、構成に基づいてリモートとブランチを独自に把握する方法ですが、安全のために、明示的に指定することもできます。

ユースケースに戻ると、他の人のリポジトリをフォークして変更を加え、その変更をプルリクエストとして元の作成者に提案したいと思います。これを行うには、次の手順に従う必要があります。

  • GitHub でリポジトリをフォークする
  • 自分のリポジトリのクローンを作成します (つまり、フォーク)
  • 現在のローカルリポジトリで変更を行います
  • 変更をフォークにプッシュします (どのブランチでも問題ありませんが、わかりやすくするために別のブランチを使用することをお勧めします)
  • GitHub でフォークを参照するときに、プル リクエスト ボタンをクリックして、プッシュされたブランチに基づいてフォークを作成します
于 2013-02-13T17:44:42.300 に答える