2016-08-08 12 views
1

私はgitにかなり新しく、水銀から来ました。私は間違ったことをしてそれを押しましたが、チームメートの中には、これらの間違った変化をすでに引っ張っている可能性があります。だからreset --hard; push -fはオプションではありません。変更をコミットしたいとgitに指示することは可能ですか?それで、2コミット前になったのですか?私は、彼らがcommit 2であったように、彼らが同じになるようcommit 5は、ファイルを変更するように変更を生産するためにはgitたいリセットなしでコミットに戻すことは可能ですか?

commit 4 <<--- Remote/local master's head 
^
    | 
    | 
commit 3 
^
    | 
    | 
commit 2 <<-- I want git to craft changes so that commit 5 
^   is the same as commit 2 
    | 
    | 
    | 
commit 1 

master:私はこのような何かを意味します。

できますか?

答えて

3

あなたはGitの元に戻すを使用してコミットrevertことができます。これは、あなたが他のコミットで行ってきた変更をunmakeますよう、コミット「逆」が作成されます

git revert commit3 commit4 

を。

-fを使わずに履歴をプッシュしても早送りになります。

+0

しかし、すべてのコミットを指定することを避けることはできますか?私は、 'commit x'から' commit y'にすべてのコミットを戻したいとgitに指示する方法があるかもしれません。 – user3663882

+0

いいえ、私が知る限り方法はありません。 'commit3 ... commit4'を使うのは危険です。gitはデフォルトでそれを防ぎます。 – blue112

+0

だから、何か間違ったことがあった場合は、コミットによってコミットを手作業で元に戻す必要があります。ありがとうございました。 – user3663882

1

チームメイトの強制プッシュに問題はありません。リポジトリを元の正常なコミットにリセットしてから(git reset --hard sha1-of-old-good-commit)、変更をもう一度やり直す必要があります。さらに、自分の "私的な"作業ブランチにプッシュした場合、そのブランチはまったく気にする必要はありません。問題はmasterまたはあなたの仕事をすべてマージする別のブランチだけです。

したがって、 gitの素晴らしい機能です。それを否定する必要はありません) - 常にprivateブランチにコミットしてください:ブランチのrebase/squash/editを安全に実行してから、マスター "ブランチ。

関連する問題