원격 저장소에서 기록 커밋
원격 리포지토리에서 분기의 커밋 기록에 액세스하려고 합니다.문서를 살펴보았지만 로컬 Git 클라이언트를 사용하여 원격 저장소의 커밋 기록에 액세스하는 방법에 대한 실질적인 정보를 찾을 수 없었습니다.
git log remotename/branchname
해당 리포지토리에 있는 지정된 원격 분기의 로그를 표시하지만 해당 리포지토리에서 원격 리포지토리의 개인 "복사본"으로 " 가져온" 로그만 표시합니다.
저장소의 복제본은 다음을 수행하여 원격 분기의 상태를 업데이트합니다.git fetch
서버에 직접 연결하여 로그를 확인할 수 없습니다. 서버 상태를 다운로드하는 것입니다.git fetch
원격 지점의 로그를 로컬로 확인할 수 있습니다.
또 다른 유용한 명령은 다음과 같습니다.
git log HEAD..remote/branch
분기에는 분기에는 .HEAD
).
NB. 아래의 "origin"은 복제된 저장소의 업스트림을 나타내는 데 사용되며, "origin"을 원격 저장소에 대한 설명적인 이름으로 바꿉니다."원격 참조"는 복제 명령에 사용된 것과 동일한 형식을 사용할 수 있습니다.
git remote add origin <remote reference>
git fetch
git log origin/master
필터링이 언제 추가되었는지는 확실하지 않지만 기록/ref-log만 가져오려면 개체 블롭을 제외하는 방법입니다.
git clone --filter=blob:none --no-checkout --single-branch --branch master git://some.repo.git .
git log
은 이를위방다사복것입제다니는하용여하음을법한빠를 입니다.--bare
키워드를 지정한 다음 로그를 확인합니다.
git clone --bare git@giturl tmpdir
cd tmpdir
git log branch
이것이 저에게 도움이 되었습니다.
git fetch --all
git log production/master
이는 모든 원격에서 가져온 것입니다. 즉, "커밋 로그를 확인하기 위해 2GB 상당의 개체를 복제해야 할 수 있습니다."
로그는 로컬 저장소에서만 볼 수 있지만, 로그에는 설정한 모든 원격의 가져온 분기가 포함될 수 있습니다.
레포를 복제하면...
git clone git@gitserver:folder/repo.git
은 기본적으로 " 값은같니다습과다음기본다니같▁this▁default"로 설정됩니다.origin/master
.
이외의 할 수 .origin
을 추가합니다.production
로컬 복제 폴더 내에서:
git remote add production git@production-server:folder/repo.git
.production
다음을 수행해야 합니다.
git fetch --all
ALL fetch without 기서가니다져옵에이원모기것가오져없다이본로음으적격든은기default--all
에서 얻을 수 있는origin
)
후에 는 가온후로확수있다니습인에 있는 를 볼 수 .production
원격, 분기도 지정해야 합니다.
git log production/master
모든 옵션은 로컬 분기에 로그온할 때와 마찬가지로 작동합니다.
저는 이것이 가능하다고 생각하지 않습니다.저는 이 그 하고 원격저를복다고합작니다수야행해을을 수행해야 합니다.git fetch
당신이 발행하기 전에 그것에.git log
반대로
git
중앙 집중화된 scm은 다음과 같지 않습니다.svn
두 가지 옵션이 있습니다.
- 대상 플랫폼의 웹 인터페이스(예: GitHub REST API 또는 GitLab REST API) 사용
- 리포지토리를 다운로드하고 로그를 로컬로 표시
다양한 플랫폼(GitHub, GitLab, BitBucket, SourceForge, Launchpad, Gogs 등)에 대해 구현하는 것은 번거로울 수 있지만, 데이터를 가져오는 것은 매우 느립니다(몇 초 단위). 완벽한 솔루션은 없습니다.
임시 디렉터리로 가져오는 예제:
git clone https://github.com/rust-lang/rust.git -b master --depth 3 --bare --filter=blob:none -q .
git log -n 3 --no-decorate --format=oneline
또는 다음과 같습니다.
git init --bare -q
git remote add -t master origin https://github.com/rust-lang/rust.git
git fetch --depth 3 --filter=blob:none -q
git log -n 3 --no-decorate --format=oneline origin/master
두 가지 모두 파일 내용 없이 최소한의 로컬 복사본으로 브랜치 한 개의 커밋을 정확히 3개로 제한하고 콘솔 출력을 방지함으로써 성능에 최적화되었습니다.연결을 열고 가져오는 동안 델타를 계산하는 데 시간이 좀 걸립니다.
GitHub의 예:
GET https://api.github.com/repos/rust-lang/rust/commits?sha=master&per_page=3
GitLab의 예:
GET https://gitlab.com/api/v4/projects/inkscape%2Finkscape/repository/commits?ref_name=master&per_page=3
둘 다 정말 빠르지만 (모든 플랫폼과 마찬가지로) 다른 인터페이스를 가지고 있습니다.
고지 사항:러스트와 잉크스케이프는 크기와 안전성 때문에 선택되었고, 광고는 없었습니다.
원격에서 로그를 쉽게 볼 수 있는 bash 기능이 있습니다.두 개의 선택적 인수가 필요합니다.첫 번째는 분기입니다. 기본값은 마스터입니다.두 번째는 원격입니다. 기본적으로 스테이징입니다.
git_log_remote() {
branch=${1:-master}
remote=${2:-staging}
git fetch $remote
git checkout $remote/$branch
git log
git checkout -
}
예:
$ git_log_remote
$ git_log_remote development origin
특정 커밋이 포함된 원격 지점을 찾고 있었습니다.
다음은 예제로 사용할 수 있는 빠른 스크립트입니다.
spark
✦ ❯ cat run.sh
for b in $(git branch -r)
do
hasKryoCommit=$(git log "$b" | grep 3e033035a3c0b7d46c2ae18d0d322d4af3808711)
if test -n "$hasKryoCommit"
then
echo "$b"
fi
done
spark
✦ ❯ bash run.sh
origin/HEAD
fatal: unrecognized argument: ->
origin/master
origin/branch-2.4
origin/branch-3.0
origin/branch-3.1
origin/branch-3.2
origin/master
원격 서버의 로그를 쉽게 가져올 수 있습니다.방법:
ssh를 통해 git를 사용하는 경우 - Git 로그인 및 암호를 사용하여 원격 서버에 로그인하고 저장소가 있는 원격 폴더를 chdir로 지정하고 원격 서버의 저장소 내에서 "git log" 명령을 실행합니다.
Unix의 표준 로그인 프로토콜을 통해 git를 사용하는 경우 원격 서버에 telnet 연결하여 git 로그를 수행합니다.
이게 도움이 되길 바랍니다.
언급URL : https://stackoverflow.com/questions/13941976/commit-history-on-remote-repository
'IT' 카테고리의 다른 글
특정 커밋을 다른 분기 git에 기반하도록 이동하는 방법은 무엇입니까? (0) | 2023.05.28 |
---|---|
WPF용 Visual Studio 디자이너를 수동으로 다시 로드하는 방법 (0) | 2023.05.28 |
파일의 시작 부분에 텍스트를 삽입하는 방법은 무엇입니까? (0) | 2023.05.28 |
깃 저장소에 대한 명명 규칙이 있습니까? (0) | 2023.05.28 |
Bash 셸 스크립트에서 모든 인수 전파 (0) | 2023.05.28 |