web-dev-qa-db-ja.com

gitは変更された変更のみを追加し、追跡されていないファイルは無視します

私は "git status"を実行しました、そして以下にリストされたいくつかのファイルは変更された、あるいは "変更がコミットのためにステージされていない"という見出しの下にあります。それはまた私が無視したいと思ういくつかの追跡されていないファイルをリストした(私はこれらのディレクトリに ".gitignore"ファイルがある)。

コミットできるように、変更したファイルをステージングに入れます。 "git add。"を実行すると、変更されたファイルと無視したいファイルがステージングに追加されました。

以下のgitステータスで表示された場合、変更したファイルのみを追加し、追跡されていないファイルを無視するにはどうすればよいですか。

また、私の "。gitignore"ファイルは正しく動作していますか?

$ git status
# On branch addLocation
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   someProject/path/domain/viewer/LocationDO.Java
#       modified:   someProject/path/service/ld/LdService.Java
#       modified:   someProject/path/service/ld/LdServiceImpl.Java
#       modified:   someProject/path/web/jsf/viewer/LocationFormAction.Java
#       modified:   someProject/war/WEB-INF/classes/message/viewer/viewer.properties
#       modified:   someProject/war/page/viewer/searchForm.xhtml
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .metadata/
#       someProject/build/
no changes added to commit (use "git add" and/or "git commit -a")
551
Steve

理想的には、あなたの.gitignoreは、追跡されていない(そして無視された)ファイルがgit addなどを使って追加された状態で表示されるのを防ぐべきです。だから私はあなたの.gitignoreを修正するように頼みます

変更されたファイルと削除されたファイルをステージングするようにgit add -uを実行できます。

変更したファイルと削除したファイルだけをコミットするためにgit commit -aを実行することもできます。

Gitのバージョンが2.0より前でgit add .を使っていたら、git add -u .を使う必要があることに注意してください( " git add -A”と“ git add .”の違い を参照)。

770
manojlds

これは私のために働いた:

#!/bin/bash

git add `git status | grep modified | sed 's/\(.*modified:\s*\)//'`

あるいはもっと良い:

$ git ls-files --modified | xargs git add
88
user877329

現在の自分の.gitignoreを言っているわけではありませんが、ルートディレクトリに次の内容を持つ.gitignoreがうまくいくはずです。

.metadata
build
4
Karl Bielefeldt
git commit -a -m "message"

-a:このコミットに現在変更/削除されているすべてのファイルを含めます。ただし、追跡されていない(新しい)ファイルは含まれていません。

- m:コミットのメッセージを設定します

1
Saurabh

これが機能なのかバグなのかわからないが、これは私たちにとってはうまくいった:

git commit '' -m "Message"

空のファイルリスト「」に注意してください。 Gitは、ステージングされていなくても、変更されたすべての追跡ファイルをコミットし、追跡されていないファイルを無視するようにこれを解釈します。

0
Erik Englund

たまたまこれを試してみたので、最初にファイルのリストを見ることができた。

git status | grep "modified:" | awk '{print "git add  " $2}' > file.sh

cat ./file.sh

実行:

chmod a+x file.sh
./file.sh 

編集: (コメント参照)これは1つのステップで達成できます。

git status | grep modified | awk '{print $2}' | xargs git add && git status
0
Mike Q