2016-09-14 4 views
1

誰かが私たちのリポジトリに次の行をプッシュGitのプッシュした後、特定のコミットから単一のラインの一部をキャンセル:

git = ['a', 'w', 'e', 's', 'o', 'm', 'e', BugSyntaxErrorBug] 

しかし、それは実際にする必要があります:

git = ['a', 'w', 'e', 's', 'o', 'm', 'e'] 

多くのプッシュがあったためよりも、私はこの具体的なプッシュからそれを書き直したいと思います。この背後にあるアイデアは、誰かがこのコードの古いバージョンを引っ張ってくると、コードが機能するということです。

ありがとうございました:)

+0

小さな変更を元に戻したい場合は、手動でコミットしてプッシュできますか?またはコミットする前にリポジトリ全体をリセットしたいですか? –

+1

確かに可能です。 Git Bookの[Rewriting History](https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History)セクションを読んだことがありますか?それはおそらく始める場所です。 – larsks

答えて

2

これは私がやる方法です。

タグこれで、何か問題が生じた場合に復元できます。

git tag MyOldCommit BADCOMMIT 
git tag MyOldMaster master 

あなたがする必要がある場合は

git branch -f master MyOldMaster 

と変わらないマスターは今、悪いが、問題のバイトを削除した後に新しい枝

git checkout -b MyFixedCommit BADCOMMIT 

にコミットチェックアウト古いcommmitを置き換える回復することができます新しいものと一緒に。

git commit --amend -m"my commit message" 

git rebase --onto MyFixedCommit BADCOMMIT master 

のgit-プレイを再ます(でコミットコミットMyFixedCommitに古い枝マスターブランチ

git checkout master 

リベースマスター(とのみマスター!!!)に戻ります)BADCOMMITからMyfixedCommitへのマスターのtipまでの変更。 Gitが見つけたすべての競合を解決する必要があります。

!!履歴を書き直しているので、マスターのコミットチェーンは、以前のマスターコミットチェーンを参照していた他のユーザーのタグとブランチと異なるでしょう!