2

以前git add -pは、コードの変更を複数のコミットに分割していました。ただし、その後に実行すると、ステージングされていないものを含むすべての変更git commitがコミットされます。SOに関するいくつかの質問を見ましたが、明らかな間違いは見つかりませんでした。私が間違っていることを理解するのを手伝ってもらえますか?以下は、私が試したコマンドとその出力です。

bash-3.2$ git diff test11.txt
diff --git a/test11.txt b/test11.txt
index f077274..e811cae 100644
--- a/test11.txt
+++ b/test11.txt
@@ -1,5 +1,5 @@
-Hello
-World
+hello
+world

-Blahblahblah
-blah
+blahblahblah
+Blah
bash-3.2$ git add -p test11.txt
diff --git a/test11.txt b/test11.txt
index f077274..e811cae 100644
--- a/test11.txt
+++ b/test11.txt
@@ -1,5 +1,5 @@
-Hello
-World
+hello
+world

-Blahblahblah
-blah
+blahblahblah
+Blah
Stage this hunk [y,n,q,a,d,/,s,e,?]? s
Split into 2 hunks.
@@ -1,3 +1,3 @@
-Hello
-World
+hello
+world

Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]? y
@@ -3,3 +3,3 @@

-Blahblahblah
-blah
+blahblahblah
+Blah
Stage this hunk [y,n,q,a,d,/,K,g,e,?]? n

bash-3.2$ git status
# On branch test
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   test11.txt
#
# 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:   test11.txt
bash-3.2$ git commit test11.txt
[test 1b85189] Test12
 1 files changed, 4 insertions(+), 4 deletions(-)
bash-3.2$ git status
# On branch test
nothing added to commit
4

3 に答える 3

10

コマンドでファイル名を指定しないでくださいgit commit

デフォルトでgit commitは、他のパラメーターを指定しないと、インデックスの内容がコミットされます ( を介してステージングしたものは何でもgit add)。

ただし、ファイル名を指定すると (例: git commit <filename>)、Git は実際にはインデックスを完全にバイパスし、指定されたファイルの現在の状態を作業ディレクトリにそのままコミットします。


基本的に、 でファイル名を使用git add またはgit commit指定しますが、両方を実行しないでください。

于 2012-09-16T06:18:17.693 に答える
2
$ man git-commit
NAME
       git-commit - Record changes to the repository

SYNOPSIS
       git commit [-a | --interactive] [-s] [-v] [-u<mode>] [--amend] [--dry-run]
                  [(-c | -C | --fixup | --squash) <commit>] [-F <file> | -m <msg>]
                  [--reset-author] [--allow-empty] [--allow-empty-message] [--no-verify]
                  [-e] [--author=<author>] [--date=<date>] [--cleanup=<mode>]
                  [--status | --no-status] [-i | -o] [--] [<file>...]
[...]

       <file>...
           When files are given on the command line, the command commits the contents of the named files, without recording the changes already
           staged. The contents of these files are also staged for the next commit on top of what have been staged before.

を書く代わりに、またはgit commit <file>だけを書きたいと思うでしょう。git commitgit commit -m "this is my commit message"

于 2012-09-16T06:19:42.687 に答える