하나의 명령으로 모든 git remote에 푸시할 수 있습니까?
수행하는 대신:
git push origin --all && git push nodester --all && git push duostack --all
명령 하나로 그렇게 할 수 있는 방법이 있습니까?
감사합니다 :)
다음을 작성합니다.all
이름에 여러 개의 repo URL이 있는 원격:
git remote add all origin-host:path/proj.git
git remote set-url --add all nodester-host:path/proj.git
git remote set-url --add all duostack-host:path/proj.git
그럼 그냥git push all --all
.
다음과 같이 표시됩니다..git/config
:
[remote "all"]
url = origin-host:path/proj.git
url = nodester-host:path/proj.git
url = duostack-host:path/proj.git
모든 분기를 모든 원격으로 푸시하는 방법
git remote | xargs -L1 git push --all
또는 특정 분기를 모든 원격에 푸시하려는 경우:
교체하다master
당신이 밀고 싶은 나뭇가지로.
git remote | xargs -L1 -I R git push R master
(Bonus) 명령에 대한 Git 별칭을 만드는 방법
git config --global alias.pushall '!git remote | xargs -L1 git push --all'
입니다.git pushall
이제 모든 분기를 모든 원격으로 푸시합니다.
항상 repo1, repo2 및 repo3로 푸시하지만 항상 repo1에서만 풀하려면 원격 '오리진'을 다음과 같이 설정합니다.
[remote "origin"]
url = https://exampleuser@example.com/path/to/repo1
pushurl = https://exampleuser@example.com/path/to/repo1
pushurl = https://exampleuser@example.com/path/to/repo2
pushurl = https://exampleuser@example.com/path/to/repo3
fetch = +refs/heads/*:refs/remotes/origin/*
명령줄에서 구성:
$ git remote add origin https://exampleuser@example.com/path/to/repo1
$ git remote set-url --push --add origin https://exampleuser@example.com/path/to/repo1
$ git remote set-url --push --add origin https://exampleuser@example.com/path/to/repo2
$ git remote set-url --push --add origin https://exampleuser@example.com/path/to/repo3
만약 당신이 단지 끌어내고 싶다면.repo1
하지만 할 수 있습니다.repo1
그리고.repo2
특정 분기의 경우:
[remote "origin"]
url = ssh://git@aaa.xxx.com:7999/yyy/repo1.git
fetch = +refs/heads/*:refs/remotes/origin/*
...
[remote "specialRemote"]
url = ssh://git@aaa.xxx.com:7999/yyy/repo1.git
pushurl = ssh://git@aaa.xxx.com:7999/yyy/repo1.git
pushurl = ssh://git@aaa.xxx.com:7999/yyy/repo2.git
fetch = +refs/heads/*:refs/remotes/origin/*
...
[branch "specialBranch"]
remote = origin
pushRemote = specialRemote
...
https://git-scm.com/docs/git-config#git-config-branchltnamegtremote 을 참조하십시오.
.git/config 파일을 편집하는 대신 다음 명령을 사용할 수 있습니다.
# git remote add all origin-host:path/proj.git
# git remote set-url --add all nodester-host:path/proj.git
# git remote set-url --add all duostack-host:path/proj.git
동일git push all --all
여기서도 작동합니다.
1번 답과 동일한 결과를 얻었습니다.구성 파일을 원시적으로 편집하는 대신 명령줄을 사용하여 방금 작업을 수행했습니다.
나는 한 통화에 많은 원격으로 푸시하기 위해 짧은 bash 함수를 작성했습니다.단일 원격을 매개 변수로 지정하거나 여러 원격을 공백으로 구분하거나 지정하지 않고 모든 원격에 푸시할 수 있습니다.
.bashrc 또는 .bash_profile에 추가할 수 있습니다.
function GitPush {
REMOTES=$@
# If no remotes were passed in, push to all remotes.
if [[ -z "$REMOTES" ]]; then
REM=`git remote`
# Break the remotes into an array
REMOTES=$(echo $REM | tr " " "\n")
fi
# Iterate through the array, pushing to each remote
for R in $REMOTES; do
echo "Pushing to $R..."
git push $R
done
}
예:repo에 rem1, rem2 및 rem3의 세 가지 리모컨이 있다고 가정해 보겠습니다.
# Pushes to rem1
GitPush rem1
# Pushes to rem1 and rem2
GitPush rem1 rem2
# Pushes to rem1, rem2 and rem3
GitPush
특히 깃 후크를 사용할 수 있습니다.pre-push
에 비슬립식 푸시 추가.git/hooks/pre-push
.
의 기존 리포지토리가 이미 있는 경우origin
기본 원격으로 사용되며 호출만으로 여러 원격 리포지토리에 푸시할 수 있습니다.git push
(또는 IDE/텍스트 편집기의 git sync 버튼을 사용하여) 먼저 전류를 추가합니다.origin
모든 작업에 사용되는 URL(예:push
,pull
,fetch
푸시별 원격 오리진 URL:
git remote set-url --push --add origin "$(git remote get-url --push origin)"
그런 다음 다음과 같이 푸시별 URL에 서로 원격 저장소를 추가합니다.
git remote set-url --push --add origin "git@github.com:username/repo-name.git"
이제 모든 가져오기 및 꺼내기 작업은 원래 원격 리포지토리에서만 가져옵니다.
하지만 간단한 것으로.git push
Git는 추가한 모든 원격 리포지토리에 최신 변경사항을 푸시합니다.
언급URL : https://stackoverflow.com/questions/5785549/able-to-push-to-all-git-remotes-with-the-one-command
'programing' 카테고리의 다른 글
ClosedX를 사용하여 Excel 파일에 추가ML (0) | 2023.06.20 |
---|---|
그리드 보기 - 비어 있는 데이터 원본에 헤더 표시 (0) | 2023.06.20 |
인터페이스 빌더에서 UIView 경계 속성을 설정할 수 있습니까? (0) | 2023.06.20 |
패턴에 따라 부분 문자열 추출 (0) | 2023.06.20 |
Oracle에 연결된 SQL Server에서 SQL 쿼리를 작성할 때 날짜 리터럴을 지정하려면 어떻게 해야 합니까? (0) | 2023.06.20 |