2016-09-09 24 views
0

私はgitHubのプロジェクトを友人と一緒に作業しています。私はローカルのリポジトリを引き出すことができるかどうかを知りたいのですが、ここでコミット履歴なしでリモートリポジトリから引き出しますか?

物語の簡単な例です:

私の友人と私は、私たちの地元のレポ上のリモートリポジトリからソースコードの同じコピーを持っていました。

例のソースコード:

<p> This is the title </p> 
<p> I love to code </p> 

今、私の友人は、元にコードの別の行を追加することにしました:

<p> Adding important text </p> 

彼は、その後にコミットし、リモートリポジトリにプッシュ。その後、私は遠隔レポから引っ張った。今私はまた、私の友人が追加したものを持っています。

はその後、私の友人はコード行削除することにしました:

<p> Adding important text </p> 

を今、私は再び(更新)を引っ張っする必要がありますが、私の地元は、コードの追加ラインは、私が必要だということがあるので事は、ありますコミットする(マージする)。それから私がプッシュすると、そのコミットがそこに存在することになります。これは、同じ変更で2つのコミットがあることを意味します(もちろん、私の友人のコミットと私のコミット - 別のメッセージで)

私の質問は、この問題に対処する良い方法はありますか?不要なコミットを避ける方法はありますか?私たちがリモートにプッシュする前に、変更について本当に確かめるまで待つべきことは分かっていますが、状況は起こります。

答えて

1

コミット履歴をクリーンアップする場合は、git reset --hardを使用できます。例えば

は、ここにあなたのコミットの歴史です:

commit N+2: "Added important text again" 
commit N+1: "Removed important text" 
commit N: "Added important text" 
... 

あなたはそれがこのように見えるようにしたいと思います:

commit N: "Added important text" 
... 

そして、次の操作を行います(2からコミットの数であります最後の1):

git reset --hard HEAD~2 
git push --force 

は注意してください:この組み合わせを使用することにつながる可能性コードが失われてになり、復元することはできません。ところで、それは全く同じ変更をすることは大丈夫です。少なくともあなたは何かを失う危険はありません。

+0

基本的には、元のコミットに戻すだけです。これは、あなたが言及したように、最新のコミット内で行われたコードを失うことを意味するので、私はそこに残すべきだと思います。ありがとうございました! –

関連する問題