힘내 : 가져 오기 전용 리모컨을 설정 하시겠습니까?
git remote -v
리모컨이 구성된 Git 리포지토리 중 하나에서 실행할 때 각 리모컨에 페치 및 푸시 사양이 모두 있음을 알 수 있습니다.
$ git remote -v
<remote-name> ssh://host/path/to/repo (fetch)
<remote-name> ssh://host/path/to/repo (push)
피어 개발자를 가리키는 리모트의 경우 푸시 할 필요가 없으며 Git은 어쨌든 비 저장소 리포지토리에 푸시하지 않습니다. 푸시 주소 나 기능없이 이러한 리모트를 "페치 전용"으로 구성 할 수있는 방법이 있습니까?
푸시 URL을 삭제할 수 있다고 생각하지 않으며 풀 URL 이외의 것으로 만 재정의 할 수 있습니다. 그래서 당신이 얻을 수있는 가장 가까운 것은 다음과 같습니다.
$ git remote set-url --push origin no-pushing
$ git push
fatal: 'no-pushing' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
푸시 URL을로 설정하고 no-pushing
있습니다. 작업 디렉토리에 동일한 이름의 폴더가 없으면 git을 찾을 수 없습니다. 본질적으로 git이 존재하지 않는 위치를 사용하도록 강요하고 있습니다.
푸시 URL을 잘못된 것으로 변경하는 것 외에도 (예 :) 후크를 git remote set-url --push origin DISABLED
사용할 수도 있습니다 pre-push
.
중지하는 빠른 방법 중 하나 는 후크 git push
가되도록 symlink /usr/bin/false
하는 것입니다.
$ ln -s /usr/bin/false .git/hooks/pre-push
$ git push
error: failed to push some refs to '...'
후크를 사용하면 원하는 경우 푸시를보다 세밀하게 제어 할 수 있습니다. .git/hooks/pre-push.sample
진행중인 커밋을 푸시하지 못하게하는 방법에 대한 예를 참조하십시오 .
특정 분기로의 푸시를 방지하거나 단일 분기로의 푸시를 제한하려면 예제 후크에서 다음을 수행하십시오.
$ cat .git/hooks/pre-push
#!/usr/bin/sh
# An example hook script to limit pushing to a single remote.
#
# This hook is called with the following parameters:
#
# $1 -- Name of the remote to which the push is being done
# $2 -- URL to which the push is being done
#
# If this script exits with a non-zero status nothing will be pushed.
remote="$1"
url="$2"
[[ "$remote" == "origin" ]]
여러 리모컨이있는 테스트 저장소
$ git remote -v
origin ../gitorigin (fetch)
origin ../gitorigin (push)
upstream ../gitupstream (fetch)
upstream ../gitupstream (push)
로 밀기 origin
가능 :
$ git push origin
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 222 bytes | 222.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ../gitorigin
* [new branch] master -> master
다른 리모컨으로 푸시하는 것은 허용되지 않습니다 :
$ git push upstream
error: failed to push some refs to '../gitupstream'
Note that the pre-push
hook script can be modified to, among other things, print a message to stderr saying the push has been disabled.
The general statement "Git will refuse to push to a non-bare repository" is not true. Git will only refuse to push to a non-bare remote repository if you are attempting to push changes that are on the same branch as the remote repository's checked-out working directory.
This answer gives a simple explanation: https://stackoverflow.com/a/2933656/1866402
(I am adding this as an answer because I don't have enough reputation to add comments yet)
If you have control over the repository, you can achieve this by making use of permissions. The user who is fetching repository shouldn't have write permissions on master repository.
참고URL : https://stackoverflow.com/questions/7556155/git-set-up-a-fetch-only-remote
'program story' 카테고리의 다른 글
이상한 SQLAlchemy 오류 메시지 : TypeError : 'dict'개체가 인덱싱을 지원하지 않습니다 (0) | 2020.07.28 |
---|---|
Java 문자열 풀이 란 무엇이며 "s"는 새로운 문자열과 어떻게 다른가요? (0) | 2020.07.28 |
matplotlib의 세로 및 가로 선 (0) | 2020.07.27 |
객체의 필드를 일반 사전 키로 사용 (0) | 2020.07.27 |
C ++ 11에서 COW std :: string 구현의 적법성 (0) | 2020.07.27 |