git 분기에서 수정된 모든 파일 가져오기
분기에서 변경된 파일을 확인할 수 있는 방법이 있습니까?
@Marco Ponti의 답변에 대한 대안으로, 체크아웃을 피합니다.
git diff --name-only <notMainDev> $(git merge-base <notMainDev> <mainDev>)
특정 셸이 $() 구조를 이해하지 못하면 백택스를 대신 사용합니다.
다음 사항만 수행하면 됩니다.
git checkout <notMainDev>
git diff --name-only <mainDev>
이렇게 하면 두 분기 간에 서로 다른 파일 이름만 표시됩니다.
이것이 지금까지 언급되지 않은 것에 놀랐습니다!
git diff main...branch
따서변 표시만용내경에서만 하세요.branch
현재 분기 사용을 확인하려면
git diff main...
jqr 덕분에
이것은 에 대한 간략한마디로
git diff $(git merge-base main branch) branch
따라서 병합 기준(분기 간 가장 최근의 공통 커밋)과 분기 팁
한사용을 합니다.origin/main
가 지정된 .
이렇게 많은 방법이 있다는 것이 믿기지 않습니다.저는 이전에 누군가가 게시한 것처럼 변경된 내용을 다음과 같은 주장과 함께 사용합니다.
git whatchanged --name-only --pretty="" origin..HEAD
여기에는 현재 분기에서 변경된 파일 이름만 나열됩니다.
저는 @twalberg의 답변이 정말 마음에 들었지만 항상 현재 지점 이름을 입력해야 하는 것은 싫었습니다.그래서 저는 이것을 사용합니다.
git diff --name-only $(git merge-base master HEAD)
2020년 11월 업데이트:
현재 분기에서 수정된(그리고 커밋된!) 파일 목록을 가져오려면 표준 git를 사용하여 최단 콘솔 명령을 사용할 수 있습니다.
git diff --name-only master...
로컬 "마스터" 분기가 오래된 경우(리모트 뒤) 원격 이름을 추가합니다("원본"이라고 가정).
git diff --name-only origin/master...
커밋되지 않은 변경사항도 포함하려면 다음을 제거합니다.
...
:git diff --name-only master
다른 주 분기 이름(예: "main")을 사용하는 경우 대체:
git diff --name-only main...
stdout(복사 가능하도록)으로 출력하려면:
git diff --name-only master... | cat
이 명령을 실행하는 폴더에 상관없이 VSode 터미널에서 파일 이름을 클릭할 수 있도록 하려면 다음을 추가합니다.
--relative
:git diff --name-only --relative master... | cat
다양한 옵션에 대한 정말 멋진 상세한 설명 https://blog.jpalardy.com/posts/git-how-to-find-modified-files-on-a-branch/
git diff --name-only master...branch-name
우리가 비교하고 싶은 것.
git whatchanged
좋은 대안인 것 같습니다.
이렇게 쉬울 수 있다면 어떨까요?
git changed
주 분기를 "마스터"라고 부르고 마스터에서 다른 분기를 생성한다고 가정할 경우, 이 별칭을 사용자 이름에 추가할 수 있습니다.~/.gitconfig
파일을 사용하면 쉽게 사용할 수 있습니다.
cbranch = !"git branch | grep '*' | cut -f2 -d' '"
changed = !"git diff --name-only $(git cbranch) $(git merge-base $(git cbranch) master)"
이러한 가정은 대부분의 상황에서 대부분의 사람들에게 효과가 있을 것입니다. 하지만 여러분은 그것을 만들고 있다는 것을 알아야 합니다.
또한 다음을 지원하는 셸을 사용해야 합니다.$()
당신의 껍질이 이것을 지지할 가능성이 매우 높습니다.
어떤 이유에서인지 아무도 언급하지 않았습니다.git-tree
https://stackoverflow.com/a/424142/1657819 을 참조하십시오.
git-tree
배관 명령이기 때문에 선호됩니다. 프로그래밍 방식(그리고 아마도 더 빠름)을 의미합니다.
(베이스 분기를 기준으로 함)master
)
git diff-tree --no-commit-id --name-only -r master..branch-name
그러나 분기에 영향을 받은 모든 파일이 표시됩니다. 명시적으로 수정된 파일만 보려면 다음을 사용할 수 있습니다.--diff-filter
:
git diff-tree --no-commit-id --name-only -r master..branch-name --diff-filter=M
또한 사용할 수 있습니다.--name-status
대신에--name-only
파일의 상태를 확인합니다(A
/M
/D
기타)
git show --stat origin/branch_name
이렇게 하면 이 분기에 추가되거나 수정된 파일 목록이 표시됩니다.
기능 분기에 있고 마스터와 비교하여 어떤 파일이 변경되었는지 확인하려는 경우...바로 이것:
git diff --name-only master
받아들여진 답은 -git diff --name-only <notMainDev> $(git merge-base <notMainDev> <mainDev>)
매우 가깝지만 삭제 상태가 잘못되었다는 것을 알게 되었습니다.분기에 파일을 추가했는데 이 명령어는--name-status
)는 제가 삭제한 파일에 "A" 상태를 주고, 제가 추가한 파일에 "D" 상태를 주었습니다.
대신 다음 명령을 사용해야 했습니다.
git diff --name-only $(git merge-base <notMainDev> <mainDev>)
나는 grep를 사용하기 때문에 파일 경로인 diff --git 행만 받습니다.
git diff branchA branchB | grep 'diff --git'
// OUTPUTS ALL FILES WITH CHANGES, SIMPLE HA :)
diff --git a/package-lock.json b/package-lock.json
어때
git diff --name-only HEAD~1
@twalberg 및 @iconoclast의 기능을 확장하여 cmd를 사용하는 경우 다음을 사용할 수 있습니다.
FOR /F "usebackq" %x IN (`"git branch | grep '*' | cut -f2 -d' '"`) DO FOR /F "usebackq" %y IN (`"git merge-base %x master"`) DO git diff --name-only %x %y
다음 배치 파일은 Twalberg의 답변을 기반으로 하지만 Windows에서 작동합니다.
@ECHO OFF
C: :: <== OR USE A DIFFERENT DRIVE
CD \path\to\where\git\files\are :: <== CHANGE TO THE ACTUAL PATH
SET /p b="Enter full path of an ALREADY MERGED branch to compare with origin/master: "
bash --login -i -c "git diff --name-only %b% $(git merge-base %b1% origin/drop2/master)"
PAUSE
위에서는 기본 브랜치가 오리진/마스터이며 Git가 설치될 때 Gitbash가 포함되었다고 가정합니다(그리고 Gitbash의 위치는 경로 환경에 있습니다).실제로 구성된 diff 도구(kdiff3)를 사용하여 실제 차이를 보여줘야 했기 때문에 위의 bash 명령을 대체했습니다.
bash --login -i -c "git difftool --dir-diff %b% $(git merge-base %b1% origin/drop2/master)"
언급URL : https://stackoverflow.com/questions/10641361/get-all-files-that-have-been-modified-in-git-branch
'code' 카테고리의 다른 글
CALL 명령 대 /WAIT 옵션으로 시작 (0) | 2023.06.02 |
---|---|
저장 프로시저의 출력을 sql server의 변수로 되돌리는 방법 (0) | 2023.06.02 |
Swift에서 NSMutableAttributedString을 사용하여 특정 텍스트 색상 변경 (0) | 2023.06.02 |
오류: 요청한 클래스를 단일 덱스 파일에 넣을 수 없습니다.주 인덱스 목록을 제공해 보십시오.방법 : 72477 > 65536 (0) | 2023.06.02 |
WPF 별의 역할(폭="100*") (0) | 2023.06.02 |