• 締切済み

シェルでGitからデータを取得する方法

シェルでGitからソースを取得する方法があれば教えて下さい。 現在、Linuxサーバー上に配置しているシェル内で、以下の処理を行っています。 [svn export --force "Linux上のAフォルダパス" "svn://・・・・"] 1.SVNからファイルを取得 2.Linux上のフォルダに「1」で取得したファイルを配置 今度、ソース管理がSVNからGitに代わることになるのですが、 上記のシェルで行っていたことをGitに対してもできるのでしょうか? 「git archive~」や「git checkout-index~」でファイルは取得できそうですが、 シェルに書くコードとしてはどのように書けばいいのでしょうか? よろしくお願いします。

みんなの回答

  • 123admin
  • ベストアンサー率52% (1161/2212)
回答No.1

質問に興味を持ち少し調べてみました。 元々プログラムを一切書かない人間ですが、友達にはプログラムをやる人間が多くて概念だけでも知って置かないと話題について行けなかった為に知識だけでもが習慣になっています。 SVNもGitも何?状態でしたが SVNを捨ててGitを使うべき5つの理由 https://qiita.com/YusukeHosonuma/items/14c59f3878d640a401a1 で大まかには理解できました。 要はバージョン管理システム。 プロジェクトチームの開発では必要不可欠ですね。 SVN脳患者から見たGit https://qiita.com/kaityo256/items/81e7951a1ca2706955a4 回答にもなりませんが開発環境の一端を知ることができました。 ありがとうございました。

