Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Github repo上的所有以前提交中隐藏密码_Git_Github_Repository_Password Protection_Sensitive Data - Fatal编程技术网

在Github repo上的所有以前提交中隐藏密码

在Github repo上的所有以前提交中隐藏密码,git,github,repository,password-protection,sensitive-data,Git,Github,Repository,Password Protection,Sensitive Data,我已将我的项目上传到GitHub public repo上。但其中一个文件包含我的密码信息。我已经做出了几项承诺。如何在初次提交时隐藏密码 没有单独的密码文件。所以在这种情况下我不能使用.git忽略。密码硬编码在app.py文件中,该文件处理应用程序的主要逻辑。所以,我不能使用BFG回购清洁剂。是否可以通过覆盖以前的提交来删除该文件并添加新文件 我已经在文件中进行了更改,并推送了回购协议。但是,前面的提交仍然显示了我的密码信息。此外,我对创建新的回购协议和删除旧的回购协议不感兴趣,除非我别无选择

我已将我的项目上传到GitHub public repo上。但其中一个文件包含我的密码信息。我已经做出了几项承诺。如何在初次提交时隐藏密码

没有单独的密码文件。所以在这种情况下我不能使用.git忽略。密码硬编码在app.py文件中,该文件处理应用程序的主要逻辑。所以,我不能使用BFG回购清洁剂。是否可以通过覆盖以前的提交来删除该文件并添加新文件

我已经在文件中进行了更改,并推送了回购协议。但是,前面的提交仍然显示了我的密码信息。此外,我对创建新的回购协议和删除旧的回购协议不感兴趣,除非我别无选择

如果我能得到一些帮助,我会很高兴的


提前感谢。

GitHub有一篇文章正是针对这一点。过来看。总结本文:您可以使用git filter分支命令或BFG Repo Cleaner。BFG回购清洁剂使用起来更简单、更快,所以我使用它。要使用BFG Repo清洁剂,请执行以下步骤:

项目repo或macos上的jar文件使用brew安装bfg 使用-mirror标志克隆回购协议的新副本: git克隆镜像git://example.com/some-big-repo.git

如果使用SSH或

git克隆镜像https://example.com/some-big-repo.git

如果使用HTTPS

这是一个空存储库,因此您将无法查看您的文件,但它将是存储库的完整副本,包含所有提交

然后,可以使用以下命令从以前的提交中删除特定文件: java-jar bfg.jar-删除文件[文件名]-无blob保护my-repo.git

或者,如果安装到路径

bfg-删除文件[文件名]-无blob保护my-repo.git

或者从旧提交中删除密码

bfg-替换文本密码.txt

在返回到您的回购之前,通过进入git repo文件夹并运行以下命令,检查回购历史记录是否已更改: git reflog expire-expire=now-all&&git gc-prune=now-aggressive

然后

git gc

剔除不需要的数据,这些数据是您不想推回到回购协议中的

一旦你满意了,通过运行git push-注意,因为你在克隆你的repo时使用了-mirror标志,当你推回你的repo时,你也会推回引用更改。
要阅读有关BFG回购清洁剂的更多信息,请访问此网站。

GitHub有一篇文章正是针对这一点的。过来看。总结本文:您可以使用git filter分支命令或BFG Repo Cleaner。BFG回购清洁剂使用起来更简单、更快,所以我使用它。要使用BFG Repo清洁剂,请执行以下步骤:

项目repo或macos上的jar文件使用brew安装bfg 使用-mirror标志克隆回购协议的新副本: git克隆镜像git://example.com/some-big-repo.git

如果使用SSH或

git克隆镜像https://example.com/some-big-repo.git

如果使用HTTPS

这是一个空存储库,因此您将无法查看您的文件,但它将是存储库的完整副本,包含所有提交

然后,可以使用以下命令从以前的提交中删除特定文件: java-jar bfg.jar-删除文件[文件名]-无blob保护my-repo.git

或者,如果安装到路径

bfg-删除文件[文件名]-无blob保护my-repo.git

或者从旧提交中删除密码

bfg-替换文本密码.txt

在返回到您的回购之前,通过进入git repo文件夹并运行以下命令,检查回购历史记录是否已更改: git reflog expire-expire=now-all&&git gc-prune=now-aggressive

然后

git gc

剔除不需要的数据,这些数据是您不想推回到回购协议中的

一旦你满意了,通过运行git push-注意,因为你在克隆你的repo时使用了-mirror标志,当你推回你的repo时,你也会推回引用更改。
要了解更多有关BFG回购清洁剂的信息,请访问此网站。

