天道酬勤,学无止境

删除后如何恢复本地分支?(How can I restore a local branch after deleting it?)

问题

我在本地存储库中有一个名为my_branch_1的分支,我my_branch_1其删除。 my_branch_1只是本地的; 我从未将其推送到远程服务器。 是否有可能以某种方式恢复这个分支?

回答1

是的,您可以使用 git reflog 看到它的 SHA1。

然后你可以重新创建它:

git checkout -b my_branch_1 SHA1

您还可以查看脚本(包含在 Git 发行版中): contrib/git-resurrect.sh


在 Git 2.30(2021 年第一季度)中,“ git resurrect ”脚本(在contrib/ )了解到对象名称可能长于 40-hex,具体取决于使用的哈希函数。

请参阅 Denton Liu (Denton-L) 提交的 e37eae0、提交 d047154(2020 年 10 月 7 日)。
(由 Junio C Hamano 合并 -- gitster -- 在提交 f9c0e74 中,2020 年 10 月 30 日)

contrib/git-resurrect.sh:使用与哈希无关的 OID 模式

签字人:Denton Liu

由于 Git 现在支持 SHA-1 以外的散列,因此散列长度不能保证为 40 个字符。 将$_x40替换$_x40与哈希无关的 OID 模式。

回答2

VonC 已引导您走向正确的方向。

但是我无法阻止自己分享这个精彩的 GithubGist 恢复 git 分支。

