2016-10-03 11 views
0

いくつかのファイルを処理しているときに、それぞれにバックアップファイルを作成しましたが、プッシュとリベースの前にそれらを消去するのを忘れました。私は何度も何度もコミットしていますが、まだプッシュしていません。ここでGitコミットからファイルを削除する方法

は私のステップだった:

git add -A 
git commit -m <message> 

git checkout master 
git pull upstream master 
git push 
git checkout "branch" 
git rebase master 

私の現在のブランチはもうバックアップファイルを持っていません。更新されたブランチでマスターをプッシュしてリベースするだけで十分でしょうか?

答えて

2

あなたができることは、ソフトリセットを行い、ファイルを削除し、コミットしてプッシュすることです。

  1. は、ファイルを追加する前
  2. ソフトリセットgit reset --soft <hash>削除
  3. (コミットのハッシュを挿入)を行い、不要なファイル

  4. をコミットすぐのハッシュを見つけるために、git logを実行します。

    すべてのファイルをステージングしてコミットします。

これは、ブランチにコミットしたすべてのコミットを1回コミットすることになります。これがあなたに受け入れられるならば、それはあなたが必要とするものであろう。すべてのコミット履歴を保持したい場合は、ファイルを追加する前に新しいブランチを作成してから、チェリーがファイルを追加したコミットを選択します。ただし、コミットを行う前に不要なファイルを削除してからコミットします更新したいファイルだけです。これを実行した後、チェリーはそのブランチに他のコミットをすべてピックしてから押しても構いません。

+0

シンプルなソリューションをありがとう。私は何かについて不思議だった。そのコミット以来、私は他のファイルにいくつかの変更を加えました。ソフトリセットにより、私が修正したファイルは最新の状態に保たれますか? – Nik

+1

はい。ソフトリセットは、作成したファイルの変更をすべて保持しますが、すべてのコミットを削除するだけです。つまり、ソフトリセットをしてからコミットするだけの場合は、コミットを押しつぶすことと同じになります。 –

1

あなたは、あなたが直接ファイルにを削除してから行うことができますコミットをプッシュしている場合:

git add . 
git commit --amend --no-edit 
git push origin <your branch name> -f 

これは新しいコミットを生成せずに変更をプッシュします。

関連する問題