Git: 로컬 레포가 최신 상태인지 확인하는 방법은 무엇입니까?
저는 제 지역 보고서가 최신 상태인지 알고 싶습니다(만약 그렇지 않다면, 이상적으로는 변경 사항을 보고 싶습니다).
하지 않고 어떻게 이것을 확인할 수 있습니까?git fetch
또는git pull
?
해라git fetch --dry-run
설명서(git help fetch
)는 다음과 같이 말합니다.
--dry-run
Show what would be done, without making any changes.
최초 사용git remote update
원격 참조를 최신 상태로 전환할 수 있습니다.그런 다음 다음과 같은 여러 가지 작업 중 하나를 수행할 수 있습니다.
git status -uno
추적 중인 분기가 앞에 있는지, 뒤에 있는지 또는 분기되었는지 여부를 알려줍니다.아무것도 표시되지 않으면 로컬과 원격이 동일합니다.샘플 결과:
지점 DEV
분기는 '오리진/DEV'보다 7 커밋 뒤에 있으며, 빠르게 전달될 수 있습니다.
("git pull"을 사용하여 로컬 지점을 업데이트합니다.)
git show-branch *master
이름이 'master'로 끝나는 모든 분기의 커밋을 표시합니다(예: 마스터 및 오리진/마스터).
사용하는 경우-v
git 원격 업데이트 포함(git remote -v update
업데이트된 분기를 확인할 수 있으므로 추가 명령이 필요하지 않습니다.
git remote show origin
결과:
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (local out of date) <-------
사용할 수 있습니다.git remote update; git status -uno
로컬 분기가 오리진 분기와 최신 상태인지 확인합니다.
그렇지는 않아요 - 하지만 어떻게 하는지 모르겠어요.git fetch
당신의 지역 지점을 바꾸지 않기 때문에 아플 것입니다.
두 가지 명령을 실행해야 합니다.
- git fetch origin
- git 상태
실행해야 합니다.git fetch
로컬 리포지토리를 원격 서버의 파일과 비교하기 전에 확인할 수 있습니다.
이 명령은 원격 추적 분기만 업데이트하고 사용자가 호출할 때까지 작업 트리에 영향을 미치지 않습니다.git merge
또는git pull
.
일단 가져온 로컬 지점과 원격 추적 지점의 차이를 보려면 여기에 설명된 대로 git difforgit cherry를 사용할 수 있습니다.
다른 방법은 다음을 사용하여 원격 지점의 상태를 보는 것입니다.git show-branch remote/branch
그것을 당신이 볼 수 있는 비교로 사용하기 위해.git show-branch *branch
저장소뿐만 아니라 모든 원격에서 지점을 확인하려면 이 답변을 확인하십시오. 자세한 내용은 https://stackoverflow.com/a/3278427/2711378 을 참조하십시오. https://stackoverflow.com/a/3278427/2711378
git remote show origin
Enter passphrase for key ....ssh/id_rsa:
* remote origin
Fetch URL: git@github.com:mamaque/systems.git
Push URL: git@github.com:mamaque/systems.git
HEAD branch: main
Remote branch:
main tracked
Local ref configured for 'git push':
main pushes to main (up-to-date)
둘 다 최신 상태입니다.
main pushes to main (fast-forwardable)
원격은 로컬로 업데이트할 수 있습니다.
main pushes to main (local out of date)
로컬은 원격으로 업데이트할 수 있습니다.
사용하는 경우
git fetch --dry-run -v <link/to/remote/git/repo>
최신 상태인지 여부에 대한 피드백을 받을 수 있습니다.따라서 기본적으로 앞에서 제시한 답변에 "개요" 옵션을 추가하면 됩니다.
git fetch origin
git status
다음과 같은 결과를 보게 될 것입니다.
지점이 '출발지/마스터'보다 9개 커밋 뒤에 있습니다.
원격 변경 사항에 업데이트
git pull
사용하지 않고는 불가능합니다.git fetch
또는git pull
원격 저장소로 이동하여 "최신"이 의미하는 바를 확인하지 않고 저장소가 "최신"인지 여부를 어떻게 알 수 있습니까?
를 사용하지 이 하는 방법은 다음과 같습니다.git fetch
은 수있다니습사를 할 수 .git rev-list
명령을 사용하여 로컬 분기에 대한 가장 최근의 커밋과 해당 원격 분기에 대한 가장 최근의 커밋을 비교합니다.다음은 이를 수행하는 Bash 스크립트입니다.
#!/bin/sh
# Get the name of the current branch
branch=$(git rev-parse --abbrev-ref HEAD)
# Get the hash of the most recent commit on the local branch
local_commit=$(git rev-list --max-count=1 $branch)
# Get the hash of the most recent commit on the corresponding remote branch
remote_commit=$(git rev-list --max-count=1 origin/$branch)
# Count the number of commits between the local and remote branches
commits_behind=$(git rev-list --count $local_commit..$remote_commit)
# Print the result
echo "The local branch is $commits_behind commits behind the corresponding remote branch."
이스립먼현분재이가름져다니옵을을 사용하여 분기의 .git rev-parse --abbrev-ref HEAD
그런 다음 사용합니다.git rev-list --max-count=1
로컬 및 원격 분기 모두에서 가장 최근의 커밋 해시를 가져옵니다.마지막으로, 그것은 사용합니다.git rev-list --count
두 해시 간의 커밋 수를 계산합니다. 이는 로컬 분기가 원격 분기 뒤에 있는 커밋 수입니다.
는 해당 이 " " " " " 인 으로 가정합니다.origin/branch_name
리모컨의 이름이 다른 경우 스크립트를 적절하게 조정해야 합니다.
언급URL : https://stackoverflow.com/questions/7938723/git-how-to-check-if-a-local-repo-is-up-to-date
'programing' 카테고리의 다른 글
Gitrepo에서 파일을 정리하지 못했습니다. 새 백업을 만들 수 없습니다. (0) | 2023.08.14 |
---|---|
Amazon AWS 람다와 함께 Spring boot/cloud를 사용해도 값이 주입되지 않습니다. (0) | 2023.08.14 |
실행 중인 SetInterval 간격 변경 (0) | 2023.08.14 |
JQuery.handleError를 던지는 Ajax 업로드 플러그인을 찾을 수 없습니다. (0) | 2023.08.14 |
모든 콘솔 메시지에 타임스탬프 추가 (0) | 2023.08.14 |