标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • git恢复删除的文件,删除后未提交任何文件(git recover deleted file where no commit was made after the delete)
    问题 我删除了一些文件。 我还没有承诺。 我想重置我的工作区以恢复文件。 我做了一个git checkout . 。 但是删除的文件仍然丢失。 并且git status显示: # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # deleted: cc.properties # deleted: store/README # deleted: store/cc.properties # 为什么不git checkout . 是否将工作区重置为HEAD ? 回答1 输出告诉您您需要做什么。 git reset HEAD cc.properties等 这将取消rm操作的阶段。 之后,再次运行git status将告诉您需要进行git checkout -- cc.properties来取回文件。 更新:我的配置文件中有这个 $ git config alias.unstage reset HEAD 我通常用它来撤消工作。 回答2 您已经进行了删除,因此您需要执行以下操作: git checkout HEAD cc.properties store/README store/cc.properties git checkout
  • 在Git中删除分支后,我可以恢复分支吗?(Can I recover a branch after its deletion in Git?)
    问题 如果我运行git branch -d XYZ ,有没有办法恢复分支? 有没有一种方法可以像我没有运行delete branch命令一样返回? 回答1 是的,您应该能够执行git reflog --no-abbrev并在已删除分支的尖端找到提交的SHA1,然后只需git checkout [sha] 。 一旦完成该提交,就可以git checkout -b [branchname]从那里重新创建分支。 感谢此压缩/单线版本的@Cascabel和如何获取sha的@Snowcrash。 如果您刚刚删除了该分支,则会在终端机Deleted branch <your-branch> (was <sha>)看到类似的内容。 然后只需在此单行代码中使用该<sha> : git checkout -b <your-branch> <sha> 回答2 大多数情况下,无法到达的提交都在reflog中。 因此,首先要尝试使用git reflog命令显示git reflog (显示HEAD的reflog)。 如果提交是仍存在的特定分支的一部分,则可能更简单的方法是使用命令git reflog name-of-my-branch 。 它也可以与远程设备一起使用,例如,如果您强行进行了推送(其他建议:始终首选git push --force-with-lease ,这样可以更好地防止错误,并且更易于恢复
  • 多种删除本地Git更改的方法(Various ways to remove local Git changes)
    问题 我刚刚克隆了一个git存储库并签出了一个分支。 我进行了处理,然后决定删除所有本地更改,因为我想要原始副本。 简而言之,我必须执行以下两个命令来删除本地更改 git checkout . git clean -f 我的问题是 (1)这是摆脱局部变化的正确方法,还是请让我知道正确的方法。 (2)我们什么时候使用git reset --hard因为即使没有此命令我也可以重置 谢谢 *解决方案:主要修改:03/26:*用git专有术语替换了许多模糊的术语[已跟踪/未跟踪/已分阶段/未分阶段] 进行本地更改时,文件可能只有三类: 类型1.暂存的跟踪文件类型2。未暂存的跟踪文件类型3。未暂存的未跟踪文件又称为未跟踪的文件 暂存-已移至暂存区/已添加至索引的暂存区跟踪-修改后的文件未跟踪-新文件。 始终未登台。 如果上演,则意味着它们已被跟踪。 每个命令的作用: git checkout . -仅删除未暂存的跟踪文件[类型2] git clean -f -f-仅删除未暂存的未跟踪文件[类型3] git reset --hard --hard-仅删除暂存的跟踪文件和未暂存的跟踪文件[类型1,类型2] git stash -u删除所有更改[类型1,类型2,类型3] 结论: 很明显,我们可以使用 (1) combination of `git clean -f` and `git reset
  • 一文看懂Git常用操作
    本文内容90%都来自廖雪峰的Git教程,这里仅做学习记录,有理解不对的地方还望指正。 一、关键词理解 1. 工作区(Working Directory): 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区(通过git init进行设定,就在工作区创建了.git的版本库)———其实是不建议称呼“工作树”,只不过大家叫习惯了,就这么叫吧。 2. 工作树(Working tree) 这部分内容似乎很少有人讲。其实工作树才是我们应该重点理解的 2.1 工作树和工作区的范围关系 工作树位于工作区,但是并非工作区的所有文件都属于工作树。当我们在工作区新建了一个文件,并且没有做接下来的其他工作,这时工作树是能检测到该文件的,你可以利用git status进行检测,结果应该显示untracked file。但是工作树其实并没有把该文件放置到他的任意位置,也就是说该在棵树上是没有登记过这个文件,该文件没有这棵树的树籍,他是一个相对于工作树处于untracked file的状态,如果这时我们用如下命令会失败: git rm shot.txt # 假设我们这里创建了一个文件 shot.txt,且没有执行命令 git add shot.txt 结果显示: fatal: pathspec 'shot.txt' did not match any files # 反馈:路径声明
  • 【Git学习笔记】Git命令及其使用方法
    Git学习教程 一、安装 1.1. Linux sudo apt-get install git 注意: 安装完成后,还需要进一步设置,用命令行自报家门 git config --global user.name "Your Name" git config --global user.email "email@example.com" 注意: git config和--global参数,表示这台机器所有的Git仓库都会使用这个配置。也可以对某个仓库制定不同的用户名和Email地址。 1.2. windows 官网下载安装 二、创建版本库 2.0 git代码汇总 git init //初始化仓库 git add //添加文件 git commit //提交文件,添加修改备注 2.1. 创建目录 mkdir learngit cd learngit pwd /Users/michael/learngit 2.2. 转为Git仓库 git init Initialized empty Git repository in /Users/michael/learngit/.git/ 注意: 目录下多了一个.git目录,是Git用来跟踪管理版本库,使用ls -ah命令查看,或者Ctrl+H. 2.3. 编写第一个readme.txt文件放进仓库 把readme.txt文件放进仓库目录下 2
  • 强制git push后如何拉?(How to pull after a forced git push?)
    问题 假设我从 git repo 中提取更改。 然后回购力的作者推到中央回购。 现在我不能拉,因为历史被改写了。 假设作者强制推送了正确的版本,我该如何拉新提交(并放弃旧提交)? 我知道这是糟糕的 git 工作流程,但有时您无法避免这种情况。 回答1 丢弃您的本地更改 如果你想放弃你的工作, fetch和reset 。 例如,如果您有一个名为origin的远程和一个名为master的分支: $ git fetch origin $ git reset --hard origin/master # Destroys your work 保持本地更改 如果你不想扔掉你的工作,你将不得不做一个git rebase --onto 。 假设旧的origin是这样的: A ---> B ---> C ^ origin/master 你有这个: A ---> B ---> C ---> X ---> Y ---> Z ^ ^ | master origin/master 现在,上游的变化改变了事情: A ---> B ---> C ---> X ---> Y ---> Z \ ^ ---> B'---> C' master ^ origin/master 您必须运行git rebase --onto origin/master <C> master ,其中<C>是上游更改之前旧origin
  • git undo本地分支删除(Git undo local branch delete)
    问题 我只是使用git branch -D branchName了一些实验性更改,才删除了错误的分支。 如何恢复分支? 回答1 您可以使用git reflog查找分支的最后一次提交的SHA1。 从那时起,您可以使用 git branch branchName <sha1> 编辑:正如@seagullJS所说, branch -D命令告诉您sha1,因此,如果您还没有关闭终端,则变得非常容易。 例如,这将删除然后立即还原名为master2的分支: user@MY-PC /C/MyRepo (master) $ git branch -D master2 Deleted branch master2 (was 130d7ba). <-- This is the SHA1 we need to restore it! user@MY-PC /C/MyRepo (master) $ git branch master2 130d7ba 回答2 如果您知道分支的最后一个SHA1,则可以尝试 git branch branchName <SHA1> 您可以使用git reflog找到SHA1,如解决方案--defect link--中所述。 回答3 如果您尚未推送删除,则可以执行以下操作: $ git checkout deletedBranchName 回答4 如果您只是删除了分支
  • Git 复习知识总结
    Gitee 没有记录(比较简单),Git 搭建服务器也没有记录(还不太会玩 linux,有错误发出来对大家就不好啦) 有个 SourceTree 的软件可以帮助你更好的操作 git 这个软件添加 ssh 是在 工具 -> 选项 里面添加 openSSH 正文 命令 命令集合参考 安装、配置、查看相关 查看 git 版本 git version 配置所有 git 仓库 git config --global user.name "Your Name" git config --global user.email "email@example.com" 查看已配置的所有设置 git config --list 几个基本的命令 一个文件夹变为库 git init 添加文件到库中(版本库的暂存区) 可以添加很多最后再提交 git add 文件名 //这里文件后缀加了就要求要准确,不加不冲突就行了 git add . //添加全部文件 提交到 Git (当前分支分支) git commit -m "描述语句,最好不要省略" 版本、管理文件、区域理解 查看当前库与之前库的区别(也叫查看当前状态) 工作区、暂存区的状态,主要应该为工作区的状态,这里理解不是很透彻 git status 查看具体的不同 git diff 文件名 查看提交日志 查看完后,按一下 q 即可退出日志查看状态 git
  • 2021-03-28
    Git常用指令精简集合 //基本的本地库相关记录操作 git add . //该文件夹下所有文件全部git add git add readme.txt //加入readme.txt一个文件 git commit -m "balabalabala" //-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失。 git status //显示工作区状态 git diff //如果git status告诉你有文件被修改过,用git diff可以查看修改内容。 git log //查看历史记录 git log --pretty=oneline //git log的简洁显示版,前面是commit id(版本号) //在Git中,用HEAD表示当前版本,也就是最新的提交1094adb…(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。 git reset --hard HEAD^ //回退到上一个版本 git
  • 您可以在GitHub上恢复/恢复已删除的分支多长时间?(For how long can you restore/recover a deleted branch on GitHub?)
    问题 这不是关于如何在Github中恢复丢失的分支的问题,而是关于以下用户案例故事,您必须恢复还原的分支需要多长时间: 在拉取请求(通常用作代码检查的地方)内,可以合并分支,然后将其删除,所有这些都在github GUI中进行。 如果您选择删除它,则可以使用带有粗体和下划线的单词的选项来“还原”分支。 我怀疑此选项有时间限制,并且github不会无限期保持此状态。 github对您可以执行多长时间有时间限制吗? 如果可以,那该是什么时间限制? 回答1 我问GitHub支持,这是他们的回应(重点是我的): 我们为所有Pull Request使用单独的ref名称空间,我们将其用于各种用途,包括还原分支。 由于我们无限期地保留那些[Pull Request]引用,因此恢复分支没有时间限制。 您可以使用以下命令在您的遥控器中查看这些特殊引用: $ git ls-remote | grep pull From git@github.com:<username>/<remote>.git aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa refs/pull/1/head bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb refs/pull/1/merge
  • 《吐血整理》一篇文章教你学废Git版本管理
    > 本文内容简述 Git概述① 什么是版本管理系统② Git和SVN的区别③ Git的四个组成部分④ Git中文件的几个状态⑤ Git中的四类对象Git下载安装配置Git本地基本操作① 配置「git config」② 获取帮助「git help」③ 创建Git仓库「git init」④ 添加文件到暂存区「git add」⑤ 让Git不跟踪特定文件「.gitignore文件」⑥ 暂存区内容提交到本地仓库「git commit」⑦ 查看工作区与暂存区状态「git status」⑧ 内容变化,差异对比「git diff」⑨ 查看历史提交记录「git log」⑩ 查看某个文件的改动记录「git blame」⑪ 设置Git命令别名「git config --global alias」⑫ 为重要提交打标签「git tag」Git文件恢复与版本回退① 文件恢复,未add「git checkout」② 文件恢复,已add未commit「git reset HEAD」③ 版本回退,已commit「git reset --hard」④ 查看输入过的指令记录「git reflog」⑤ 撤销某次提交「git revert」⑥ 查看某次提交的修改内容「git show」⑦ 查看分支最新commit的Hash值「git rev-parse」⑧ 找回丢失对象的最后一点希望「git fsck」Git本地分支①
  • 我如何忽略有关本地更改将被合并覆盖的“ git pull”错误?(How do I ignore an error on 'git pull' about my local changes would be overwritten by merge?)
    问题 如何忽略有关Git pull的以下错误消息? 您对以下文件的本地更改将被合并覆盖 如果我要覆盖它们怎么办? 我已经尝试过git pull -f类的东西,但是没有任何效果。 需要明确的是,我只想覆盖特定的更改,而不是所有内容。 回答1 如果要从工作副本中删除所有本地更改(包括git未跟踪的文件),只需将它们存储起来即可: git stash push --include-untracked 如果您不再需要它们,现在可以删除该存储: git stash drop 如果您不想--keep-index已经上演的更改(例如,使用git add ,则添加选项--keep-index 。 但是请注意,如果这些分阶段的更改与上游的更改发生冲突,这仍将阻止合并。 如果只想覆盖本地更改的特定部分,则有两种可能性: 提交所有您不想覆盖的内容,其余使用上面的方法。 使用git checkout path/to/file/to/revert来覆盖您想要覆盖的更改。 确保没有通过git reset HEAD path/to/file/to/revert 。 回答2 好的,在其他两个答案的帮助下,我想出了一个直接的解决方案: git checkout HEAD^ file/to/overwrite git pull 回答3 这适用于我覆盖所有本地更改,并且不需要身份: git reset --hard
  • 如何将文件重置或还原到特定版本?(How can I reset or revert a file to a specific revision?)
    问题 我已经对该文件进行了一些更改,该文件已作为一组文件的一部分提交了几次,但现在想将其更改重置/还原为以前的版本。 我已经做了一个git log和一个git diff来找到我需要的修订,但是却不知道如何使文件回到过去的状态。 回答1 假设所需的提交哈希为c5f567 : git checkout c5f567 -- file1/to/restore file2/to/restore git checkout手册页提供了更多信息。 如果要恢复到c5f567之前的提交,请附加~1 (其中1是您要返回的提交数量,可以是任意值): git checkout c5f567~1 -- file1/to/restore file2/to/restore 附带说明一下,我对这个命令一直感到不舒服,因为它既用于普通事物(在分支之间切换)又用于异常,破坏性的事物(丢弃工作目录中的更改)。 回答2 您可以使用diff命令快速查看对文件所做的更改: git diff <commit hash> <filename> 然后要将特定文件还原到该提交,请使用reset命令: git reset <commit hash> <filename> 如果您进行了本地修改,则可能需要使用--hard选项。 管理航路点的一个很好的工作流程是使用标签在时间轴中干净地标记点。 我不太明白您的最后一句话
  • Git进阶使用----进阶用法及避免冲突
    文章目录 一、常用命令1. 代码常规保存2. git stash 临时保存3. git add4. git commit5. git push6. git pull 二、分支管理1. 新建分支2. 切换分支3. 查看分支4. 合并分支 三、解决冲突 一、常用命令 1. 代码常规保存 程序员的开发习惯都是,在敲完自己认为的一段代码之后都喜欢Ctrl+S 保存起来. 个人建议在代码之前做好代码差异比对,检查好提交文件的状 如果代码修改保存后,不想保留git restore ‘文件名称’ 即可撤回 查看文件状态 git status 2. git stash 临时保存 注: 在 git add 之前执行 代码开发过程中遇到其他需求情况,如现阶段开发的代码不回退,可讲代码临时保存起来 git stash save ‘临时注释信息’ —>会显示你暂存的位置 stash@{0} 0是索引开始git stash list ------>查看临时区列表git stash pop stash@{num} ------>恢复工作进度到工作区{默认恢复最近的一次}git stash apply stash@{num}------>恢复工作进度到工作区且该工作进度可重复恢复git stash drop stash@{num}------>删除保存的工作进度{默认恢复最近的一次}git stash
  • 如何将文件重置或还原到特定版本?(How can I reset or revert a file to a specific revision?)
    问题 我已经对该文件进行了一些更改,该文件已作为一组文件的一部分提交了几次,但现在想将其更改重置/还原为以前的版本。 我已经做了一个git log和一个git diff来找到我需要的修订,但是却不知道如何使文件回到过去的状态。 回答1 假设所需的提交哈希为c5f567 : git checkout c5f567 -- file1/to/restore file2/to/restore git checkout手册页提供了更多信息。 如果要还原到c5f567之前的提交,请附加~1 (其中1是您要返回的提交数量,可以是任意值): git checkout c5f567~1 -- file1/to/restore file2/to/restore 附带说明一下,我一直对该命令不满意,因为它既用于普通事物(在分支之间切换)又用于异常,破坏性事物(丢弃工作目录中的更改)。 回答2 您可以使用diff命令快速查看对文件所做的更改: git diff <commit hash> <filename> 然后要将特定文件还原到该提交,请使用reset命令: git reset <commit hash> <filename> 如果您进行了本地修改,则可能需要使用--hard选项。 管理航路点的一个很好的工作流程是使用标签在时间轴中干净地标记点。 我不太理解您的最后一句话
  • Git使用梳理教程
    ​ 最近重新梳理了这些年使用git的一些用法和问题,方便自己记忆查找。 Git 简介 定义 ​ Git是一个开源的分布式版本控制系统,是 Linus Torvalds为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件,可以有效、高速地处理从很小到非常大的项目版本管理。 官网 https://git-scm.com/ 下载安装 ​ 很简单,不是本文重点。 配置 ​ 初次使用,需要配置邮箱和用户名字 git config --global user.email "2312@l16.com" git config --global user.name "xiaoyu" Git 初体验 基本思想 基本命令 初始化 # cd /test git init 添加一个文件 vi test.txt ​ 添加内容,保存 添加到本地暂存区 git add test.txt 提交文件到本地仓库 $ git commit -m "first commit" [master (root-commit) 11fd92e] first commit 1 file changed, 1 insertion(+) create mode 100644 test.txt 查看工作区、暂存区的状态 $ git status On branch master nothing to commit
  • 如何将文件重置或还原到特定版本?(How can I reset or revert a file to a specific revision?)
    问题 我对文件进行了一些更改,该文件已作为一组文件的一部分提交了几次,但现在想将其更改重置/还原为以前的版本。 我已经做了一个git log和一个git diff来找到我需要的修订,但是却不知道如何使文件回到过去的状态。 回答1 假设所需的提交哈希为c5f567 : git checkout c5f567 -- file1/to/restore file2/to/restore git checkout手册页提供了更多信息。 如果要还原到c5f567之前的提交,请附加~1 (其中1是您要返回的提交数量,可以是任意值): git checkout c5f567~1 -- file1/to/restore file2/to/restore 附带说明一下,我对这个命令一直感到不舒服,因为它既用于普通事物(在分支之间切换)又用于异常,破坏性的事物(丢弃工作目录中的更改)。 还有一个新的git restore命令,该命令专门用于还原已修改的工作副本文件。 如果您的git足够新,则可以使用此命令,但是文档附带警告: 此命令是实验性的。 行为可能会改变。 回答2 您可以使用diff命令快速查看对文件所做的更改: git diff <commit hash> <filename> 然后要将特定文件还原到该提交,请使用reset命令: git reset <commit hash>
  • 如何取消删除github上的分支?(How to undelete a branch on github?)
    问题 似乎我不应该删除github上的分支。 我所做的如下: 1-我向系统添加一个新的.gitignore 2-我用 git rm -r --cached . git add . git commit -m ".gitignore is now working" 当我这样做时,我在本地系统上有一个分支,但是服务器有两个分支。 然后,我将分支推送到服务器,由于没有第二个分支,因此在服务器上删除了第二个分支。 我怎样才能把它带回来? 我正在使用Github作为远程服务器。 回答1 如果您知道已删除分支的最后提交消息,则可以执行以下操作: git reflog #搜索消息 fd0e4da HEAD@{14}: commit: This is the commit message I want #结帐修订 git checkout fd0e4da 或者 git checkout HEAD@{14} #创建分支 git branch my-recovered-branch #推送分支 git push origin my-recovered-branch:my-recovered-branch 回答2 如果在“拉取请求”期间删除了该分支,则可以使用“恢复分支”按钮在UI中撤消该分支。 棘手的部分实际上是找到已合并并关闭的PR,您只需要知道URL或要放入URL中的PR编号即可。
  • 如何备份本地Git存储库?(How to backup a local Git repository?)
    问题 我在一个相对较小的项目上使用git,我发现压缩.git目录的内容可能是备份该项目的好方法。 但这有点奇怪,因为当我还原时,我需要做的第一件事是git reset --hard 。 以这种方式备份git repo是否有任何问题? 另外,有没有更好的方法(例如,便携式git格式或类似的格式?)? 回答1 我开始对Yar的脚本进行一些修改,结果出现在github上,包括手册页和安装脚本: https://github.com/najamelan/git-backup 安装方式: git clone "https://github.com/najamelan/git-backup.git" cd git-backup sudo ./install.sh 欢迎所有建议并在github上请求请求。 #!/usr/bin/env ruby # # For documentation please sea man git-backup(1) # # TODO: # - make it a class rather than a function # - check the standard format of git warnings to be conform # - do better checking for git repo than calling git status # -
  • Git 基本原理 以及 GitHub 与 GitLab
    1.Git 简介 Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 版本控制:是一种用于记录一个或多个文件内容变化,方便我们查阅特定版本修订情况的系统。 2.集中式与分布式的区别 (1).集中式版本控制系统 早期出现的版本控制系统有:SVN、CVS等,它们是集中式版本控制系统,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同合作的开发人员都通过客户端连接到这台服务器,取出最新的文件或者提交更新。 集中式版本控制系统,版本库是集中存放在中央服务器的,工作的时候,用的是自己的电脑,所以,我们首先需要从中央服务器上拉取最新的版本,然后开始工作,等工作完了,再把自己的工作提交到中央服务器。 在这里借用廖雪峰老师的一个比喻,中央服务器好比是一个图书馆,你要改其中的一本书,必须先要从图书馆里把书借出来,然后更改,改完之后,再放回图书馆。 集中式版本控制系统的一个最大毛病就是必须联网才能工作,所以对于网络环境比较差的情况使用集中式版本控制系统是一件比较让人头疼的事情。 (2).分布式版本控制系统 分布式版本控制系统,比如:Git,没有中央服务器的概念,我们使用相关的客户端提取的不只是最新的文件,而是把代码仓库完整地镜像下来,相当于每个人的电脑都是一个完整的版本库,这样的话,任何一处协同工作的服务器出现故障,