首先复制一份fileie app.py

从git History中删除文件将PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA替换为PATH/TO/app.py如果从远程存储库克隆,还需要推送repo:

git filter-branch --force --index-filter \
  "git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" \
  --prune-empty --tag-name-filter cat -- --all
git push --force --verbose --dry-run
git push --force

现在从app.py文件中删除密码并将其移动到git repo,然后添加并提交

首先复制文件ie app.py

从git History中删除文件将PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA替换为PATH/TO/app.py如果从远程存储库克隆,还需要推送repo:

git filter-branch --force --index-filter \
  "git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" \
  --prune-empty --tag-name-filter cat -- --all
git push --force --verbose --dry-run
git push --force

现在从app.py文件中删除密码并将其移动到git repo,然后添加并提交

这里有一个替代的快速解决方法,可以在不删除文件的情况下更改敏感数据

# Sync with the remote master
git pull

# Force your clone to look like HEAD
git reset --hard

# AGAIN, A WARNING: This can really break stuff!

# Run your filter branch command, replacing all instances of "password" with "your_password"
# The example looks for Ruby files ("*.rb"), you can change this to match your needs
git filter-branch --tree-filter 'git ls-files -z "*.rb" |xargs -0 perl -p -i -e "s#(password)#your_password#g"' -- --all

# Overwrite your master with local changes
git push origin master --force

资料来源:

这里有一个替代方案 k在不删除文件的情况下更改敏感数据的变通方法

# Sync with the remote master
git pull

# Force your clone to look like HEAD
git reset --hard

# AGAIN, A WARNING: This can really break stuff!

# Run your filter branch command, replacing all instances of "password" with "your_password"
# The example looks for Ruby files ("*.rb"), you can change this to match your needs
git filter-branch --tree-filter 'git ls-files -z "*.rb" |xargs -0 perl -p -i -e "s#(password)#your_password#g"' -- --all

# Overwrite your master with local changes
git push origin master --force

来源:

可能重复-此答案将覆盖它。在您执行任何其他操作之前,请更改您的密码。你上传的密码永远被泄露。@克里斯:是的,我已经更改了密码。Thanks@PatrickArtner非常感谢您的回复。但问题是我在处理应用程序主要逻辑的文件中硬编码了密码。所以我不能删除那个文件。@AkshayC,所以取消硬编码。有很多方法可以从非源代码控制的文件中获取配置,例如使用。可能重复的-此答案会覆盖它。在执行任何其他操作之前,请更改密码。你上传的密码永远被泄露。@克里斯:是的,我已经更改了密码。Thanks@PatrickArtner非常感谢您的回复。但问题是我在处理应用程序主要逻辑的文件中硬编码了密码。所以我不能删除那个文件。@AkshayC,所以取消硬编码。有很多方法可以从非源代码控制的文件中获取配置,例如使用。这是一个很好的注释,没关系。答案不应该只是链接。查看即使链接关闭,答案也应有效。感谢您对反馈进行编辑和回复。您的答案更适合本网站,并且适合问答格式:谢谢你,帕特里克。我感谢你的努力。我必须仔细阅读这篇文章。但我需要那个有密码的文件。因为该文件处理我的应用程序的主要逻辑。所以我不能删除那个文件。嗨,Akshay C。我回答了这个问题,这里有一个答案的链接,回答了你的问题@PritamSangani非常感谢您提供有关BFG回购清洁剂的详细信息。但在这种情况下,它对我没有用处,因为密码保存在处理应用程序主逻辑的同一个文件中。所以我不能删除这个文件。有没有一种方法可以通过覆盖以前的提交来删除文件并上传新文件?这是一个很好的注释,没关系。答案不应该只是链接。查看即使链接关闭,答案也应有效。感谢您对反馈进行编辑和回复。您的答案更适合本网站,并且适合问答格式:谢谢你,帕特里克。我感谢你的努力。我必须仔细阅读这篇文章。但我需要那个有密码的文件。因为该文件处理我的应用程序的主要逻辑。所以我不能删除那个文件。嗨,Akshay C。我回答了这个问题,这里有一个答案的链接,回答了你的问题@PritamSangani非常感谢您提供有关BFG回购清洁剂的详细信息。但在这种情况下,它对我没有用处,因为密码保存在处理应用程序主逻辑的同一个文件中。所以我不能删除这个文件。是否有办法通过覆盖以前的提交来删除文件并上载新文件?