2013-04-18 14 views
8

最初にそのリポジトリのローカルクローンを作成せずに、リモートgitリポジトリにコミットをプッシュする方法はありますか?リモートレポのファイルを更新するには、まずそのレポをクローンする必要はありませんか?

私はリモートリポジトリの有効なURLを持っています。私はファイルのパスを知っています。私がしたいのは、更新されたバージョンのファイルをマスターにプッシュすることだけです。理想的には、これは有効なリモートリポジトリのURLで動作するようにしたいと思いますが、httpsベースのgit URLでのみ動作する場合は役立ちます。

一般的なケースでは、クローンを作成せずに単一のファイルを検索することさえできないと思われるので、回答はHow to "git show" on a remote repo?となっています。しかし、私はいくつかの下位レベルのgitコマンドを使用する回避策があることを期待しています。

+1

最初はリポジトリ全体を持たずにファイルを編集するのはなぜですか、それとも本当にすべきなのでしょうか? –

+1

リモートリポジトリが[github](http://github.com)でホストされている場合は、そのファイルを直接編集できます。そうでなければ、私はそれが可能だとは思わない。 –

+1

@MadaraUchihaなぜか?場合によっては、大規模なレポにわずかな変更を加えるだけで済むので、全体をクローンするには多くの時間がかかります。私の場合、管理アプリケーションは何百ものgit reposに含まれているメタデータを更新する必要がありますが、その目的のためにのみすべてのローカルコピーを維持したくありません。 – algal

答えて

7

不可能です。しかし、将来のコミットは親として1つのコミットを持つだけでよいので、いわゆる "浅いクローン"を採用し、必要なブランチのチップコミットを取得することができます。これにより、リモートから最小限の量のオブジェクトのみが取り込まれます。コマンドラインオプション--depthgit cloneであることを確認します。

+0

興味深い機能! manページはこう言っています:あなたはそれをクローンやフェッチすることはできません。したがって、これを使ってパッチを作成してパッチを個別に送信することはできますが、変更を自動的にプッシュすることは役に立ちません。 – Shahbaz

+0

@Shahbazマニュアルは実際には間違っています。あなたはそれをちょうど良いから押し出すことができます... – poke

+0

@poke、私はそれを試していませんが、確かであればマニュアルページにバグレポートを提出することを検討してください。 – Shahbaz

3

いいえ、私はそうは考えていません。これを行うにはリポジトリ全体をクローンする必要があります。 Gitはすべてのファイルについて知っている必要があり、.gitはその仕事を正しく行う必要があります。これは、そのような任意のファイルをプッシュするだけのことができない理由です。

1

@algal、ご使用の場合、サブモジュール(http://git-scm.com/docs/git-submodule)を使用することができます。あなたはクローンしてサブモジュールにコミットすることができます。あなたが言及した "大規模な"コードを含む可能性のある "スーパーモジュール"を複製しないでください。スーパーモジュールはあなたが述べた設定情報のサブモジュールを参照することができます。

0

はいあなたはこれがあなたの新しいプロジェクトのルートで

  1. git init
  2. git remote add origin [email protected]:yourusername/yourpoject
  3. git tag -a v2.0 -m 'version 2.0'
  4. を手順に従っtagging

    を使用して新しいバージョンをプッシュすることができますgit add .

  5. git commit -m "New Version 2.0 :rocket:"
  6. git push -u origin v2.0

今、あなたの新しいプロジェクト とmasterブランチでV2.0と呼ばれる新しい枝が手つかずのまま持っています。 それ以降は、githubプロジェクト設定のデフォルトブランチを変更することはできません。

関連する問題