2017-07-20 24 views
1

私はmasterdevという名前のブランチを持っています。リモートとローカルのgitリポジトリ

私はそのブランチにいくらかのコミットを行ったので、サーバ上にあるmasterdevから10分前にコミットしています。 しかし、実際にはそれらのコミットはもう良くありませんので、私はそれらをプッシュしたくありません。

私はそれらをコミットしたときのやり方とは逆にすることができます。しかし、それは私が思うところではっきりしないように見えます。

私がやりたかったのは、masterdevが遅れていた場合、git pull origin masterdevと同じ動作をすることでした。

ローカルのmasterdevを削除して、サーバーと同じようにしたいとします。

+1

gitリセットを行うだけです。 – ShellZero

+0

[リモートリポジトリのHEADと同じようにローカルリポジトリブランチをリセットする]の可能な複製(https://stackoverflow.com/questions/1628088/reset-local-repository-branch-to-be-just-like-remote-repository-ヘッド) – ob1

答えて

2

私はあなたが望んでいると思う - あなたのコミットを取り除いて、あなたのローカルバージョンのmasterdevをリセットします。それからあなたはあなたが最新であることを確認するために引っ張ります。

git reset --hard origin/masterdev 

git pull origin masterdev 
+1

この回答も正しいですし、O/Pはそれに合った快適さを感じるはずです。 – torek

+0

私はちょうどテストをしました、そして、それはまさに私が探していたものでした。ご協力ありがとうございました。しかし、その後git pullは役に立たないようです。もちろん、それ以上引っ張るものがなければ。 – Minirock

+0

「コースを引っ張るだけのものがあれば」もちろんそうです。その行はあなたの問題を解決するために厳密には必要ではありませんが、マージの競合を防ぐのに役立つので、おそらく良い習慣です。 –

2

索引と作業ツリーに保存する価値が何もない場合は、簡単なgit reset --hardで十分:

$ git status 
On branch masterdev 
Your branch is ahead of 'origin/masterdev' by 10 commits. 
    (use "git push" to publish your local commits) 
nothing to commit, working tree clean 
$ git fetch origin 
... [snip] 
$ git reset --hard origin/masterdev 

あなたが救うためにいくつかの仕事を持っている場合、あなたはおそらくそれをコミットして何かをする必要があります単なる複雑なものより複雑です。git reset --hard数は、先にコミットおよび/または後ろの結果として変化するかもしれません

(中間git fetchステップは、git status前または後に実行することができます。私は、一般的にgit pullを避けることをお勧めします、そしてあなたは、このためにそれを必要としません。場合)。

0

git reset --hard origin/masterdevトリックを行う必要があります。次に簡単に行うことができますgit pull origin masterdev

+1

'HEAD ^'は、破棄するコミットが1つしかないことを前提としています。 ( 'HEAD'だけでコミットは捨てられません。もし正しい数のコミットであれば' HEAD〜10 'がほしいでしょうが、 'origin/masterdev'を更新するために' git fetch'を実行する方が簡単ですそれは直接です。) – torek

+0

右。私の悪い。ありがとう。それを更新しました。 :) – ShellZero

0

簡単、ちょうどgit checkout --track origin/master。ローカルでブランチを作成し、リモートバージョンと正確に一致するようにします。

関連する問題