Git add
、Push
、およびcommit
の違いは何ですか?
SVNから来る混乱が少しあります。ここで、「更新」は「追加」を行い、コミットは「プッシュ」を行い、「追加」も行います。
Gitにはさまざまな機能がすべてあります。あなたの経験から何らかの説明を期待しています。
git add
は、変更されたファイルをキューに追加し、後でコミットされるようにします。ファイルはコミットされませんgit commit
は追加されたファイルをコミットし、ログで新しいリビジョンを作成します...ファイルを追加しない場合、gitは何もコミットしません。両方のアクションをgit commit -a
と組み合わせることができます
git Push
は、変更をリモートリポジトリにプッシュします。
this git cheat sheet のこの図は、ワークフローの良いアイデアを与えます
推奨されるコミット方法はgit add
であるため、git commit -a
は図にありませんが、フローを理解するためにgit add
を変更ブロックに精神的に追加できます。
最後に、Push
が別個のコマンドである理由は、git
の哲学によるものです。 git
は分散バージョン管理システムであり、ローカル作業ディレクトリはリポジトリです!コミットしたすべての変更は即座に反映され、記録されます。 Push
は、作業中の作業が完了したときにリモートリポジトリ(他のユーザーと共有する場合があります)を更新するためにのみ使用されます。これは、変更をローカルで(ネットワークオーバーヘッドなしで)作業および保存し、コミットするたびにではなく、必要なときにのみ更新するための適切な方法です。これにより、間接的にコミット/分岐などが簡単になり(理由は違いますか?コストがかかりますか?)、リポジトリを混乱させることなく、より多くのセーブポイントにつながります。
git add
は変更を選択します
git commit
はローカルに変更を記録します
git Push
は変更を共有します
git add
はGitインデックスにファイルを追加します。Gitインデックスは、コミットする準備ができているオブジェクトのステージング領域です。git commit
はインデックス内のファイルをリポジトリにコミットします。git commit -a
は、変更されたすべての追跡ファイルを最初にインデックスに追加するショートカットです。git Push
は、ブランチがマップされているリモートリポジトリ(GitHubなど)に保留中のすべての変更を送信します。Gitを理解するには、ドキュメントを一見するだけでなく、より多くの労力を費やす必要がありますが、間違いなく価値があります。ほとんどのGitコマンドには直接対応するものがないため、GitコマンドをSubversionに直接マップしようとしないでください。
「追加」が実際に何をするのか、私は混乱していました。 Git Proという本から非常に啓発的なパラグラフを読みました。それはここで追加したいと思います。
「Gitは、git addコマンドを実行したときとまったく同じようにファイルをステージングすることがわかりました。コミットする場合、git addコマンドを最後に実行したときのベンチマークのバージョンは、コミットの実行方法であり、git commitの実行時に作業ディレクトリで表示されるファイルのバージョンではありません。 git addの実行後にファイルを変更した場合は、最新バージョンのファイルをステージングするためにgit addを再度実行する必要があります。
抜粋:チャコン、スコット。 「Pro Git。」Springer、2009-08-19T00:00:00 + 00:00。 iBooks。この素材は著作権で保護されている場合があります。
addはgitにファイルの追跡を開始するよう指示します。
commitは、ローカルリポジトリ上の現在の変更をコミットします
プッシュは、ローカルリポジトリをアップストリームにプッシュします。
非常に素晴らしい pdf 多くのGITシークレットについて。
Addはsvnのaddと同じです(ファイルを解決済みとしてマークするために使用されることもあります)。
Commitもsvn'sと同じですが、ローカルリポジトリに変更をコミットします。