2013-04-17 6 views
7

はステージング領域をスキップしてをコミットし、をコミットして新しいファイルをgitにコミットできますか?ステージング領域をスキップして、未追跡の新しいファイルをgitにコミットすることはできますか?

:commitコマンドをgitのに-aオプションを提供

http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository

自動的に追加パーツをgitのをスキップさせる、すでにコミット を行う前に追跡されているすべてのファイルをステージにGit を作ります$ git commit -a -m 'added new benchmarks'

ありがとうございます。

+0

'commit 'の後にコマンドラインでファイル名を指定することもできます。 – Richard

+0

@Richardこれは、未追跡のファイルをコミットしません。エラーメッセージ 'gitと判明したファイルは一致しませんでした。 ' –

答えて

2

これは(私は認める)教祖のために非常に些細なようだが、私にはマイナーな啓示であるかもしれない - 少なくとも、(カスタムエイリアスなし)私は今初めてそれを使用し、それが動作します。ただ、セミコロン;を使用して、それはワンライナーとして働くます:

git add --all; git commit -m "some informative commit message"

13

組み込みのコマンドラインコマンドを使用していますか?カスタムエイリアスを使用して

git add -A 
git commit 

:2つのコマンドを使用して第

.gitconfigにこれを追加します。

[alias] 
    commituntracked = "!git add -A; git commit" 

その後、あなたは

を行うことができます
git commituntracked 
+0

("変数 ")コミットメッセージをインクルードするようにカスタムエイリアスを拡張する方法を教えてもらえますか?どうも! –

+0

実行しているオペレーティングシステムによって異なります。この質問にはいくつかの良い例があります。http://stackoverflow.com/questions/3321492/git-alias-with-positional-parameters-git-foo-aaa-bbb-ccc-foo-aaa-bar-bbb –

+0

Linux。申し訳ありませんが、少なくとも(一見して)私はそのリンク上の例文をまとめてここに適用し、git commitメッセージを含めることはできません。 '-m'を追加して、' git commituntracked -m 'に何らかのメッセージを '' '与えることができますか? –

2

はい。これを行うには、少なくとも2つの主要な方法があります。まず、ステージング領域を使用する必要はありません。ステージング領域を好きなだけ多く設定することができます。GIT_INDEX_FILE=/path/to/private/indexを設定してください。第二に、自分でコミットを直接構築することができます。それは難しいことではありません。

Gitのリポジトリコアは、blob、tree、commitオブジェクトを扱います(ここではあまり関係がありません、注釈と注釈付きタグ)。オブジェクトをダンプするgitコマンドはgit cat-file -pです。

ブロブはちょうどbag-o-bitsです。 git hash-object -wfilenameでリポジトリに1つを追加すると、そのファイル内のブロブの〜真の名前〜を印刷し、そのブロブをレポに追加します。ツリーはオブジェクトをファイルシステム名に結びつけます。 git mktreeでリポジトリに1を追加します。何を餌にするかを知るために、例えば木を印刷する。 git cat-file -p HEAD^{tree}git commit-treeでリポジトリにコミット追加、基本的に、あなたはいくつかの環境変数を設定し、git commit-tree -pmom-pdad sometreeを言うと、標準入力にメッセージをコミットし、それを養います。

これは本当に必要なすべてです。さらに細かくスライスしてダイシングして木にしたい場合は、とwrite-treeが非常に便利です。これがすべてあなたにとって魅力的であれば、git core tutorialは良い概観です。