2

私はしばらくの間 S​​VN を使用しており、現在はプロジェクトで Git を使用しています。git pull を実行した後で競合を解決した後、何をすべきか正確にはわかりません。ちなみに亀のGITを使っています。

したがって、ほとんどの場合、コミットを行ってからプルすると、自動的にマージされ、プッシュに進むことができます。ただし、競合がある場合は、競合を解決するように求められます。私は tortoiseGit の組み込みツールを使用してそれを行います。次に、コミットするように求められ、プロジェクト内の変更されたすべてのファイルの大きなリストが表示されます。

現在、これらの多くは決してコミットされるべきではないローカルの変更です..しかし、私はこの git ブログを読みました: http://randyfay.com/node/89、より具体的には:

Tortoise Git の 1 人のユーザーは、pull を実行し、マージの競合が発生し、マージの競合を解決してから、結果をコミットするときにコミットするファイルのリストを注意深く調べます。そこにはたくさんのファイルがあり、彼はマージの競合がいくつかのファイルだけに関係していることを知っていました。彼のコミットでは、彼が関与していない他のすべてのファイルの変更のチェックを外し、結果をコミットしてコミットをプッシュしました。

git リポジトリの状態を台無しにするために、どのファイルを選択してコミットする必要があるかを知るにはどうすればよいですか?

編集:これはうまくまとめられています。私に起こったことです。修正しましたが、将来的に防ぐ方法を理解する必要があります。

何人かがコミットしている...そして私が彼らの仕事を私のものに引っ張ると、デフォルトで自動マージが行われます。そのマージ コミットを押し戻して、台無しにしないようにする必要があります。

私が説明している状況は、自動マージによるプルが発生したときに発生しました。マージのほとんどは (通常はそうです) 成功しました。しかし、1つのことが矛盾しました。競合は解決されました。しかし、この場合、開発者は他のすべてのものをコミットしませんでした (それらは正常にマージされ、インデックスに自動的に追加されました)。彼は自分が解決した (理解した) ことだけをコミットしました。彼は、首尾よくマージされてインデックスに追加された他のすべてのマージされたものに責任があることを知りませんでした。それが今回の災害の話です。

4

2 に答える 2

1

EDIT2:追いついたと思います。push最初にローカルで回帰テストを行わずに変更を行っているか、回帰テストを行って最初に競合があったファイルのみをステージングしているようです。それは悪いことです。 git commit -a?

また、十分な数のブランチがなく、現在のワークフローでは、全員が非常に異なる、正規化されていない作業を同じリポジトリにコミットしているようです。不適切なマージで時間を失っている場合は、開発者が必要になるまで対話しないようにプロジェクトを構成します。あなたの質問にリンクされている記事から:

2 番目の選択肢は、Github によって推奨または想定されており、Linux Core プロジェクト (Git の発祥地) によって広く使用されています。そのシナリオでは、複数のメンテナーが権限のあるリポジトリの重要なブランチにプッシュすることを許可しません。

だから多分私は何かが足りない。

ワークフローの分岐に関するこの記事は参考になるかもしれません。

編集:ああ、編集では、リンクされた記事fetch最初のコメント投稿者が.

「git pull」と「git fetch」の違いは何ですか?

十分な情報に基づいていないマージにより、意図せずに適切なコードが誤ってマージされる場合があると言っているのであれば、その通りです。マージは時に芸術であり、多くの場合、マージの変更をペアにするために他の開発者に直接バグを報告する必要があります。(最初にgit Blameを調べるのが好きです。)

于 2012-08-07T12:41:53.003 に答える
0

最初に、編集したファイルのみをコミットする必要があると思います。おそらく、それらが何であるかを知っている必要があります。

TortoiseGitにはおそらく履歴機能があるかどうかはわかりませんが、最後のコミットでどのファイルが変更されたかを知ることができます。

将来的には、リポジトリのローカル コピーのベースに .gitignore ファイルを作成し、絶対にコミットしないことがわかっているすべてのファイル (.project、.settings など、. gitignore)。実際、Git はファイルシステムをスキャンして変更されたファイルを認識しますが、役に立たない場合もあります。

詳細情報が必要な場合: http://www.kernel.org/pub/software/scm/git/docs/gitignore.html

于 2012-08-07T12:40:25.127 に答える