8

私の問題: cygwin git は、https:// URL を使用するときに資格情報を正しく要求しないように見えるため、URL でユーザー名とパスワードを使用しました。残念ながら、「get pull」を実行すると、パスワードを含む完全な URL を含むメッセージが自動コミットされました。変更をプッシュするまで、これに気づきませんでした。

古いコミット メッセージを編集して URL のパスワードを削除するにはどうすればよいですか?

私の共有 git リポジトリは自分のサーバーにあります。必要に応じて、レポで手術を行うことができます。

構成を変更する方法 (つまり、Cygwin を使用しない、https を使用しない) についての説明は不要です。既に行われていることを処理しようとしています。

はい、パスワードを燃やすことはできますが、それでも修正したいと思います。

4

3 に答える 3

4

git リポジトリとその履歴からファイルを完全に削除するには、次のコマンドを使用します。

# Check out the remote repo
git clone git://host/path/repo.git
cd repo

# Clobber the file in your checkout
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch file-to-purge.txt' --prune empty --tag-name-filter cat -- --all

# Make sure you don't accidentally commit the file again
echo file-to-purge.txt >> .gitignore
git add .gitignore
git commit -m "Prevent accidentally committing this again" .gitignore

# Push the edited repo. This will break other people's clones, if any.
git push origin master --force

詳細については、GitHub の機密データの削除に関するガイドが役立ちます。

于 2011-12-06T02:09:49.853 に答える
1

git-hub で機密データを削除するためのリンクは役に立ちます。しかし、非常に簡単に使用できるツールを見つけました: Eric Raymond reposurgeon .

このツールを使用すると、リポジトリを簡単にインポートし、問題のあるコミットを一覧表示し、それらを編集し (個別に編集しました)、リポジトリの git fast-import ストリームを書き出すことができました。そのストリームを新しいレポにインポートし、適切な場所に rsync しました。

欠点は、私の古いレポが完全に死んでいることです-私は歴史を変えました. ドキュメントによると、それは「git filter-branch」を使用する場合にも当てはまります。

于 2011-12-10T16:42:37.007 に答える
0

サーバーを編集できる場合は、ブランチヘッドを前のブランチヘッド(HEAD ^)にリセットできます。

  • まず、「元に戻したい」HEAD^ハッシュを取得します。
  • (サーバー内のgit bareリポジトリのディレクトリ)/ refs / headsに移動し、ユーザーgit(または任意のgitサーブ)に変更し、「echo(ハッシュ)>(ブランチ名)」を実行してリセットします。

それで全部です。ところで、上記を実行する前にプルされたリポジトリを変更することはできません

于 2011-12-06T02:34:54.240 に答える