Gitコミットコマンドの説明

このgit commitコマンドは、ステージングされたすべての変更を、ユーザーからの簡単な説明とともに、ローカルリポジトリへの「コミット」に保存します。

コミットはGitの使用法の中心です。コミットは、プロジェクトのスナップショットと考えることができます。プロジェクトの新しいバージョンが現在のリポジトリに作成されます。コミットの2つの重要な機能は次のとおりです。

  • コミットした変更を後日呼び出すか、プロジェクトをそのバージョンに戻すことができます(Gitチェックアウトを参照)
  • 複数のコミットがプロジェクトの異なる部分を編集する場合、コミットの作成者がお互いに気づいていなくても、それらはお互いを上書きしません。これは、DropboxやGoogleドライブなどのツールよりもGitを使用する利点の1つです。

オプション

に含めることができるオプションは多数ありますgit commit。ただし、このガイドでは、最も一般的な2つのオプションについてのみ説明します。オプションの広範なリストについては、Gitのドキュメントを参照してください。

-mオプション

で使用される最も一般的なオプションgit commit-mオプションです。-mメッセージの略です。を呼び出すときgit commitは、メッセージを含める必要があります。メッセージは、コミットされている変更の簡単な説明である必要があります。メッセージはコマンドの最後にあり、引用符で囲む必要があります" "

-mオプションの使用方法の例:

git commit -m "My message"

端末の出力は次のようになります。

[master 13vc6b2] My message 1 file changed, 1 insertion(+)

注:-mgit commitコマンドに含まれていない場合は、デフォルトのテキストエディタでメッセージを追加するように求められます。以下の「詳細なコミットメッセージの使用」を参照してください。

-aオプション

もう1つの人気のあるオプションは-aオプションです。-aすべての略です。このオプションは、変更されたすべてのファイルを自動的にステージングしてコミットします。新しいファイルが追加された-a場合、オプションはそれらの新しいファイルをステージングしません。Gitリポジトリが認識しているファイルのみがコミットされます。

例えば:

README.mdリポジトリにすでにコミットされているファイルがあるとしましょう。このファイルに-a変更を加える場合は、commitコマンドのオプションを使用して、変更をステージングしてリポジトリに追加できます。ただし、という新しいファイルも追加した場合はどうなりますindex.htmlか?この-aオプションは、index.html現在リポジトリに存在しないため、ステージングされません。新しいファイルが追加されたらgit add、リポジトリにコミットする前にファイルをステージングするためにコマンドを呼び出す必要があります。

-aオプションの使用方法の例:

git commit -am “My new changes”

端末の出力は次のようになります。

[master 22gc8v1] My new message 1 file changed, 1 insertion(+)

詳細なコミットメッセージの使用

git commit -m "commit message"うまく働き、より詳細でsystmatic情報を提供するために役立ちます。

この-mオプションを使用せずにコミットすると、gitはデフォルトのテキストエディターを新しいファイルで開きます。このファイルには、コミットでステージングされたすべてのファイル/変更のコメントアウトされたリストが含まれます。次に、詳細なコミットメッセージを書き込み(最初の行は件名行として扱われます)、ファイルを保存/閉じるときにコミットが実行されます。

覚えておいてください:

  • 標準的な方法として、コミットメッセージ行の長さを72文字未満に保ちます
  • 複数行のコミットメッセージを書くことは完全に大丈夫です-そして推奨さえされます-
  • コミットメッセージで他の問題やプルリクエストを参照することもできます。GitHubは、すべてのプルリクエストと問題に番号参照を割り当てました。たとえば、プルリクエスト#788を参照する場合は、必要に応じて件名または本文のいずれかで参照してください。

—修正オプション

この--amendオプションを使用すると、最後のコミットを変更できます。コミットしたばかりで、コミットログメッセージを間違えたとしましょう。次のコマンドを使用して、最新のコミットを簡単に変更できます。

git commit --amend -m "an updated commit message"

コミットにファイルを含めるのを忘れた場合:

git add FORGOTTEN-FILE-NAME git commit --amend -m "an updated commit message" # If you don't need to change the commit message, use the --no-edit option git add FORGOTTEN-FILE-NAME git commit --amend --no-edit

時期尚早のコミットは、日々の開発の過程で常に発生します。ファイルのステージングやコミットメッセージの正しいフォーマット方法を忘れがちです。--amendフラグは、これらのマイナーなミスを修正するための便利な方法です。このコマンドは、古いコミットメッセージをコマンドで指定された更新されたメッセージに置き換えます。

修正されたコミットは実際には完全に新しいコミットであり、以前のコミットは現在のブランチには存在しなくなります。他の人と作業しているとき、最後のコミットがすでにリポジトリにプッシュされている場合は、コミットの修正を避けるようにしてください。

With --amend, one of the useful flag you could use is --author which enables you to change the author of the last commit you’ve made. Imagine a situation you haven’t properly set up your name or email in git configurations but you already made a commit. With --author flag you can simply change them without resetting the last commit.

git commit --amend --author="John Doe "

The -v or —verbose Option

The -v or --verbose option is used without the -m option. The -v option can be useful when you wish to edit a Git commit message in your default editor while being able to see the changes you made for the commit. The command opens your default text editor with a commit message template as well as a copy of the changes you made for this commit. The changes, or diff, will not be included in the commit message, but they provide a nice way to reference your changes when you’re describing them in your commit message.

How to squash multiple commits into one

This is an awesome feature of rebase that can be used in the interactive mode. To squash the last n commits into one, run the following command:

git rebase -i HEAD~n

That will open up a text-editor with something similar to the following:

pick commit_1 pick commit_2 pick commit_3 ... pick commit_n # Bunch of comments

Leave the first commit alone, and change the rest of the picks to squash. Save and exit the editor.

So if you wanted to squash the last three commits, you’ll first run git rebase -i HEAD~3 and then you’ll want to edit your commits to look something like this:

pick dd661ba Commit 1 squash 71f5fee Commit 2 squash f4b4bf1 Commit 3

If you’ve already pushed to a remote before squashing your commits, you’ll have to push to the remote again, with the -f flag, otherwise git will throw an error at you.

It is strongly suggested that you read the information in the opened file as there are many things you can do.

More Information:

  • Git documentation: commit