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

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

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

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

2136閲覧

git checkout ができない

e.senaha

総合スコア20

Git

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/08/24 02:58

gitで管理しています。
新たに作ったブランチで作業して、git commit するたびに
postgressのデータが更新され、またgit commitしないとブランチの移動ができないのですが
結局、再commitしても postgressのデータが更新されて ブランチ移動できないというスパイラルにいます。

git checkout main 時のエラー error: Your local changes to the following files would be overwritten by checkout: data/db/pg_stat_tmp/db_0.stat data/db/pg_stat_tmp/db_13395.stat data/db/pg_stat_tmp/global.stat Please commit your changes or stash them before you switch branches. Aborting

↑をコミットしてステータスを見ると以下になります

git commit -m "ab" git status On branch auth Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: data/db/pg_stat_tmp/db_0.stat modified: data/db/pg_stat_tmp/db_13395.stat modified: data/db/pg_stat_tmp/global.stat no changes added to commit (use "git add" and/or "git commit -a")

どうしたらこの状況から抜け出せますでしょうか?
ご教授のほど宜しくお願い申し上げます。。

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

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

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

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

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

guest

回答1

0

ベストアンサー

質問文のやり方ではコミット出来てないと考えられます。
ですが、こいつらはコミットしない方が良いな。
.gitignoreに追加して変更一覧に出ないようにしてください。


何はともあれコミットのやり方を解説します。

コミットはAとBのファイルを変更してA'とB'の状態にしたよという変更履歴を付ける方法です。
Gitでコミットを行う時は「このファイルの何行目を変更したよ!」という風に明示する必要があります。
このファイル単位・行単位で明示して指定する行為を「ステージに移動させる」と呼びます。

参考記事: Gitのステージとは?ファイル選別だけではなかった、もう一つの目的とは

今回のgit statusコマンドを実行した時、
3つのファイルが変更されていますよと教えてくれていますね。
これらをgit add ファイル名で指定してステージに移動させる必要があります。

その後改めてgit commit -m コミットメッセージでコミットすれば成功するでしょう。


次に.gitignoreに放り込むべきと考えたのかを解説します。

bash

1$ git status 2On branch auth 3Changes not staged for commit: 4 (use "git add <file>..." to update what will be committed) 5 (use "git restore <file>..." to discard changes in working directory) 6 modified: data/db/pg_stat_tmp/db_0.stat 7 modified: data/db/pg_stat_tmp/db_13395.stat 8 modified: data/db/pg_stat_tmp/global.stat 9 10no changes added to commit (use "git add" and/or "git commit -a")

これらは開発用環境で動作させた時に作られる一時ファイルではないでしょうか?
tmp(一時ファイルに名付ける使い捨てのファイル)がパスに含まれていますしね。
もっと言うとPostgreSQLのバイナリデータとか入ってるんじゃないですか?
PostgreSQL詳しくないから知らんけどパスにpg_stat_tmpとか書いてあるし

基本的にそういうデータはGit管理せず、
代わりに一時データ作成用のSQLファイルや、
スクリプトとかをGitで管理してファイルサイズを抑えたり可読性を上げる方針が一般的です。

まずは上長に相談して、これらのデータを.gitignoreに放り込んでGitでの管理対象外にするべきか聞いてみてください。

参考記事: .gitignore の書き方 - Qiita

投稿2021/08/24 03:20

miyabi-sun

総合スコア21194

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

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

e.senaha

2021/08/24 13:55

懇切丁寧にご回答いただきありがとうございます。 ファイル単位、行単位でステージにあげることなど、より細かな仕様が知れて勉強になりました。 仰る通りtmpというファイル名もついているので そもそも管理する必要がないのかもしれません。 そういった視点で上長に相談してます。 ありがとうございました。助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問