154.md 4.5 KB
Newer Older
Lab机器人's avatar
readme  
Lab机器人 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
# File Locking

> 原文:[https://docs.gitlab.com/ee/user/project/file_lock.html](https://docs.gitlab.com/ee/user/project/file_lock.html)

*   [Overview](#overview)
*   [Use-cases](#use-cases)
*   [Locking a file or a directory](#locking-a-file-or-a-directory)
*   [Unlocking a file or a directory](#unlocking-a-file-or-a-directory)
*   [Viewing and managing existing locks](#viewing-and-managing-existing-locks)
*   [Permissions on file locking](#permissions-on-file-locking)

# File Locking[](#file-locking-premium "Permalink")

[Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/440) in [GitLab Premium](https://about.gitlab.com/pricing/) 8.9.

与多个人一起使用同一文件可能会带来风险. 合并非文本文件时的冲突很难克服,将需要大量的手动工作来解决. 文件锁定可帮助您避免这些合并冲突并更好地管理二进制文件.

使用文件锁定,您可以锁定任何文件或目录,进行更改,然后将其解锁,以便团队的其他成员可以对其进行编辑.

## Overview[](#overview "Permalink")

与多个人一起使用同一文件可能会带来风险. 合并非文本文件时的冲突很难克服,将需要大量的手动工作来解决. 借助 GitLab Premium,文件锁定可防止他人(您除外)修改特定文件或整个目录,从而帮助您避免合并冲突并更好地管理二进制文件.

## Use-cases[](#use-cases "Permalink")

在以下情况下,文件锁定功能很有用:

*   多个人正在同一个文件上,您要避免合并冲突.
*   您的存储库包含二进制文件,在这种情况下,没有简单的方法来告诉您与同事的更改之间的区别.
*   防止设计资产被覆盖.

Locked directories are locked recursively, which means that everything that lies under them is also locked.

## Locking a file or a directory[](#locking-a-file-or-a-directory "Permalink")

**注意:**锁定仅适用于您在项目设置中设置的默认分支(通常是`master` ).

锁定文件:

1.  导航到项目的" **存储库">"文件"** .
2.  选择您要锁定的文件.
3.  点击"锁定"按钮.

    [![Locking file](img/2f8e418a69825e31935272d55cceae7f.png)](img/file_lock.png)

要锁定整个目录,请在"历史记录"旁边查找"锁定"链接.

锁定文件或目录后,它在存储库视图中将显示为已锁定.

[![Repository view](img/0574a3e535157d8b9c5744214f19f7c7.png)](img/file_lock_repository_view.png)

一旦锁定,对默认分支的任何合并请求将无法合并,直到文件被解锁.

## Unlocking a file or a directory[](#unlocking-a-file-or-a-directory "Permalink")

要解锁文件或目录,请遵循与锁定文件或目录相同的步骤. 有关每个现有锁的详细视图,请参阅下一节"查看和管理现有锁".

您可以解锁自己或其他人先前锁定的文件,只要您对该项目具有"维护者"或更高[权限](../permissions.html) .

## Viewing and managing existing locks[](#viewing-and-managing-existing-locks "Permalink")

要查看或管理每个现有锁,请导航至" **项目">"存储库">"锁定文件"**区域. 在这里,您可以查看所有现有的锁,并[删除您拥有权限的](#permissions-on-file-locking)锁.

## Permissions on file locking[](#permissions-on-file-locking "Permalink")

锁定文件或目录的用户**是唯一**可以编辑并将其更改推回锁定对象所在存储库的用户.

可以对存储库进行[推送访问](../permissions.html)的任何人都可以创建锁. 即开发人员和更高级别的人员,并且只能由其作者和具有维护者权限及更高权限的任何用户删除.

如果文件被锁定并且您不是其锁定状态的作者,则在尝试推送时,预接收挂钩将拒绝您的更改. 在以下示例中,对锁定的`.gitignore`文件没有权限的用户将看到以下消息:

```
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 320 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: GitLab: The path '.gitignore' is locked by Administrator
To https://example.com/gitlab-org/gitlab-foss.git
 ! [remote rejected] master -> master (pre-receive hook declined)
 error: failed to push some refs to 'https://example.com/gitlab-org/gitlab-foss.git' 
```

同样,当不是文件锁定状态作者的用户接受合并请求时,将出现一条错误消息,指出文件已锁定.

[![Merge request error message](img/7a5c28bfcfa2942d75aaace7ccb281ce.png)](img/file_lock_merge_request_error_message.png)