자식 분기에서 수정 된 모든 파일을 가져옵니다
지점에서 어떤 파일이 변경되었는지 확인할 수있는 방법이 있습니까?
@Marco Ponti의 답변에 대한 대안이며 체크 아웃을 피하십시오.
git diff --name-only <notMainDev> $(git merge-base <notMainDev> <mainDev>)
특정 쉘이 $ () 구문을 이해하지 못하면 대신 백틱을 사용하십시오.
다음과 같이하면됩니다 :
git checkout <notMainDev>
git diff --name-only <mainDev>
그러면 두 분기간에 다른 파일 이름 만 표시됩니다.
이것은 지금까지 말하지 않은 것에 놀랐습니다!
git diff master...branch
따라서 변경 사항 만 참조하십시오. branch
현재 지점을 확인하려면
git diff master...
jqr 덕분에
이것은 짧은 손입니다
git diff $(git merge-base master branch) branch
병합베이스 (분 기간 가장 최근의 커밋)와 분기 팁
또한 마스터 대신 원본 / 마스터를 사용하면 로컬 마스터가 날짜가 지정된 경우 도움이됩니다.
이 작업을 수행하는 방법이 너무 많다는 것을 믿을 수 없습니다. 나는 다음과 같은 주장으로 이전에 게시 한 내용을 변경했습니다.
git whatchanged --name-only --pretty="" origin..HEAD
여기에는 파일 이름과 현재 분기에서 변경된 파일 이름 만 나열됩니다.
나는 @twalberg의 답변을 정말로 좋아했지만 항상 현재 지점 이름을 입력하고 싶지 않았습니다. 그래서 나는 이것을 사용하고있다 :
git diff --name-only $(git merge-base master HEAD)
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 diff --name-only master...branch-name
우리가 비교하고 싶은
git show --stat origin/branch_name
이 분기에서 추가 또는 수정 된 파일 목록이 표시됩니다.
허용 된 답변-- git diff --name-only <notMainDev> $(git merge-base <notMainDev> <mainDev>)
은 매우 가깝지만 삭제 상태가 잘못되었음을 알았습니다 . 지점에 파일을 추가했지만이 명령 ()을 사용 --name-status
하여 파일에 "A"상태를 삭제하고 파일에 "D"상태를 추가했습니다.
대신이 명령을 사용해야했습니다.
git diff --name-only $(git merge-base <notMainDev> <mainDev>)
어떤 이유로 든 cmd를 사용하는 경우 @twalberg 및 @iconoclast의 기능을 확장하면 다음을 사용할 수 있습니다.
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
The above assumes that the main branch is origin/master and that git bash was included when Git was installed (and its location is in the path environment). I actually needed to show the actual differences using a configured diff tool (kdiff3) so substituted the following bash command above:
bash --login -i -c "git difftool --dir-diff %b% $(git merge-base %b1% origin/drop2/master)"
I use grep so I only get the lines with diff --git which are the files path:
git diff branchA branchB | grep 'diff --git'
// OUTPUTS ALL FILES WITH CHANGES, SIMPLE HA :)
diff --git a/package-lock.json b/package-lock.json
참고URL : https://stackoverflow.com/questions/10641361/get-all-files-that-have-been-modified-in-git-branch
'Programing' 카테고리의 다른 글
메인 스크롤바를 항상 보이게 만들기 (0) | 2020.05.24 |
---|---|
폴스 루로 케이스 전환? (0) | 2020.05.24 |
힘내 푸시 오류 : 이전 연결을 해제 할 수 없습니다 (권한 거부). (0) | 2020.05.24 |
한 서버에서 다른 서버로 redis 데이터베이스를 어떻게 이동합니까? (0) | 2020.05.24 |
튜플에 가변 항목이 포함될 수있는 이유는 무엇입니까? (0) | 2020.05.24 |