Git:追加vsプッシュvsコミット


114

何のgitの違いはaddpushcommit

SVNから来ると少し混乱します。 "update"はデータを「追加」し、commitは「プッシュ」して「追加」します

gitにはすべての異なる関数があります。あなたの経験からいくつかの説明を期待しています。


回答:


162
  1. git add変更したファイルをキュー追加して、後でコミットします。ファイルはコミットされていません

  2. git commit追加されたファイルをコミットし、ログ付きの新しいリビジョンを作成します...ファイルを追加しない場合、gitは何もコミットしません。両方のアクションを組み合わせることができますgit commit -a

  3. git push 変更をリモートリポジトリにプッシュします。

このgitチートシートのこの図は、ワークフローの良いアイデアを提供します

ここに画像の説明を入力してください

git addコミットするための推奨される方法は結合されているため、図にはありませんgit commit -agit add、フローを理解するために変更ブロックにを精神的に追加できます。

最後に、push別のコマンドである理由は、gitの哲学によるものです。gitは分散バージョン管理システムであり、ローカルの作業ディレクトリリポジトリです!コミットしたすべての変更は即座に反映され、記録されます。push作業中の作業が完了したときにリモートリポジトリ(他のユーザーと共有する可能性があります)を更新するためにのみ使用されます。これは、変更をローカルで(ネットワークのオーバーヘッドなしで)作業および保存し、コミットごとではなく、必要なときにのみ更新するための優れた方法です。これにより、間接的にコミットや分岐などが容易になります(そうではないので、コストはかかりますか?)。これにより、リポジトリをいじることなく、より多くのセーブポイントが得られます。


では、pushはローカルでコミットしてからリモートサーバーにプッシュするのですか、それとも最初にコミットしてからリモートリポジトリに作業をプッシュする必要がありますか?
Andrew S

2
まずローカルリポジトリ(別名ローカルマシン)を更新するコミット( "git commit")を行い、次にリモートリポジトリを更新するサーバー( "git push")にプッシュする必要があります(例:githubサーバー上)。 )
Romain

Gitの「メンタルアド」機能が大好きです。
Junchen Liu、2015

1
頻繁にコミットするだけでなく、頻繁にプッシュすることもお勧めします。これにより、ハードドライブがクラッシュしたときに作業が保護されます。
CCC


22
  • git add コミットする準備ができているオブジェクトのステージング領域であるGitインデックスにファイルを追加します。
  • git commitインデックス内のファイルをリポジトリにコミットします。これは、git commit -a変更されたすべての追跡ファイルを最初にインデックスに追加するためのショートカットです。
  • git push 保留中のすべての変更を、ブランチがマップされているリモートリポジトリに送信します(GitHubなど)。

Gitを理解するには、ドキュメントをちらっと見るよりも多くの労力を費やす必要がありますが、それだけの価値があります。Gitコマンドを直接Subversionにマッピングしようとしないでください。それらのほとんどは直接の対応物を持っていないためです。


ローカルとリモートのgithubの違いを誰かが説明する必要があります。ローカルとリモートで持っているもの。これはあなたが見つける必要がある鍵です
Mehdi Amrollahi

11

「add」が実際に何をするかについて混乱しました。私はGit Proの本から非常に啓発的なパラグラフを読んだだけです。

「Gitは、git addコマンドを実行したときとまったく同じようにファイルをステージングすることがわかりました。ここでコミットする場合、最後にgit addコマンドを実行したときのバージョンのbenchmarks.rbは、git commitを実行したときに作業ディレクトリにあるファイルのバージョンではなく、コミットに入る方法です。git addの実行後にファイルを変更した場合は、git addを再度実行して、ファイルの最新バージョンをステージングする必要があります。」

抜粋:Chacon、Scott。「プロGit。」スプリンガー、2009-08-19T00:00:00 + 00:00。iBooks。この素材は著作権により保護されている場合があります。


7

addはgitにファイルの追跡を開始するよう指示します。

commitは、ローカルリポジトリの現在の変更をコミットします

pushはローカルレポを上流にプッシュします。



5

多くのGITの秘密についての非常に素晴らしいPDF

Addはsvnのaddと同じです(ファイルを解決済みとしてマークするために使用される場合があります)。

コミットもsvnと同じですが、ローカルリポジトリに変更をコミットします。


2
次に、svn addとcommitを調べます。私の大きな恐怖:彼らのドキュメントはgit add and commitを紹介してくれます。そして、lord_tはそのドキュメントの作者です。
エリック2017

質問者はSVNの知識があるので、彼はsvnのコマンドを知っていると思いました。
lord_t

0

add -in gitは、コミットするファイルをgitに指示するために使用され、ステージング領域にファイルを配置します

commit-in gitはファイルをローカルマシンに保存するために使用されるため、変更を加えたりファイルを削除したりしても、コミットされたファイルを回復できます。

push-ローカルマシンでファイルをコミットした場合、ローカルマシンが失われたり、破損したりした場合でも、ファイルが安全に保たれたり、ファイルを共有したりするために、リモートでファイルを保持したい場合は、ファイルが失われる傾向があります。 Githubのようなリポジトリ。リモートリポジトリに保存するには、pushを使用します

例index.htmlという名前のファイルのステージングgit add index.html

ステージングされたファイルをコミットするgit commit -m 'name of your commit'

Github git push origin masterにファイルをプッシュする

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.