関連するQ&A

  • Gitリポジトリの取得方法

    Gitと言う物を初めて使います。 やりたいことは、SourceForgeの以下のサイトからにアクセスしたいのですが、やり方が分かりません。 環境はWindowsです。 とりあえず、Gitのアプリをインストールしました。 GitGUIと言うのを立ち上げて「既存のリポジトリを開く」を選択して、リポジトリに色々と指定したのですが、エラーばかりで何を指定すれば良いのか分かりません。 「http://redmin-mylyncon.git.sourceforge.net/git/gitweb.cgi?p=redmin-mylyncon/redmine-mylyn-connector;a=tree」 とか 「git://redmin-mylyncon.git.sourceforge.net」 とか 「git://redmin-mylyncon.git.sourceforge.net/redmin-mylyncon/redmine-mylyn-connector/tree」 など指定しましたが、上手くいきません。 ネットで調べて見ても、Linux環境でCUIかつローカルリポジトリでの説明ばかりで全然分かりません。 GUIでリモートリポジトリに接続してソースを取得するにはどうすれば良いのでしょうか? (一応、SVNでの経験はあります。) 以上、よろしくお願いいたします。

  • gitを使っている人に質問です。

    gitでソース管理をしています。 gitではファイルをコミット、プッシュする用のリポジトリフォルダと、自分がローカルで作業する用の普通のフォルダ、2種類のフォルダで作業せよと教わったのですが、そうなんですか? 「Project」というフォルダを、リポジトリとしているとします。 そのコピーを「Project2」とし、ローカルでのファイルの修正はそこですると。 で、自分の修正が終わってコミット、プッシュする前に、 「Project」を最新にするためにそこで同期、プルを行います。 その後で「Project2」の中の自分が修正したファイルを「Project」の中に上書きし、その後にコミット、プッシュする。 そういう流れなんでしょうか? 滅茶苦茶分かり辛いのですが。 同じプロジェクトファイルが2つもあるなんて、ごちゃごちゃになりそうです。 上からはそういう風に指示されたけどそんなの面倒なので、「Project」の中のファイルをダイレクトに修正していました。 んでプッシュしようとしたら失敗しました。 別の人が、自分のと被らないファイルを修正したようでした。 ここで、自分がもしそのファイルを最新にせずにコミット、プッシュをしたら、自動でマージしてしまうか、私のローカルにあった古いファイルで上書きしてしまうのでしょうか??? 自分が修正したファイルだけをアップするんじゃないんですか? SVNやVSSならそうだったはずです。 GIT、意味不明です。 GITに反対します。 ご意見をよろしくお願いします。

  • raspberrypiのkernel構築について

    ラズベリーパイのカーネル構築で、 カーネルソースをgitで取得したのち、config&makeしたkernelでは起動できたのですが、 Linux kernel Archive から、3.12.34や3.17.4のtarボールを取得・展開し、gitで使用した.configを使用しconfig&buildしたkernelでは起動できずフリーズしてしまいます。 どこが間違っているのか?どなたか教えていただけないでしょうか?

  • ubuntu Linuxのsvnの使い方

    現在ubuntu Linuxを使用しています。現在sourceforgeサイトに置いている自分のプロジェクトでsvnかgitでアクセスして自分のプロジェクトのファイルをダウンロードしたいと思っているのですが、どのようにすればsourceforgeの自分のリポジトリにアクセスしてダウンロードするのか教えて頂けないでしょうか。 まず、自分のubuntuにはsvnやgitのクライアントがインストールされているのかを確認する方法などを教えて頂けるとありがたいです。 どうぞ、よろしくお願い致します。

  • Linuxシェルでの大量データ投入スクリプト

    Linuxシェルでの大量データ投入スクリプト パフォーマンステスト用の大量(数千万件単位)のデータを DBに投入したいと思っています。 これをLinuxシェルで作成しようと思っています。 今まではsqlplus(あ、DBはoracleです)でログインしてから 複数のSQL文をベタベタ列挙したテキストファイルを読み込んで実行したり シェルの中で1回ずつコネクションを作成して処理を行なう というどちらかの方法しか行なったことがありませんでした。 あと、PLSQLで行なう方法もやったことはありますが、今回は 勉強の意味で、Linuxシェルのみを使用して行ないたいと思っています。 今回は、以下の条件・方針で行ないたいと思っています。とりあえず。 ・すべてのSQL文を記述するのではなく、レコードごとに変化する  IDの部分だけをシェルで埋め込む方法にしたい ・コネクションは何度も接続しなおすのではなく、まとめて1回で行ないたい ・ある程度の件数ごと(実質的には500件くらい)にコミットを行ないたい ・とりあえずLinuxシェルでやってみたい ・とりあえずストアドなしでやりたい 途中まで以下のソースを作成しました。 あとはechoの部分を書き換える感じなのですが、 コネクション管理の方法がわからずつまづいています。 まずは、Linuxシェル内でのコネクション管理をすることが出来るのかどうかを 教えてください。もしできるのであればその方法等を教えてください。 出来れば具体的な記述を下記シェルに埋め込む形での解説をお願いしたいです。 よろしくお願いします。 #!/bin/sh declare -i I=10 echo 【DBコネクション取得】 until [ ${I} -eq 0 ] do echo 【ID部分を埋め込んでINSERT文作成】 echo 【INSERT文実行】 if [ `expr ${I} % 3` -eq 0 ]; then echo 【commit文】 fi I=${I}-1 done echo 【commit文】 echo 【DBコネクション切断】

  • オラクルDBからのデータ取得について

    こんばんわ。 オラクル(sqlplus)についての質問2点です。 (1)シェルからオラクルDBへアクセスし、データを取得したいのですが、  select時に、結果のヘッダーをつけずに結果(データ)のみをファイル出力することは可能でしょうか? (DB2で言うところの「-x」オプションのような・・・) (2)エラー時にSQLコードを取得したいのですが、SQLコードをファイル出力することは可能でしょうか? オラクルは初心者で、行き詰まってしまいました・・・ どうかよろしくお願いします。

  • oracleのExportシェル作成

    oracle10gを使用しています。 テーブル単位のExportを行うシェルを作成しようと思っております。 テーブルをfilesizeを指定し分割したいのですが、 "エクスポート・ファイル: EXPDAT.DMP >"を検知、新たにファイル名を指定、Enter の書き方がわかりません。お力添え宜しくお願いします。 ファイル名は最初にexp_dump01.dmpを指定し、以降はexp_dump02.dmpと 番号をインクリメントさせたいと思っております。 現在、以下のようなシェルを作成しました。 #!/bin/sh #変数指定 CON='エクスポート・ファイル: expdat.dmp >' RET='エクスポートは警告なしで正常終了しました。' ICOUNT=1 #コマンド実行 expコマンド #結果取得 VAR=`command` #取得結果が次のファイル名を要求している場合 while [VAR=CON] do ファイル名をインクリメントしたものを指定 done #取得結果が正常終了を示した場合 if [VAR = RET] echo 'Exportが終了しました。' fi #次のコマンド実行

  • SVNでタグ指定でコミット履歴を見る方法は?

    SVNでタグ指定でコミット履歴を見る方法は? SVNで特定のファイルにのコミットコメント履歴を見たいと思っています。 その際に、2つのタグを指定しその間の履歴のみを参照したいと思っています。 CVSでは普通に用意されていて、容易に実行できました。 SVNでも同等の機能があるはずだと思っていたのですが、 少し調べたところCVSとは違い、タグを指定してコマンドを 実行する文化が無いようだということは分かりました。 代わりに、タグをつけたときのリビジョンを指定すればいいのですが タグをつけたときのリビジョンの取得方法が分かりませんでした…。 そこで質問です (1)(もしあるならば)SVNコマンドでタグを指定して  コミットコメントの履歴を取得する方法 (2)SVNコマンドでタグを指定してそのリビジョン番号を取得する方法 ※(1)(2)ともにそうですが、出来ないことが分かっているのなら 「出来ない」という情報をいただけるとうれしいです。 ※作業自体はシェルに書き込むので、SVNへの複数回のアクセスや Linuxコマンドを組み合わせて実行するのでもかまいません。 よろしくお願いします。

  • リビジョン指定でのSVNログ取得で、ファイルが削除されている場合の指定

    リビジョン指定でのSVNログ取得で、ファイルが削除されている場合の指定 SVNとCVSの違いで少しはまっています。 やりたいことは、リビジョンを指定しその間の変更ログの取得です。 CVSの場合は、対象としたいリビジョンの範囲で 追加・変更・削除の場合でそれぞれ以下のような指定で取得できました。 変更「cvs rlog -r100::200」 追加「cvs rlog -r::200」 削除「cvs rlog -r100::」 SVNの変更の場合は以下でうまくいきます。 「svn log -r 100:200」 しかし、削除があった場合には「構文エラー」となります。 以下のバリエーションを試しましたがダメでした。 「svn log -r 100:」「svn log -r 100」 「svn log -r 100:HEAD」「svn log -r 100:BASE」 「svn log -r 100:COMMITTED」「svn log -r 100:PREV」 途中での追加の場合は試していませんが、削除と同じ問題が 発生すると思っています。 削除・追加の場合のコマンドの表記方法、これを教えてください。 もしもSVNには上記の方法では情報を取得することが出来ない場合、 代替方法等あればそれを教えていただきたいです。 以上、よろしくお願いします。 背景を少し書いておきます。 2つのタグの間の差分を出力するシェルを作っています。 タグからリビジョン番号を取得し、そのリビジョンを使用して svn diffを実行し、変更ファイルの一覧を取得する方法は成功しました。 で、ここから得られたリストを元に、各ファイルの コミットコメントのログを取得したいと思っています。 なので、シェルの入力値は基本的には、2つのタグの文字列になります。

  • $git diff 差分を表示で何かがへんなんです

    お世話になります。 Gitを勉強していてわからないことがあります。 対象となるファイルの中を書き換えました。 その後、変更されている差分を表示したところよくわからないコードが出てきました。 下記のコードが意味するよくわかりません。私に何を教えてくれているのでしょうか? -1<8D>s<96>ڂ<F0><92>lj<C1><82><B5><82>܂<B5><82><BD><81>B -2<8D>s<96>ڂ<F0><92>lj<C1><82><B5><82>܂<B5><82><BD><81>B 以上、よろしくお願いします。 出力結果 user@user-PC /c/first_git (master) $ git diff diff --git a/README.md b/README.md index 4dfe31a..5f11ae3 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ -1<8D>s<96>ڂ<F0><92>lj<C1><82><B5><82>܂<B5><82><BD><81>B -2<8D>s<96>ڂ<F0><92>lj<C1><82><B5><82>܂<B5><82><BD><81>B \ No newline at end of file +1行追加 +2行追加 +3行追加 \ No newline at end of file