我意外地将一个不需要的文件(filename.orig在解析合并时)提交到我的存储库几个提交之前,直到现在我才注意到它.我想从存储库历史记录中完全删除该文件.
是否可以重写更改历史记录,以便filename.orig从未首先添加到存储库中?
我们的远程主分支不知怎的搞砸了.当前开发代码与最新提交一起在主分支上.显然,开发代码还没有为主分支做好准备.
所以在我的本地存储库中,我重置了最新的标记,git reset --hard (Tag).现在主分支在我的本地存储库上是正确的.现在,当我尝试将更改推送到远程存储库时git push origin master,我收到一个错误:
To (REMOTE GIT REPOSITORY LOCATION)
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to '(REMOTE GIT REPOSITORY LOCATION)'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
Run Code Online (Sandbox Code Playgroud)
所以环顾四周之后,我发现了这个--force选项.所以我强行推进了远程存储库,git push --force origin master我仍然遇到错误:
Total 0 (delta 0), reused …Run Code Online (Sandbox Code Playgroud) 我犯了一个“小”错误,并向我的本地存储库添加了一个“小”(> 100MB)文件。
两次提交后,我尝试推送到 github 中的远程存储库,该存储库的限制为 100MB。
我可以使用 删除当前提交中的文件git rm --cached,但它仍在之前的提交中。
如何从所有提交中删除该文件?我已经尝试过这个关于 git filter-branch 的答案,但不适合我的。
我已提交一些文件并将其推送到远程功能分支并创建了合并请求。我用了
git commit -a -m "blah blah"
git push
Run Code Online (Sandbox Code Playgroud)
所以它推送了所有修改的文件。其中一个文件(主文件中的现有文件)不应被推送(例如可执行文件)。如何从合并请求中删除此文件,以便当 MR 合并到 master 时,不需要的文件不会被合并(就好像它从未存在于 MR 中一样)。我发现此页面提到了以下命令
git rm {filename} --cached
git commit -m "[...]"
git push
Run Code Online (Sandbox Code Playgroud)
我尝试了这些命令,但没有看到 Gitlab 的合并请求中删除的文件。这是正确的做法吗?
更新1:
deleted通过上述命令,我可以看到上面提交中提到的文件。但是当我将更新的 MR 合并到 master 中时,该文件也会从 master 中删除。
更新2:
删除了导致混乱的句子并更新了标题
所以这个问题不是这个问题:尽管它很相似,但从 Git 提交中删除文件。
我处于无法做到的情况:
git reset --soft HEAD~1
Run Code Online (Sandbox Code Playgroud)
因为我是第一次提交。
我想知道如何从我的提交中删除文件,因为我无法回溯。
我创建了我的第一个git存储库并尝试将Spring Boot项目.
在最初的git要求配置".gitignore"文件,但我不确定哪些文件必须(应该),所以我忽略了?
在我的第一次提交推送中,我看到了几个文件APART FROM pom.xml和我的一些.java文件,比如
.classpath
.gitignore
.project
.settings/org.eclipse.core.resources.prefs
.settings/org.eclipse.jdt.core.prefs
.settings/org.eclipse.m2e.core.prefs
Run Code Online (Sandbox Code Playgroud)
我不确定他们为什么在这里?
他们应该在那里吗?
如何以及在何处创建.gitignore文件?
我在Pro Git书中读到过有关交互式变基以更改多个提交的内容。所以我正在做git rebase HEAD~3,改变了我想修改的一项edit。然后我就可以通过更改消息了git commit --amend。并添加了一个文件,git add file3之后git commit --amend开始输出“3 个文件已更改”而不是之前的“2 个文件”。但如何删除文件呢?为什么既不工作git restore --staged file1也不git reset HEAD file1工作?(输出 git commit --amend仍然是“3 个文件已更改”,并且输出git log --patch仍然显示file1带有最近修改的提交消息的提交)。
我使用网络搜索并阅读了什么是 `git Restore` 命令以及 `git Restore` 和 `git Reset` 之间的区别是什么?(如上所示,尝试了restore和reset),从 Git 提交中删除文件(谈论上次提交),删除旧提交中提交的文件(据我所知,git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch <path_to_file>" HEAD从分支中的所有提交中删除文件)。
还有没有被赞成的答案删除对旧的、已推送的 git …
当我执行以下操作时:
git add *
git commit -m "msg"
git push origin develop
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Counting objects: 25, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (24/24), done.
Writing objects: 100% (25/25), 46.43 MiB | 2.49 MiB/s, done.
Total 25 (delta 13), reused 0 (delta 0)
remote: Resolving deltas: 100% (13/13), completed with 11 local objects.
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: Trace: ffe0c9f32d9cde4cedfc1f4713eb82b9
remote: error: …Run Code Online (Sandbox Code Playgroud)