Git:なぜ他の人の変更をコミットする必要があるのですか?

cincplug

GitよりもSVNに慣れている人の多くはこれに混乱していると思いますので、誰かが明確にできるかもしれません。

いくつかの変更をコミットしてGitリポジトリにプッシュします。私はしばらく何もしません。その間、他の人々は彼らの変更をコミットしてプッシュします。それから私は彼らの変更を引っ張ろうとします、そして私git statusは私が私のものではないいくつかの変更をコミットしなければならないことを示しているのでそれをすることができません。どういう意味ですか?これらの変更をコミットするとどうなりますか?この種の「コミット」にはどのようなコミットメッセージを使用する必要がありますか?

明らかに、「コミット」のGitの概念は、update他の人の変更を取得し、自分の変更のみをコミットするという、私が慣れているSVNの概念とは大きく異なります。

火曜日

どこが間違っているのかは明確ではありませんが(十分な情報を提供していない)、ここで2つのことを指摘する必要があります。

  1. あなたのgitリポジトリと作業ディレクトリはまさにそれですあなたのもの変更は、あなたが要求した変更ですあなたは単にあなたがそれらを求めたことに気付いていないかもしれません(特にあなたがgitのよりあいまいな機能のいくつかを使い始めた場合)。

    もちろん、これはSVNにも当てはまりますが、それは私に...

  2. gitとsvnどちらも「リポジトリ全体」のビューを提供できますが、svnは、「一度に1つのファイル」モードの操作を推奨します(少なくとも積極的に推奨しません)。これはgitで(ある程度)可能ですが、「すべてのリポジトリを一度に」というgitの一般的な推進力に逆らって作業するため、お勧めできません。

古いコミット全体をチェックアウトするようにgitに依頼することで問題が発生したように聞こえますが、古いコミット全体をチェックアウトするわけではありません

$ git checkout master@{1.week.ago}

これにより、1週間前の時点でリポジトリ全体(作業ディレクトリに)が取得され、その時点で必要に応じて個々のファイルを検査できます。1しかし、たとえば、ある特定のファイルを見たいだけの場合foo.txtは、代わりにこれを実行したくなるかもしれません。

$ git checkout master@{1.week.ago} foo.txt

「これは絶対にしない」とは言いませんが、これを行う場合は十分に注意してください。「次のコミットでfoo.txtを変更して、1週間前と同じようにするつもりです。。」

具体的には、gitには、各「次のコミット」を構築する「インデックス」(別名「ステージング領域」)があります。いくつかのファイルを変更し、それらをインデックス/ステージに追加し、ステージングに満足したらアレンジメント、あなたはgit commitそのアレンジメントを新しい完全なコミットに変えるために走ります

git checkoutの特定のファイル形式を使用する場合、これはgitにファイルの古いバージョンを抽出し、それらをインデックスと作業ツリーに書き込むように指示しますつまり、古いバージョンのファイルを取得してワークツリーに配置、その結果をgitに要求しているということです。git checkout [rev] path ... git add

この状況から抜け出すには、git reset --hard(このコマンドを再設定するだけでなく、インデックスとワークツリーの両方の変更を消去するなど、非常に注意してください)、またはgit checkoutファイルの最新バージョンを使用します。 )古いバージョンをチェックして、元の状態に戻すことで混乱しました。


1より具体的には、この形式でgit checkoutは「分離されたHEAD」が残ります。コミットIDを見つけることによって特定のコミットをチェックアウトします。これにより、最初に既存の作業が上書きされないことが確認され、次に、選択したコミットに一致するようにインデックスと作業ツリーが設定され、HEADそのコミットIDを保持するように更新されます。後で、git checkout mastergitがその特定のコミットIDから変更を加えていないことを認識でき、次にgit status示すように「ブランチマスター」に安全に戻すことができますしたがって、この形式のcheckout-old / restore-currentは、作業が失われないことを確認する必要がないという点で「より安全」です。gitがあなたに代わってそれを行います。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

なぜGitをプッシュせずにコミットする必要があるのですか?

分類Dev

なぜgitは他の人が私のgitステータスでコミットしていることを示しているのですか?

分類Dev

コミットメッセージを変更した後、強制的にプッシュする必要があるのはなぜですか?

分類Dev

git rebase -i-なぜコミットハッシュを変更するのですか?

分類Dev

リモートGitリポジトリにプッシュした後、コミットされていない変更があるのはなぜですか?

分類Dev

git commitの変更が他の2つのコミット(影響を受けるファイルを変更しなかった場合)の後に消えたのはなぜですか?

分類Dev

gitで他の人が行ったコミットを確認する

分類Dev

すべてのコミットでgit作成者情報を変更すると、私のリポジトリの1つでは機能しましたが、他のリポジトリでは機能しませんでした。なぜですか?

分類Dev

git rebaseがコミットを破棄するのはなぜですか?

分類Dev

