Gitdiff --이름만 사용하고 해당 목록을 복사합니다.
두 개의 개정판 사이에 변경된 파일 목록을 가져오려고 하는데, 이는 간단합니다.
git diff -–name-only commit1 commit2 > /path/to/my/file
그러나 나열된 모든 파일을 다른 곳에 복사하려면 무엇을 써야 합니까?그리고 복사된 파일에 대해 완전히 동일한 디렉토리 구조가 필요합니다.
예를 들어, 파일을 수정하고 추가했습니다.
/protected/texts/file1.txt
/protected/scripts/index.php
/public/pics/pic1.png
나는 참여하고 싶습니다./home/changes/
변경 및 추가된 모든 파일:
/home/changes/protected/texts/file1.txt
/home/changes/protected/scripts/index.php
/home/changes/public/pics/pic1.png
내가 테스트한 다음 명령을 사용해 보십시오.
$ cp -pv --parents $(git diff --name-only) DESTINATION-DIRECTORY
다음 항목이 올바르게 작동합니다.
git diff -z --name-only commit1 commit2 | xargs -0 -IREPLACE rsync -aR REPLACE /home/changes/protected/
추가 설명:
그
-z
에.git diff --name-only
파일 이름에 비정상적인 문자가 있을 경우를 대비하여 새 줄 대신 NUL 바이트로 구분된 파일 목록을 출력합니다.그
-0
로.xargs
는 표준 입력을 NUL로 구분된 매개 변수 목록으로 해석합니다.그
-IREPLACE
기본적으로 필요합니다.xargs
변수를 끝에 추가할 것입니다.rsync
지휘권대신, 그것은 그들을 나중에 어디에 두라고 말합니다.REPLACE
is. (이 서버 오류 답변의 좋은 팁입니다.)그
-a
에 대한 매개 변수.rsync
가능한 경우 권한, 소유권 등을 보존하는 수단.-R
대상에 파일을 만들 때 전체 상대 경로를 사용합니다.
업데이트: 이전 버전의xargs
당신은 그것을 사용해야 할 것입니다.-i
대신 옵션-I
(전자는 이후 버전에서는 더 이상 사용되지 않습니다.findutils
.)
여기 한 줄기 글이 있습니다.
변경된 파일을 나열하고 *.zip:
git diff --name-only | zip patched.zip -@
마지막으로 커밋된 변경된 파일을 나열하고 *.zip:
git diff --name-only HEAD~ HEAD | zip patched.zip -@
zip update.zip $(git diff --name-only commit commit)
#!/bin/bash
# Target directory
TARGET=/target/directory/here
for i in $(git diff --name-only)
do
# First create the target directory, if it doesn't exist.
mkdir -p "$TARGET/$(dirname $i)"
# Then copy over the file.
cp -rf "$i" "$TARGET/$i"
done
https://stackoverflow.com/users/79061/sebastian-paaske-t%c3%b8rholm
완벽하게 작동합니다.
git diff 1526043 82a4f7d --name-only | xargs zip update.zip
git diff 1526043 82a4f7d --name-only | xargs -n 10 zip update.zip
아무도 언급하지 않았습니다.cpio
입력하기 쉽고, 하드 링크를 만들고, 파일 이름의 공백을 처리합니다.
git diff --name-only $from..$to | cpio -pld outdir
언급URL : https://stackoverflow.com/questions/5605347/git-diff-name-only-and-copy-that-list
'it-source' 카테고리의 다른 글
끌어오기 요청을 Github의 기본값이 아닌 다른 분기에 병합 (0) | 2023.08.19 |
---|---|
수행 표시줄과 새로 도입된 도구 모음의 차이점은 무엇입니까? (0) | 2023.08.19 |
장고 관리자에서 "list_display"로 다대다 필드를 표시하는 방법은 무엇입니까? (0) | 2023.08.19 |
IE에만 스타일 적용 (0) | 2023.08.19 |
자바스크립트로 모든 인라인 스타일을 지우고 css 스타일 시트에 지정된 스타일만 남기려면 어떻게 해야 합니까? (0) | 2023.08.19 |