来自svn,刚刚开始熟悉git.
当在git中删除分支时,它是否从历史记录中删除了?
在svn中,您可以通过还原删除操作(反向合并)轻松恢复分支.与svn中的所有删除一样,分支永远不会被删除,它只是从当前树中删除.
如果实际上从git中的历史记录中删除了分支,那么从该分支合并的更改会发生什么?他们保留了吗?
我有一个GitHub仓库,有两个分支 - 主和发布.
发布分支包含二进制分发文件,这些文件导致了非常大的repo大小(> 250MB),所以我决定清理一下.
首先,我删除了远程发布分支 git push origin :release
然后我删除了本地发布分支.首先我试过git branch -d release,但是git说"错误:分支'释放'不是你当前HEAD的祖先." 这是真的,所以我git branch -D release强迫它被删除.
但是我在本地和GitHub上的存储库大小仍然很大.所以然后我浏览了通常的git命令列表,比如git gc --prune=today --aggressive没有运气.
按照Charles Bailey在SO 1029969的指示,我得到了最大blob的SHA1列表.然后我使用来自SO 460331的脚本 来找到blob ......并且五个最大的不存在,虽然找到了较小的blob,所以我知道脚本正在工作.
我认为这些博客是发布分支中的二进制文件,它们在删除该分支后不知何故.什么是摆脱它们的正确方法?
所以,让我在这个问题前面说,我知道以前有关Stackoverflow主题的问题.事实上,我已经尝试了所有可以找到的解决方案但是我的仓库中有一个二进制文件,只是拒绝被删除并继续大大膨胀我的仓库大小.
方法我试过,
这两个都是由Darhuuk 完全从git repo中删除文件的答案推荐的
但是,在尝试这两种解决方案之后,在git中查找大文件的脚本仍然会找到违规的二进制文件.但是,此答案中的脚本不再找到二进制文件的提交.这个答案都提出了这两个脚本.
在尝试移除后,回购仍然是44mb,这对于相对较小的源来说太大了.大文件脚本正在做哪些工作正常工作.我已经尝试过推到github(我做了一个叉子以防万一),然后做一个新的克隆,看看回购大小是否减少,但它仍然是相同的大小.
有人可以解释我做错了什么或建议替代方法吗?
我应该注意到,我不仅仅想从我的本地仓库修剪文件,我还希望能够在Github上修复远程仓库.
我有一个小的回购,有几个提交:
* a0fc4f8 (HEAD -> testbranch) added file.txt
* e6e6a8b (master) hello world now
* f308f53 Made it echo
* f705657 Added hello
* 08a2de3 (tag: initial) initial
Run Code Online (Sandbox Code Playgroud)
也:
$ git status
On branch testbranch
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)
我无法理解以下行为.在这种状态下我跑:
$ git reset initial
我现在看到:
* e6e6a8b (master) hello world now
* f308f53 Made it echo
* f705657 Added hello
* 08a2de3 (HEAD -> testbranch, tag: initial) initial
Run Code Online (Sandbox Code Playgroud)
我期待的是:提交a0fc4f8将被删除,因为它无法访问.
发生了什么:
1)做git show a0fc4f8仍然显示提交
2)做git status …