質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Q&A

解決済

1回答

432閲覧

.gitignoreの相対パスから、ファイルの絶対パスを取得したい

sujico.net

総合スコア453

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

0グッド

1クリップ

投稿2019/01/18 10:10

編集2019/01/18 10:53

#やりたいこと(最終目標)
##最終目標
gitで管理しているソースコードで、.gitignoreの対象ファイルの退避(mv)を行いたい。
その後ソースコードを全て削除し、退避した対象ファイルを元の場所に戻したい
それをシェルで行いたい

##今詰まっていること

.gitignoreに記載されている相対パスを元に、.gitignoreの対象ファイルの全ての絶対パスを取得したく、試行錯誤しているのですがうまくいきません。
特にワイルドカードが厄介だと感じています。
また、.gitignoreのファイルは全て存在しているとは限りません(将来的に存在するファイルも記載されている)

gitignore

1# temp files from editors 2*~ 3*.bak 4.project 5appspec.yml 6 7# dynamically generated files 8/fuel/app/yearandmonth/*/* 9/hooks/app.sh 10

※例です
※/fuel/app/yearandmonth// には {年}ディレクトリ {月}.phpが入るイメージです

#実現したいこと
この.gitignoreのようなファイルの中身から、ファイルの絶対パスを取得したいです。
お手数ですが、何か良い方法がございましたら、何卒ご教示頂けますと幸いです。

宜しくお願い致します。

#補足
シェルは.gitignoreと同じパスに置か、.gitignoreのディレクトリの1つ下のディレクトリの中に配置することを想定していました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

set0gut1

2019/01/18 10:36

.gitignoreの対象ファイルをすべて消したいということですか?
sujico.net

2019/01/18 10:43

.gitignoreのファイルをどこかに移動させて、あとで戻したいということです。
set0gut1

2019/01/18 10:49

把握しました。消すと戻せなくなるファイルを洗い出したいって感じなのですね。最終目標が「.gitignore対象ファイル"以外"を退避させる」となってます。
sujico.net

2019/01/18 10:52

大変失礼致しました! 修正いたします。
guest

回答1

0

ベストアンサー

色々悩ましいところありますね。

  • ルート以外にサブディレクトリにも .gitignore が存在する可能性がある
  • .gitignore の設定値は相対パスじゃない(src/.gitignore に foo と書くと src/subdir/foo も ignore される)

GitHubが出しているGitチートシート(リンク)ってのがあって、これによると、

git ls-files --other --ignored --exclude-standard

と打つと、プロジェクト内のすべての除外されたファイルを一覧で表示できます。

フルパスに戻すのは、なんか良い感じにパイプするといけます。

git ls-files --other --ignored --exclude-standard | xargs realpath

投稿2019/01/18 12:02

set0gut1

総合スコア2413

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sujico.net

2019/01/18 12:12

まさに欲しかった情報はこれです、ありがとうございます! まだまだ勉強不足でした。大変参考になります。 上記試してみました、プロジェクトホームを起点に全ての除外ファイルが表示されるといったような動作でしょうか? ここまで出来れば絶対パスはどうにでもなるかと存じますので、この方法を元に薦めてみたいと思います!
sujico.net

2019/01/18 12:12

ご回答頂きありがとうございました。 ベストアンサーとさせて頂きます。
set0gut1

2019/01/18 12:22

BAありがとうございます! 引数無しで実行するとカレントディレクトリ起点で除外ファイルを表示する挙動でした。 (起点となるディレクトリを引数として与えられるっぽいです。) なのでシェルスクリプトが1階層下がったところにあるなら、ちょっと調整が必要ですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問