2017-05-22 18 views
1

私はクラスメイトと一緒に学校プロジェクトを作っています。そのうちの1人がプログラムのメインを破り、彼はそれをgithubにプッシュします。私は主な変更なしでプロジェクトを持っており、それは完全に動作します。プルをせずにファイルをプッシュでき、悪いファイルを私のものに置き換えることができる方法はありますか?Git push without pull

答えて

4

他の開発者が関連する変更をプッシュした場合は、それらを消去するだけでなく、両方の変更をマージする必要があります。

デベロッパーが他の意味のある変更を適用した場合、最適な解決方法は、競合を解決して壊れたコードを修正することです。

分岐したコミットから、それらを新しいブランチに移動してから、マージして競合を解決します。

# Create a new branch with your commits 
git checkout -b featureBranch 

# Get master from origin 
git checkout master 
git pull origin master 

# Add in your changes 
git merge featureBranch 

# Resolve Conflicts 

# Push to origin 
git push origin master 

あなたは本当にちょうど(私はあなたがを行うことをお勧めしないを)彼のコミットを消去したい場合、あなたは自分のプッシュを強制することができます - これは何を使用してサーバー上のすべてのものを上書きしますあなたのマシンに持っています。

プロジェクトに取り組んでいる他のすべての開発者は、あなたが現在の履歴を変更しているので、そこで追加の行動を取る必要があります。これは勧告されていません。

git push origin master --force 

revert方法もあります。これは、選択されたコミットの変更を完全に逆転させる新しいコミットを作成します。これを使うには、最初にきれいな作業ツリーが必要です。

# Move your commits to a new branch 
git checkout -b featureBranch 

# Get latest changes from master 
git checkout master 
git pull origin master 

# Create new commit that reverses the other devs changes 
git revert hashToRevert 

# Pull in your additional commits 
git merge featureBranch 

# Push to master 
git push origin master 
2

あなたはおそらくそのコミット戻すgit revertコマンドを使用することができます。

のgit revertコマンドがコミットスナップショットを取り消します:これは、それはその前のコミット、ドキュメントhereによって行われたすべての変更を元に戻し、新しいコミットを行います。しかし、代わりの プロジェクトの履歴からコミット取り除く、それがどのように 割り出しコミットし、結果のコンテンツを を新しいコミットを追加することにより、導入された変更を元に戻します。

これが完了すると、元のコミットを元に戻すことができます。