2

過去のコミットで、リポジトリに入れるべきではないファイル ( .ideaWebstorm ファイルなど) を含めていたことがわかりました。このコミットは、プッシュされていないコミットが前後にある「中間」にあります。また、このコミット内には、コミットする必要があり、後の (プッシュされていない) コミットでさらに変更されたファイルがあります。

私はこれらの答えを見てきました:すべてのGitリポジトリコミット履歴からファイルを完全に削除し、Gitコミットからファイルを削除しますが、私の特定の問題には答えていないようです。解決策は何ですか?

4

2 に答える 2

3

あなたの状況

プッシュされていない3つのコミットであなたが説明した状況を作成しています:

$ git clone <url>
$ touch file1
$ git add file1
$ git commit -m "Correct 1st commit"
$ touch file2
$ touch webstormfile
$ git add .
$ git commit -m "Wrong 2nd commit with by mistake included WebStorm file"
$ touch file3
$ git add file3
$ git commit -m "Correct 3rd commit"
$ git log --oneline
$
$ ad73bfa Correct 3rd commit
$ eddae38 Wrong 2nd commit with by mistake included WebStorm file
$ ad219bf Correct 1st commit

コミットされた WebStorm ファイルの削除

注意: 次の手順では履歴が変更されます。つまり、コミットが既にプッシュされている場合、履歴を変更するとすべてのチーム メンバーのリポジトリが破損します。まだプッシュしていない場合は、チーム メンバーに迷惑をかけずに手順に従うことができます。

eddae38間違ったコミットのハッシュを含むインタラクティブなリベースを開始します。

$ git rebase -i eddae38^

テキスト エディタがポップアップし、次の内容が表示されます。

pick eddae38 Wrong 2nd commit with by mistake included WebStorm file
pick ad73bfa Correct 3rd commit

# Rebase ad219bf..ad73bfa onto ad219bf
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

最初の行で、pickeditに変更し、ファイルを保存してテキスト エディターを閉じます。

注意!保持したい場合は、WebStorm ファイルのコピーを作成します。次に、コミットから WebStorm ファイルを削除します。

$ git rm .\webstormfile

クリーンアップされたインデックスをコミットします。

$ git commit --amend --no-edit

リベースを終了します。

$ git rebase --continue
于 2015-02-22T17:38:46.523 に答える
0

別のコミットでファイルを削除git rebase -iし、最後にプッシュされたコミットで実行し、ファイルを削除するコミットで間違ったコミットを押しつぶします

ファイルは必要になるので、必ずバックアップしてください。コミットの修正後、ファイルを復元して追加し、.gitignoreそれ以上コミットされないようにします。

于 2013-10-28T07:38:12.717 に答える