15

だから私はいくつかの追跡されていないファイルを隠しました

git stash --include-untracked

その後、別のブランチに切り替えました。

どのような変更が隠されているかを見ると:

backend/infinispan-rar/pom.xml                     |   12 ++++++++++--
backend/pom.xml                                    |   13 +++++++++++--
backend/test/pom.xml                               |    3 +--
.../main/resources/com/mojiva/testDbContext.xml    |    6 +++---
data/mojiva.xml                                    |    2 +-
dbmigration/pom.xml                                |   16 ++++++++++------
.../main/resources/db/changelogs/issue-17544.xml   |    4 ++--
pom.xml                                            |   11 +++++++++++

次に、これらのファイルを取得しようとしました

git stash pop

これを取得します:

backend/activator/effective.pom already exists, no checkout
backend/adverter/src/test/java/com/mojiva/presenter/RequestParamReplacerTest.java already exists, no checkout
backend/dao/.cpath already exists, no checkout
backend/dao/.e0 already exists, no checkout
backend/dao/PutObjectStoreDirHere/defaultStore/Recovery/TransactionStatusManager/#22#/0_ffffc0a86465_cfd2_5016b5cb_1 already exists, no checkout
backend/dao/dep.tree already exists, no checkout
backend/feeds-test/.e0 already exists, no checkout
backend/feeds-test/dep.tree already exists, no checkout
data/wurfl-patch.xml already exists, no checkout
run/linksDB.log already exists, no checkout
run/linksDB.properties already exists, no checkout
run/linksDB.script already exists, no checkout
Could not restore untracked files from stash

どのファイルも同じではないことに注意してください。

ここで何が起こっているのですか?

ありがとう!

4

4 に答える 4

1

Git 2.34 は、「追跡されていないファイルを stash から復元できませんでした」という別のシナリオに対処します。

" git stash" ( man )という暫定的な変更でディレクトリからファイルへの変更 (またはその逆) が混乱していましたが、Git 2.34 (Q4 2021) で修正されました。

commit bee8691commit 3d40e37commit 4dbf7f3 (2021 年 9 月 10 日) by Elijah Newren ( newren)を参照してください。
( 2021 年 10 月 3 日、コミット 4a6fd7dJunio C Hamanoによってマージされました)gitster

stash: 追跡されたファイルを復元した後、追跡されていないファイルを復元します

署名者: Elijah Newren

ユーザーがファイルを削除し、追跡されていないファイルのディレクトリをそこに置き、これらの変更をすべて隠した場合、ファイルの追跡されていないディレクトリは、途中の対応するファイルが削除されるまで復元できません。
そのため、追跡されていないファイルを復元する前に、追跡されたファイルへの変更を復元してください。

ユーザーが追跡されていないファイルを削除してから、その場所に追跡されたファイルを追加することについて心配する必要のある対応する問題はありません。
Git は追跡されていないファイルを追跡しないため、追跡されていないファイルが削除されたことを認識できないため、そのファイルの削除を隠しておくことはできません。


Git 2.35 (2022 年第 1 四半期) より前は、" git stash apply" ( man )は、追跡されたファイルへの変更の復元に失敗したときに、追跡されていないファイルの復元を試みるのを忘れていました。

Elijah Newren ( )によるcommit 71cade5 (2022 年 1 月 4 日)を参照してください。( 2022 年 1 月 10 日コミット 6e22345Junio C Hamanoによってマージされました)newren
gitster

stash: 追跡されていないファイルを復元する前に戻らないでください

報告者: AJ Henderson
テストケース作成者: Randall S. Becker
署名者: Elijah Newren

コミット bee8691 (「 : 追跡されたファイルを復元した後、追跡されていないファイルを復元する」、2021年9 月 10 日stash、Git v2.34.0-rc0 --バッチ #10に記載されているマージ) で、試行する前に追跡されたファイルへの変更を復元する必要があることを正しく識別しました。追跡されていないファイルを復元するために、それに応じて、追跡されていないファイルを復元するためのコードを数行下に移動しました。 残念ながら、途中の行には初期の return ステートメントがいくつかありました。これは、場合によっては追跡されていないファイルの復元を突然停止したことを意味します。do_apply_stash()

前回のコミットの前でさえ、現在のコードには別の問題がありました。スタッシュの復元後に実行することを意図していた post-stash-apply ' git status' ( man )が、競合 (または他のエラー状態) に遭遇したときにスキップされました。 )、これは少し矛盾しているように見えます。

返品ステータスを保存し、返品前に他の機能を実行して、両方の問題を修正します。

于 2021-10-10T14:31:10.120 に答える
-3

ソース コードではないログやその他のファイルは無視する必要があります。いずれにせよ、追加--forceして上書きすることができます。

あなたのケースで何が起こっているかというと、隠したファイルがポップされたときに、作業フォルダーに既にあるファイルを上書きしようとするということです。そこに重要な作業がある場合、git はそれを安全に再生し、やみくもに上書きしません。

最良のアドバイスは、セットアップをクリーンアップすることです。

  1. ソース コードではないファイル (ログ ファイルなど) をファイルに追加し.gitignoreます。
  2. 構成ファイルには、ブランチまたは環境を切り替えるたびに変更されないように、接続文字列を抽象化する必要があります (別のマシンでリポジトリを使用します)。progit.org/book の git 属性の章で、smudge/clean スクリプトを参照してください。

初めての方は、webchat.freenode.net で #git IRC チャンネルを開いたままにしておいてください :)

于 2012-08-31T20:07:07.430 に答える