提交 cd7a7aa8 编写于 作者: Lab机器人's avatar Lab机器人

web-editor

上级 96c93584
...@@ -32,7 +32,6 @@ ...@@ -32,7 +32,6 @@
* [Git属性](docs/user/project/git-attr.md) * [Git属性](docs/user/project/git-attr.md)
* [文件指责](docs/user/project/repo/blame.md) * [文件指责](docs/user/project/repo/blame.md)
* [文件历史记录](docs/user/project/repo/history.md) * [文件历史记录](docs/user/project/repo/history.md)
* [镜像仓库](docs/user/project/repo/mirror.md)
* [保护分支](docs/user/project/protected-branch.md) * [保护分支](docs/user/project/protected-branch.md)
* [保护Tag](docs/user/project/protected-tag.md) * [保护Tag](docs/user/project/protected-tag.md)
* [减少仓库大小](docs/user/project/repo/reduce-repo-size.md) * [减少仓库大小](docs/user/project/repo/reduce-repo-size.md)
......
# 文件历史记录[](#文件历史记录 "Permalink") # 文件历史记录[](#file-history "Permalink")
在 GitLab 0.8.0 中[引入](https://gitlab.com/gitlab-org/gitlab/blob/9ba1224867665844b117fa037e1465bb706b3685/app/controllers/commits_controller.rb) Git 文件历史记录提供与文件关联的提交历史记录的信息,您可以在项目中的每个文件中找到**历史记录**按钮。
Git 文件历史记录提供有关与文件关联的提交历史记录的信息. [![File history button](/docs/img/file_history_button_v12_6.png "History button")](/docs/img/file_history_button_v12_6.png)
您可以在项目中的每个文件中找到" **历史记录"**按钮. 当选择**历史记录**按钮时,您将看到提交列表,如果将鼠标悬停在提交时间上,您将看到上次修改提交的确切日期和时间。
[![File history button](img/4b803fd891a7ec7f422522d2ff185864.png "History button")](img/file_history_button_v12_6.png) ## 在 git 中使用[](#associated-git-command "Permalink")
当选择" **历史记录"**按钮时,您将看到一个带有说明信息的屏幕 如果要从`git`查看文件历史记录,则可以使用`git log <filename>`命令。例如,如果要在本地目录中找到有关`README.md`文件的`history`信息,请运行以下命令
[![Git log output](img/0dad61d266449688c931d1703509bca3.png "History button output")](img/file_history_output_v12_6.png) ```markdown
如果将鼠标悬停在 UI 中的提交上,您将看到上次修改提交的确切日期和时间.
## Associated `git` command[](#associated-git-command "Permalink")
如果从命令行运行`git` ,则等效命令为`git log <filename>` . 例如,如果要在本地目录中找到有关`README.md`文件的`history`信息,请运行以下命令:
```
git log README.md git log README.md
``` ```
您将看到类似于以下内容的输出,其中包括 UTC 格式的提交时间: 您将看到类似于以下内容的输出,其中包括 UTC 格式的提交时间:
``` ```markdown
commit 0e62ed6d9f39fa9bedf7efc6edd628b137fa781a commit 0e62ed6d9f39fa9bedf7efc6edd628b137fa781a
Author: Mike Jang <mjang@gitlab.com> Author: Someone <someone@codechina.csdn.net>
Date: Tue Nov 26 21:44:53 2019 +0000 Date: Tue Nov 26 21:44:53 2019 +0000
Deemphasize GDK as a doc build tool Deemphasize GDK as a doc build tool
commit 418879420b1e3a4662067bd07b64bb6988654697 commit 418879420b1e3a4662067bd07b64bb6988654697
Author: Marcin Sedlak-Jakubowski <msedlakjakubowski@gitlab.com> Author: Marcin Sedlak-Jakubowski <someone_else@codechina.csdn.net>
Date: Mon Nov 4 19:58:27 2019 +0100 Date: Mon Nov 4 19:58:27 2019 +0100
Fix typo Fix typo
commit 21cc1fef11349417ed515557748369cfb235fc81 commit 21cc1fef11349417ed515557748369cfb235fc81
Author: Jacques Erasmus <jerasmus@gitlab.com> Author: Jacques Erasmus <someone_else@codechina.csdn.net>
Date: Mon Oct 14 22:13:40 2019 +0000 Date: Mon Oct 14 22:13:40 2019 +0000
Add support for modern JS Add support for modern JS
...@@ -46,7 +38,7 @@ Date: Mon Oct 14 22:13:40 2019 +0000 ...@@ -46,7 +38,7 @@ Date: Mon Oct 14 22:13:40 2019 +0000
Added rollup to the project Added rollup to the project
commit 2f5e895aebfa5678e51db303b97de56c51e3cebe commit 2f5e895aebfa5678e51db303b97de56c51e3cebe
Author: Achilleas Pipinellis <axil@gitlab.com> Author: Achilleas Pipinellis <codechina@codechina.csdn.net>
Date: Fri Sep 13 14:03:01 2019 +0000 Date: Fri Sep 13 14:03:01 2019 +0000
Remove gitlab-foss Git URLs as we don't need them anymore Remove gitlab-foss Git URLs as we don't need them anymore
......
此差异已折叠。
# 减少仓库大小[](#减少仓库大小 "Permalink") # 减少仓库大小[](#reduce-repo-size "Permalink")
随着时间的流逝,Git 存储库变得越来越大. 将大文件加到 Git 存储库后: 代码仓库会随着时间变得越来越大,将大文件加到 Git 代码仓库后:
* 由于每个人都必须下载文件,因此获取存储库的速度变慢. * 由于每个人都必须下载文件,因此获取存储库的速度变慢
* 它们占用服务器上的大量存储空间. * 它们占用服务器上的大量存储空间
* [可以达到](#storage-limits) Git 仓库的存储限制. * [达到](#storage-limits) Git 仓库的存储限制
重写存储库可能会删除不需要的历史记录,从而使存储库更小. [`git filter-repo`](https://github.com/newren/git-filter-repo)是用于快速重写 Git 存储库历史记录的工具,建议同时使用以下两种工具: 重写代码仓库可能会删除不需要的历史记录,从而使代码仓库变得更小。[`git filter-repo`](https://github.com/newren/git-filter-repo)是用于快速重写 Git 存储库历史记录的工具,建议同时使用以下两种工具:
* [`git filter-branch`](https://git-scm.com/docs/git-filter-branch). * [`git filter-branch`](https://git-scm.com/docs/git-filter-branch).
* [BFG](https://rtyley.github.io/bfg-repo-cleaner/). * [BFG](https://rtyley.github.io/bfg-repo-cleaner/).
**危险:**重写存储库历史记录是一种破坏性操作. 在开始之前,请确保备份您的存储库. 备份存储库的最佳方法是[导出项目](../settings/import_export.html#exporting-a-project-and-its-data) .**注意:** Git LFS 文件只能由管理员使用[Rake 任务](../../../raketasks/cleanup.html)删除. [计划](https://gitlab.com/gitlab-org/gitlab/-/issues/223621)消除此限制. **危险:**重写代码仓库历史记录是一种破坏性操作,在开始之前,请确保备份您的代码仓库。备份存储库的最佳方法是[导出项目](/docs/user/project/import.md#exporting-a-project-and-its-data)
## Purge files from repository history[](#purge-files-from-repository-history "Permalink") ## 在从代码仓库历史记录中净化文件[](#purge-files-from-repository-history "Permalink")
为了使克隆项目更快,请重写分支和标签以删除不需要的文件. 为了使克隆项目更快,建议重写分支和标签以删除不需要的文件。
1. 使用受支持的程序包管理器或从源代码[安装`git filter-repo`](https://github.com/newren/git-filter-repo/blob/main/INSTALL.md) . 1. 使用受支持的程序包管理器或从源代码[安装`git filter-repo`](https://github.com/newren/git-filter-repo/blob/main/INSTALL.md)
2. 使用`--bare`克隆存储库的新副本: 2. 使用`--bare`克隆代码仓库的新副本:
``` ```markdown
git clone --bare https://example.gitlab.com/my/project.git git clone --bare https://example.gitlab.com/my/project.git
``` ```
3. 使用`git filter-repo` ,从存储库的历史记录中清除所有文件. 3. 使用`git filter-repo` ,从代码仓库的历史记录中清除所有文件
要清除大文件,可以使用`--strip-blobs-bigger-than`选项: 要清除大文件,可以使用`--strip-blobs-bigger-than`选项:
``` ```markdown
git filter-repo --strip-blobs-bigger-than 10M git filter-repo --strip-blobs-bigger-than 10M
``` ```
要清除使用 Git LFS 存储的大文件,可以使用`--blob--callback`选项. 下面的示例使用回调从 Git LFS 指针读取文件大小,并删除大于 10MB 的文件
要清除使用 Git LFS 存储的大文件,可以使用`--blob--callback`选项. 下面的示例使用回调从 Git LFS 指针读取文件大小,并删除大于 10MB 的文件. ```markdown
```
git filter-repo --blob-callback ' git filter-repo --blob-callback '
if blob.data.startswith(b"version https://git-lfs.github.com/spec/v1"): if blob.data.startswith(b"version https://git-lfs.github.com/spec/v1"):
size_in_bytes = int.from_bytes(blob.data[124:], byteorder="big") size_in_bytes = int.from_bytes(blob.data[124:], byteorder="big")
...@@ -46,157 +45,143 @@ ...@@ -46,157 +45,143 @@
要按路径清除特定的大文件,可以组合使用`--path`和`--invert-paths`选项: 要按路径清除特定的大文件,可以组合使用`--path`和`--invert-paths`选项:
``` ```markdown
git filter-repo --path path/to/big/file.m4v --invert-paths git filter-repo --path path/to/big/file.m4v --invert-paths
``` ```
有关更多示例和完整文档,请参见[`git filter-repo`](https://htmlpreview.github.io/?https://github.com/newren/git-filter-repo/blob/docs/html/git-filter-repo.html#EXAMPLES)文档. 有关更多示例和完整文档,请参见[`git filter-repo`](https://htmlpreview.github.io/?https://github.com/newren/git-filter-repo/blob/docs/html/git-filter-repo.html#EXAMPLES)文档
4. 运行`git filter-repo`会删除所有遥控器. 要为您的项目还原遥控器,请运行: 4. 运行`git filter-repo`会删除所有 remote,要为您的项目还原 remote,请运行:
``` ```markdown
git remote add origin https://example.gitlab.com/<namespace>/<project_name>.git git remote add origin https://codechina.csdn.net/<namespace>/<project_name>.git
``` ```
5. 强制推送更改以覆盖 GitLab 上的所有分支: 5. 强制推送更改以覆盖 CODEChina 上的所有分支:
``` ```markdown
git push origin --force --all git push origin --force --all
``` ```
[受保护的分支](../protected_branches.html)将导致此操作失败. 要继续,您必须删除分支保护,推送,然后重新启用受保护的分支. [受保护的分支](/docs/user/project/protected-branch.md)将导致此操作失败。要继续的话,您必须删除分支保护,推送,然后重新启用受保护的分支。
6. 要从标记的发行版中删除大文件,请强制将更改推送到 GitLab 上的所有标记: 6. 要从标记的 Release 中删除大文件,请强制将更改推送到CODEChina上的所有标记:
``` ```markdown
git push origin --force --tags git push origin --force --tags
``` ```
[受保护的标签](../protected_tags.html)将导致此操作失败. 要继续,您必须删除标签保护,推送,然后重新启用受保护的标签. [受保护的标签](../protected_tags.html)将导致此操作失败. 要继续,您必须删除标签保护,推送,然后重新启用受保护的标签.
7. 手动执行[项目整理](../../../administration/housekeeping.html#manual-housekeeping) 7. 手动执行项目整理
**注意:**为提高性能而缓存了项目统计信息. 您可能需要等待 5 到 10 分钟才能看到存储利用率下降. **注意:**为提高性能我们缓存了项目统计信息,您可能需要等待 5 到 10 分钟才能看到存储利用率下降。
## Purge files from GitLab storage[](#purge-files-from-gitlab-storage "Permalink") ## 在代码仓库中净化文件[](#purge-files-from-repo-storage "Permalink")
要减少 GitLab 中存储库的大小,必须删除 GitLab 内部引用以包含大文件的提交. 在完成这些步骤之前,请[从存储库历史记录中清除文件](#purge-files-from-repository-history) . 要减少代码仓库的大小,必须删除 CODEChina 内部引用包含大文件的提交。在完成这些步骤之前,请[从存储库历史记录中清除文件](#purge-files-from-repository-history) .
除了[分支](branches/index.html)和标签(这是一种 Git 引用)之外,GitLab 还会自动创建其他引用. 这些引用可防止在查看合并请求时死链接到提交或丢失差异. [存储库清理](#repository-cleanup)可用于从 GitLab 中删除它们. 除了[分支](/docs/user/project/repo/branches.md)和标签(这是一种 Git 引用)之外,系统还会自动创建其他引用,[代码仓库清理](#repository-cleanup)可用于从 CODEChina 中删除它们.
以下内部参考文献不做广告 以下为内部参考文献
* `refs/merge-requests/*`用于合并请求. * `refs/merge-requests/*`用于合并请求
* `refs/pipelines/*` for [pipelines](../../../ci/pipelines/index.html#troubleshooting-fatal-reference-is-not-a-tree). * `refs/pipelines/*` 用于 pipelines
* `refs/environments/*`用于环境. * `refs/environments/*`用于环境
这意味着在获取时通常不包含它们,这使得获取速度更快. 另外, `refs/keep-around/*`是隐藏的 refs,以防止与讨论相关的提交被删除并且根本无法被获取. 这意味着在获取时通常不包含它们,这使得获取速度更快。另外, `refs/keep-around/*`是隐藏的 refs,以防止与讨论相关的提交被删除并且根本无法被获取。但是,可以从项目导出内的 Git 捆绑包访问这些引用:
但是,可以从项目导出内的 Git 捆绑包访问这些引用. 1. 使用受支持的程序包管理器或从源代码[安装`git filter-repo`](https://github.com/newren/git-filter-repo/blob/main/INSTALL.md)
1. 使用受支持的程序包管理器或从源代码[安装`git filter-repo`](https://github.com/newren/git-filter-repo/blob/main/INSTALL.md) . 2. [从项目中](../settings/import_export.html#exporting-a-project-and-its-data)生成一个新的[导出](../settings/import_export.html#exporting-a-project-and-its-data)并下载
2. [从项目中](../settings/import_export.html#exporting-a-project-and-its-data)生成一个新的[导出](../settings/import_export.html#exporting-a-project-and-its-data)并下载.
3. 使用`tar`解压缩备份: 3. 使用`tar`解压缩备份:
``` ```markdown
tar xzf project-backup.tar.gz tar xzf project-backup.tar.gz
``` ```
这将包含一个由[`git bundle`](https://git-scm.com/docs/git-bundle)创建的`project.bundle`文件. 这将包含一个由[`git bundle`](https://git-scm.com/docs/git-bundle)创建的`project.bundle`文件
4. 从包中克隆存储库的新副本: 4. 从包中克隆存储库的新副本:
``` ```markdown
git clone --bare --mirror /path/to/project.bundle git clone --bare --mirror /path/to/project.bundle
``` ```
5. 使用`git filter-repo` ,从存储库的历史记录中清除所有文件. 因为我们正在尝试删除内部引用,所以我们将依靠每次运行生成的`commit-map`来告诉我们要删除哪些内部引用. 5. 使用`git filter-repo` ,从代码仓库的历史记录中清除所有文件。因为我们正在尝试删除内部引用,所以我们将依靠每次运行生成的`commit-map`来告诉我们要删除哪些内部引用。
**注意:** `git filter-repo`每次运行都会创建一个新的`commit-map`文件,并覆盖前一次运行的`commit-map`
**注意:** `git filter-repo`每次运行都会创建一个新的`commit-map`文件,并覆盖前一次运行的`commit-map` . **每次**运行都将需要此文件. 每次运行`git filter-repo`都要执行下一步. **每次**运行都将需要此文件,每次运行`git filter-repo`都要执行下一步
要清除所有大文件,可以使用`--strip-blobs-bigger-than`选项: 要清除所有大文件,可以使用`--strip-blobs-bigger-than`选项:
``` ```markdown
git filter-repo --strip-blobs-bigger-than 10M git filter-repo --strip-blobs-bigger-than 10M
``` ```
要按路径清除特定的大文件,可以组合使用`--path`和`--invert-paths`选项. 要按路径清除特定的大文件,可以组合使用`--path`和`--invert-paths`选项
``` ```markdown
git filter-repo --path path/to/big/file.m4v --invert-paths git filter-repo --path path/to/big/file.m4v --invert-paths
``` ```
有关更多示例和完整文档,请参见[`git filter-repo`](https://htmlpreview.github.io/?https://github.com/newren/git-filter-repo/blob/docs/html/git-filter-repo.html#EXAMPLES)文档. 有关更多示例和完整文档,请参见[`git filter-repo`](https://htmlpreview.github.io/?https://github.com/newren/git-filter-repo/blob/docs/html/git-filter-repo.html#EXAMPLES)文档
6. 运行[存储库清理](#repository-cleanup) .
## Repository cleanup[](#repository-cleanup "Permalink") 6. 运行[代码仓库清理](#repository-cleanup)
在 GitLab 11.6 中[引入](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/19376) . ## 代码仓库清理[](#repository-cleanup "Permalink")
仓库清理允许您上传对象的文本文件,并且 GitLab 将删除对这些对象的内部 Git 引用. 您可以使用[`git filter-repo`](https://github.com/newren/git-filter-repo)生成对象列表(在`commit-map`文件中),该对象列表可与存储库清理一起使用. 代码仓库清理允许您上传对象的文本文件,并且 CODEChina 将删除对这些对象的内部 Git 引用。您可以使用[`git filter-repo`](https://github.com/newren/git-filter-repo)生成对象列表(在`commit-map`文件中),该对象列表可与存储库清理一起使用。
要清理存储库: 要清理代码仓库:
1. 转到存储库的项目. 1. 转到项目的代码仓库
2. 导航 **设置>存储库** . 2. 进入 **项目设置>仓库>仓库清理**
3. 上载对象列表. 例如,一个`commit-map`文件. 3. 上载对象列表,例如,一个`commit-map`文件
4. Click **开始清理**. 4. 点击**开始清理**
这将: 这将:
* 删除所有对旧提交的内部 Git 引用. * 删除所有对旧提交的内部 Git 引用
* 针对存储库运行`git gc` . * 针对存储库运行`git gc`
完成后,您将收到一封电子邮件. 完成后,您将收到一封电子邮件
When using repository cleanup, note: 当在使用代码仓库清理时,需要注意:
* 项目统计信息已缓存. 您可能需要等待 5 到 10 分钟才能看到存储利用率下降. * 项目统计信息已缓存,您可能需要等待 5 到 10 分钟才能看到存储利用率下降
* 客房部修剪 2 周以上的松散物品. 这意味着在最近 2 周内添加的对象将不会立即删除. 如果您有权访问[Gitaly](../../../administration/gitaly/index.html)服务器,则可以运行`git gc --prune=now`立即修剪所有松散的对象. * Housekeeping 会精简2周以上的松散物品,这意味着在最近 2 周内添加的对象将不会被立即删除
* 此过程将从 GitLab 的缓存和数据库中删除一些重写提交的副本,但是覆盖范围仍然存在许多空白,并且某些副本可能会无限期地存在. [清除实例缓存](../../../administration/raketasks/maintenance.html#clear-redis-cache)可能有助于删除其中的一些[实例](../../../administration/raketasks/maintenance.html#clear-redis-cache) ,但出于安全考虑,不应依赖它! * 此过程将从 CODEChina 的缓存和数据库中删除一些重写提交的副本,但是覆盖范围仍然存在许多空白,并且某些副本可能会无限期地存在
## Storage limits[](#storage-limits "Permalink") ## 仓库大小限制[](#storage-limits "Permalink")
储存库大小限制: 仓库大小限制由管理员在实例上设置。
* 可以[由管理员](../../admin_area/settings/account_and_limit_settings.html#repository-size-limit-starter-only)在自我管理实例上设置.
* Are [set for GitLab.com](../../gitlab_com/index.html#repository-size-limit).
当项目达到其大小限制时,您不能: 当项目达到其大小限制时,您不能:
* 推送到项目. * 推送到项目
* 创建一个新的合并请求. * 创建一个新的合并请求
* 合并现有的合并请求. * 合并现有的合并请求
* 上载 LFS 对象. * 上载 LFS 对象
您仍然可以: 您仍然可以:
* 创造新问题. * 创造新问题
* 克隆项目. * 克隆项目
如果超出存储库大小限制,则可以尝试: 如果超出存储库大小限制,则可以尝试:
1. 删除一些数据. 1. 删除一些数据
2. 进行新的提交. 2. 进行新的提交
3. 推回存储库. 3. 推回代码仓库
也许您还可以: 也许您还可以:
* 将一些斑点移到 LFS. * 将一些 blob 移到 LFS
* 从历史记录中删除一些旧的依赖项更新. * 从历史记录中删除一些旧的依赖项更新
不幸的是,该工作流程无法正常工作. 实际上,在提交中删除文件并不会减小存储库的大小,因为早期的提交和 Blob 仍然存在.
您需要做的是重写历史记录. 我们建议使用开源社区维护的工具[`git filter-repo`](https://github.com/newren/git-filter-repo) .
**注意:**在 GitLab 端运行`git gc`之前,"已删除"的提交和 blob 仍将存在. 您还必须能够将重写的历史记录推送到 GitLab,如果您已经超过最大大小限制,则可能无法实现.
为了解除这些限制,自我管理的 GitLab 实例的管理员必须增加对超出它的特定项目的限制. 因此,最好始终主动保持在限制之下. 如果您达到了极限,并且无法暂时提高极限,则唯一的选择是:
1. 在本地修剪所有不需要的东西. 实际上,在提交中删除文件并不会减小存储库的大小,因为早期的提交和 Blob 仍然存在。
2. 在 GitLab 上创建一个新项目,然后开始使用它.
**Caution:** This process is not suitable for removing sensitive data like password or keys from your repository. Information about commits, including file content, is cached in the database, and will remain visible even after they have been removed from the repository. 您需要做的是重写历史记录,我们建议使用开源社区维护的工具[`git filter-repo`](https://github.com/newren/git-filter-repo)
\ No newline at end of file \ No newline at end of file
# 文件编辑[](#文件编辑 "Permalink") # 文件编辑[](#文件编辑 "Permalink")
有时,直接从 GitLab 界面进行快速更改要比克隆项目并使用 Gi​​t 命令行工具容易. 在此功能中,我们重点介绍如何从文件浏览器创建新文件,目录,分支或标记. 所有这些操作都可以通过一个下拉菜单获得. 有时,直接从 CODEChina 界面进行快速更改要比克隆项目并使用 Gi​​t 命令行工具更容易。接下来,我们重点介绍如何从文件浏览器创建新文件,目录,分支或标记,以上所有这些操作都可以通过一个下拉菜单获得。
## Create a file[](#create-a-file "Permalink") ## 创建文件[](#create-a-file "Permalink")
在项目的文件页面中,单击分支选择器右侧的" +"按钮. 从下拉列表中选择**新文件** . 在项目的文件页面中,单击分支下拉列表右侧的" +"按钮,从下拉列表中选择**新文件**
[![New file dropdown menu](img/149fa515778bea7ce86903f0c8d9b31f.png)](img/web_editor_new_file_dropdown.png) [![New file dropdown menu](/docs/img/web_editor_new_file_dropdown.png)](/docs/img/web_editor_new_file_dropdown.png)
" **文件名"**框中输入文件名. 然后,在编辑器区域中添加文件内容. 添加描述性提交消息并选择一个分支. 分支字段将默认为您在文件浏览器中查看的分支. 如果输入新的分支名称,将出现一个复选框,允许您在提交更改后启动新的合并请求. **文件名**框中输入文件名,然后在编辑器区域中添加文件内容;添加描述性提交消息并选择一个分支,分支字段将默认为您在文件浏览器中查看的分支;如果输入新的分支名称,将出现一个复选框,允许您在提交更改后启动新的合并请求。
当您对新文件感到满意时,请单击底部的" **提交更改** ". 当您完成新文件的内容后,请单击底部的" **提交更改** "。
[![Create file editor](img/07e4663db45be7313a205a17ec342edb.png)](img/web_editor_new_file_editor.png) ### 文件模板[](#template-dropdowns "Permalink")
### Template dropdowns[](#template-dropdowns "Permalink") 启动新项目时,新项目可能也需要一些通用文件,CODEChina 将在仓库中提示您新建这些文件。
启动新项目时,新项目可能也需要一些通用文件. 因此,GitLab 将显示一条消息,以简化您的操作. [![First file for your project](/docs/img/web_editor_template_dropdown_first_file.png)](/docs/img/web_editor_template_dropdown_first_file.png)
[![First file for your project](img/1e0213e85ced3ac9dcc079f0e1831068.png)](img/web_editor_template_dropdown_first_file.png) 当单击`LICENSE``.gitignore`等时,将显示一个下拉列表,为您提供适合您的项目的模板。
当单击`LICENSE``.gitignore`等时,将显示一个下拉列表,为您提供适合您的项目的模板. [![MuLan license selected](/docs/img/web_editor_template_dropdown_mulan_license.png)](/docs/img/web_editor_template_dropdown_mulan_license.png)
[![MIT license selected](img/097706015c4d2abaaf34d0782cfac635.png)](img/web_editor_template_dropdown_mit_license.png) 许可证,更新日志,贡献指南等文件也都可以通过项目页面上的按钮添加。
许可证, `.gitlab-ci.yml`日志,贡献指南或`.gitlab-ci.yml`文件也可以通过项目页面上的按钮添加. 在下面的示例中,许可证已经创建,这将创建指向许可证本身的链接. ## 上传文件[](#upload-a-file "Permalink")
[![New file button](img/adc0d64a6c4c1979d43d8bf1d8d485e8.png)](img/web_editor_template_dropdown_buttons.png) 当内容为文本时,创建文件将十分方便。但是,这不适用于二进制数据,例如图像,PDF 或其他文件类型,在这种情况下,您可以选择上传文件。
> **Note:** The **设置 CI / CD** button will not appear on an empty repository. You have to at least add a file in order for the button to show up. 在项目的文件页面中,单击分支下拉列表右侧的" +"按钮,从下拉菜单中选择**上传文件**
## Upload a file[](#upload-a-file "Permalink") 弹出上传对话框后,有两种方法可以上传文件:可以在弹出窗口中拖放文件;也可以使用**点击上传**链接,选择要上传的文件后,将显示文件预览。
当内容为文本时,创建文件的能力非常出色. 但是,这不适用于二进制数据,例如图像,PDF 或其他文件类型. 在这种情况下,您需要上传文件. 输入提交消息,选择一个分支,并在准备好后单击**上传文件**
在项目的文件页面中,单击分支选择器右侧的" +"按钮. 从下拉菜单中选择上**载文件** . ## 新建目录[](#create-a-directory "Permalink")
[![Upload file dropdown menu](img/671787cdf6cd1dde3e748fae72d46779.png)](img/web_editor_upload_file_dropdown.png) 为了使代码仓库中的文件井井有条,您可以创建一个目录将相关的文件都归类到同一个目录中。
弹出上传对话框后,有两种方法可以上传文件. 可以在弹出窗口中拖放文件,也可以使用**点击上传**链接. 选择要上传的文件后,将显示文件预览. 在项目的文件页面中,单击分支下拉列表右侧的" + "号,从下拉菜单中选择 **新建目录**
输入提交消息,选择一个分支,并在准备好后单击"上**载文件"** . 在新目录对话框中,输入目录名称,提交消息并选择目标分支,单击**创建目录**完成新建目录操作。
[![Upload file dialog](img/2ed1719eefb651778ccd248f0bbe577c.png)](img/web_editor_upload_file_dialog.png) ## 新建分支[](#create-a-new-branch "Permalink")
## Create a directory[](#create-a-directory "Permalink") 有多种方法可从 CODEChina 的界面创建分支。
为了使档案库中的文件井井有条,创建一个新目录通常会很有帮助. ### 从 Issue 创建一个新分支[](#create-a-new-branch-from-an-issue "Permalink")
在项目的文件页面中,单击分支选择器右侧的加号按钮( `+` ). 从下拉菜单中选择" **新建目录** ". 如果您的开发工作流程要求每个合并请求都存在 Issue,则可以直接从该 Issue 快速创建分支,以加快流程。新分支及其以后的合并请求将被标记为与此问题相关,合并后将自动关闭 Issue。您可以在 Issue 说明下方看到 **创建合并请求**下拉列表。
[![New directory dropdown](img/c65afb6da67de7dea9950e2b151cca40.png)](img/web_editor_new_directory_dropdown.png) **注意:**如果已经有一个具有相同名称的分支或一个引用的合并请求,或者您的项目具有活动的 Fork 关系,则不会看到 **创建合并请求**按钮。如果您想显示此按钮,则可能的解决方法是删除项目的 fork 关系,删除后,Fork 关系将无法恢复,您将不再能够将合并请求发送到源仓库。
在新目录对话框中,输入目录名称,提交消息并选择目标分支. 单击**创建目录**以完成. 该下拉列表包含选项**创建合并请求和分支**以及**创建分支**
[![New directory dialog](img/0b804819bf30ce8e657ad538d376ecc5.png)](img/web_editor_new_directory_dialog.png) [![New Branch Button](/docs/img/web_editor_new_branch_from_issue_v_12_6.png)](/docs/img/web_editor_new_branch_from_issue_v_12_6.png)
## Create a new branch[](#create-a-new-branch "Permalink") 选择这些选项之一后,将基于项目的默认分支(默认为`master`创建新的分支或分支与合并请求. 分支名称将基于 Issue 的标题,并作为前缀具有其内部 ID。因此,上面的示例屏幕快照将创建一个名为`1-webpack`的分支。
有多种方法可从 GitLab 的 Web 界面创建分支. 当您在一个空的项目中单击**创建分支**按钮时,CODEChina 会自动创建一个`master`分支, `README.md`提交一个空白的`README.md`文件,并根据 Issue 标题创建并将您重定向到新分支(如果您的项目已经配置了)。
### Create a new branch from an issue[](#create-a-new-branch-from-an-issue "Permalink") 创建分支后,您可以编辑代码仓库中的文件以解决此 Issue。当基于新创建的分支创建合并请求时,描述字段将自动显示[ Issue 关闭模式](/docs/user/project/issues/manage.md#closing-issues-automatically) `Closes #ID` ,其中`ID`为 Issue 的 ID,一旦合并请求被合并, Issue 将自动关闭。
在 GitLab 8.6 中[引入](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/2808) . ### 从项目页新建分支[](#create-a-new-branch-from-a-projects-dashboard "Permalink")
如果您的开发工作流程要求每个合并请求都存在问题,则可以直接从该问题快速创建分支,以加快流程. 新分支及其以后的合并请求将被标记为与此问题相关. 合并后,MR 将自动关闭问题. 您可以在问题说明下方看到" **创建合并请求"**下拉列表. 如果要在创建新的合并请求之前对多个文件进行更改,则可以预先创建一个新的分支。在项目页的" + "号下拉列表中选择 **新建分支** "。
**注意:**如果已经有一个具有相同名称的分支或一个引用的合并请求,或者您的项目具有活动的派生关系,则不会看到" **创建合并请求"**按钮. 如果您想显示此按钮,则可能的解决方法是[删除项目的 fork 关系](../settings/index.html#removing-a-fork-relationship) . 删除后,派生关系将无法恢复,您将不再能够将合并请求发送到源. [![New branch dropdown](/docs/img/web_editor_new_branch_dropdown.png)](/docs/img/web_editor_new_branch_dropdown.png)
[![Create Button](img/ab48b86f7a0dfe92d4358f705bf938a8.png)](img/web_editor_new_branch_from_issue_create_button_v12_6.png) 输入新的**分支名称** ,更改**从模板创建**字段以选择该新分支将来自哪个分支、标记或提交 SHA(可选)。如果您开始键入现有的分支或标签,则此字段将自动完成。单击**创建分支** ,您将返回到该新分支上的文件列表页。
该下拉列表包含选项**创建合并请求和分支**以及**创建分支** . [![New branch page](/docs/img/web_editor_new_branch_page.png)](/docs/img/web_editor_new_branch_page.png)
[![New Branch Button](img/2f78c411d32ee05e95a1984ef90b2356.png)](img/web_editor_new_branch_from_issue_v_12_6.png) 现在,您可以根据需要更改任何文件。当您准备好将更改合并回 master 分支时,可以使用页面顶部的"创建合并请求"按钮,在创建分支或修改文件后,该按钮将会在页面显示一段时间。
选择这些选项之一后,将基于项目的默认分支(默认为`master`创建新的分支或分支与合并请求. 分支名称将基于问题的标题,并作为前缀具有其内部 ID. 因此,上面的示例屏幕快照将创建一个名为`2-make-static-site-auto-deploy-and-serve`的分支. ## 新建 Tag[](#create-a-new-tag "Permalink")
当您在一个空的存储库项目中单击**创建分支**按钮时,GitLab 会自动创建一个`master`分支, `README.md`提交一个空白的`README.md`文件,并根据问题标题创建并将您重定向到新分支. 如果您的[项目已经配置了](../integrations/overview.html) Kubernetes 等[部署服务](../integrations/overview.html) ,则 GitLab 会更进一步,并通过帮助您创建`.gitlab-ci.yml`文件来提示您设置[自动部署](../../../topics/autodevops/stages.html#auto-deploy) . Tag 可用于标记主要的里程碑,例如 Release 版本,候选版本等等。您可以从分支或提交 SHA 创建 Tag,在项目的文件页面上,从下拉列表中选择" **新建标签** "。
创建分支后,您可以编辑存储库中的文件以解决此问题. 当基于新创建的分支创建合并请求时,描述字段将自动显示[问题关闭模式](../issues/managing_issues.html#closing-issues-automatically) `Closes #ID` ,其中`ID`为问题的 ID. 一旦合并请求被合并,这将解决问题. 给标签起一个名字,例如`v1.0.0` 。选择您要从中创建此新标签的分支或 SHA,您可以选择添加一条消息及 Release说明(可选),发行说明支持 Markdown 格式,您也可以上传附件。单击**创建标签** ,创建成功后将返回标签列表页。
### Create a new branch from a project’s dashboard[](#create-a-new-branch-from-a-projects-dashboard "Permalink") ## 提示[](#tips "Permalink")
如果要在创建新的合并请求之前对多个文件进行更改,则可以预先创建一个新的分支. 在项目的文件页面上,从下拉列表中选择" **新建分支** ". 创建或上传新文件或创建新目录时,均可触发新的合并请求,而不是直接提交给 master。在**目标分支**字段中输入新的分支名称,您会注意到出现一个复选框,标有**通过这些更改启动新的合并请求** ,提交更改后,您将进入新的合并请求表单。
[![New branch dropdown](img/83a4859fc1c1d9fc2ea68819a53eaea8.png)](img/web_editor_new_branch_dropdown.png) 如果你*不*希望使用您的主电子邮件地址通过 Web 编辑器创建的提交,您可以从**用户设置>编辑个人资料**页面选择使用其他的链接的电子邮件地址。
\ No newline at end of file
输入新的**分支名称** . (可选)更改" **创建自"**字段以选择该新分支将来自哪个分支,标记或提交 SHA. 如果您开始键入现有的分支或标签,则此字段将自动完成. 单击**创建分支** ,您将返回到该新分支上的文件浏览器.
[![New branch page](img/dc5fe88e82dc925a618598e1ac284f39.png)](img/web_editor_new_branch_page.png)
现在,您可以根据需要更改任何文件. 当您准备好将更改合并回母版时,可以使用屏幕顶部的小部件. 在创建分支或修改文件后,此窗口小部件仅显示一段时间.
[![New push widget](img/2279c6b38c41208a2726d04b0df15c37.png)](img/web_editor_new_push_widget.png)
## Create a new tag[](#create-a-new-tag "Permalink")
标签可用于标记主要的里程碑,例如生产版本,候选版本等等. 您可以从分支或提交 SHA 创建标签. 在项目的文件页面上,从下拉列表中选择" **新建标签** ".
[![New tag dropdown](img/a8ac57717b491533848b3ebca40aae86.png)](img/web_editor_new_tag_dropdown.png)
给标签起一个名字,例如`v1.0.0` . 选择您要从中创建此新标签的分支或 SHA. 您可以选择添加一条消息和发行说明. 发行说明部分支持 Markdown 格式,您也可以上传附件. 单击**创建标签** ,您将被带到标签列表页面.
[![New tag page](img/36d97eaa1e64c3f6d5b78d205d1ce881.png)](img/web_editor_new_tag_page.png)
## Tips[](#tips "Permalink")
创建或上载新文件或创建新目录时,可以触发新的合并请求,而不是直接提交给 master. 在**目标分支**字段中输入新的分支名称. 您会注意到出现一个复选框,标**有"通过这些更改启动新的合并请求"** . 提交更改后,您将进入新的合并请求表单.
[![Start a new merge request with these changes](img/f293e9e73b2cf8c4ef278104fbd068d5.png)](img/web_editor_start_new_merge_request.png)
如果你*不*希望使用您的主电子邮件地址通过 Web 编辑器创建的提交,您可以选择使用其他的链接的电子邮件地址的从**用户设置>编辑个人资料**页面.
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册