2 つの Git コミット間のすべてのファイルの相違 (追加、変更、名前変更) を取得する必要がある

分類Dev

nsswitch.confでホストの順序を変更する必要があるのはなぜですか?

分類Dev

同じタグに2つの異なるgitコミットがあるのはなぜですか?

分類Dev

tortoise-gitがファイルのパーミッションを変更するのはなぜですか?

分類Dev

PostfixのLinuxホスト名を変更する必要があるのはなぜですか?

分類Dev

CakePHPのセキュリティソルト値を変更する必要があるのはなぜですか?

分類Dev

Visual Studio Codeでgitpullを実行した後、コミットされていない変更があるのはなぜですか?

分類Dev

Git-コミットおよびプッシュされた変更からのファイルはコミット解除する必要があります

分類Dev

githubでコミットを表示するために「gitpush」を実行する必要があるのはなぜですか?

分類Dev

Codeceptionテストのgitで何をコミットまたは無視する必要がありますか?

分類Dev

gitのコミット日を変更することは可能ですか?

分類Dev

gitで特定の変更をコミットする方法

分類Dev

`git rebase`は、その変更がすでにアップストリームにあるコミットをどのようにスキップしますか?

分類Dev

1つのブランチでの変更がgitの他のブランチに影響を与える可能性があるのはなぜですか?

分類Dev

以前のコミットからの変更を含むgitcherry-pickの競合が発生するのはなぜですか

分類Dev

変換コンストラクターでこれを参照する必要があるのはなぜですか?

分類Dev

アトミック変数ではなくリダクションを使用する必要があるのはなぜですか?

分類Dev

変更を加えていないのに、NSUserDefaultsを同期する必要があるのはなぜですか?

分類Dev

Visual Studio 2017でコミットされていない変更でGITプルが許可されるのはなぜですか?

分類Dev

コミットに署名するためにgpg-agentを強制終了する必要があるのはなぜですか?

Related 関連記事

  1. 1

    なぜGitをプッシュせずにコミットする必要があるのですか?

  2. 2

    なぜgitは他の人が私のgitステータスでコミットしていることを示しているのですか?

  3. 3

    コミットメッセージを変更した後、強制的にプッシュする必要があるのはなぜですか?

  4. 4

    git rebase -i-なぜコミットハッシュを変更するのですか?

  5. 5

    リモートGitリポジトリにプッシュした後、コミットされていない変更があるのはなぜですか?

  6. 6

    git commitの変更が他の2つのコミット(影響を受けるファイルを変更しなかった場合)の後に消えたのはなぜですか?

  7. 7

    gitで他の人が行ったコミットを確認する

  8. 8

    すべてのコミットでgit作成者情報を変更すると、私のリポジトリの1つでは機能しましたが、他のリポジトリでは機能しませんでした。なぜですか?

  9. 9

    git rebaseがコミットを破棄するのはなぜですか?

  10. 10

    2 つの Git コミット間のすべてのファイルの相違 (追加、変更、名前変更) を取得する必要がある

  11. 11

    nsswitch.confでホストの順序を変更する必要があるのはなぜですか?

  12. 12

    同じタグに2つの異なるgitコミットがあるのはなぜですか?

  13. 13

    tortoise-gitがファイルのパーミッションを変更するのはなぜですか?

  14. 14

    PostfixのLinuxホスト名を変更する必要があるのはなぜですか?

  15. 15

    CakePHPのセキュリティソルト値を変更する必要があるのはなぜですか?

  16. 16

    Visual Studio Codeでgitpullを実行した後、コミットされていない変更があるのはなぜですか?

  17. 17

    Git-コミットおよびプッシュされた変更からのファイルはコミット解除する必要があります

  18. 18

    githubでコミットを表示するために「gitpush」を実行する必要があるのはなぜですか?

  19. 19

    Codeceptionテストのgitで何をコミットまたは無視する必要がありますか?

  20. 20

    gitのコミット日を変更することは可能ですか?

  21. 21

    gitで特定の変更をコミットする方法

  22. 22

    `git rebase`は、その変更がすでにアップストリームにあるコミットをどのようにスキップしますか?

  23. 23

    1つのブランチでの変更がgitの他のブランチに影響を与える可能性があるのはなぜですか?

  24. 24

    以前のコミットからの変更を含むgitcherry-pickの競合が発生するのはなぜですか

  25. 25

    変換コンストラクターでこれを参照する必要があるのはなぜですか?

  26. 26

    アトミック変数ではなくリダクションを使用する必要があるのはなぜですか?

  27. 27

    変更を加えていないのに、NSUserDefaultsを同期する必要があるのはなぜですか?

  28. 28

    Visual Studio 2017でコミットされていない変更でGITプルが許可されるのはなぜですか?

  29. 29

    コミットに署名するためにgpg-agentを強制終了する必要があるのはなぜですか?

ホットタグ

アーカイブ