program story

어떻게 "git status"를 실행하고 파일 이름을 얻을 수 있습니까?

inputbox 2021. 1. 9. 09:52
반응형

어떻게 "git status"를 실행하고 파일 이름을 얻을 수 있습니까?


긴 상대 경로와 반대로?


git status --porcelain스크립트에서 쉽게 구문 분석 할 수 있도록 설계된 의 출력은 현재 디렉토리가 트리 내 어디에 있는지에 관계없이 상대 경로가 아닌 전체 경로를 출력합니다.

의 각 줄 출력 git status --porcelain에는 파일의 상태 (예 : 추적되지 않음, 수정 됨, 새로 만들기, 삭제됨 등)를 나타내는 두 개의 선행 문자가 있고 뒤에 공백이 있습니다. 따라서에서 언급되는 모든 항목의 전체 경로를 원하는 경우 git status당신이 할 수있는 출력 :

git status --porcelain | sed s/^...//

컷이 좋은 것 같아요.

git status -s | cut -c4-

아하, 나는 방금 질문을 이해 했다고 생각 합니다 : 기본 이름을 원하십니까? 압정 | while read a; do basename "$a"; done다음 중 하나에 :

어때

  • git diff --name-only

    인덱스와 관련된 변경

  • git diff --name-only --staged

    ... 잘 준비된 chages :)

  • git diff --name-only HEAD

    둘 다 얻었다


요청한대로 파일 이름 만 가져 오려면 다음 을 수행하십시오 .

git status --porcelain | sed -e 's!.*/!!'

이것이 얼마나 유용한 지 알 수 없습니다.


git status항상 트리를 걷고 ( 편집 및 위로) 상대 경로를 표시합니다. 현재 디렉토리의 파일 만 원하면 이 관련 답변을 참조하십시오.


수정 된 파일의 이름 가져 오기

git status --porcelain|awk '{if($1=="M") {print "basename " $2}}'|sh

다음과 같이 유사한 스크립트를 사용하여 수정 된 파일을 원격 서버에 복사합니다.

git status --porcelain|awk '{if($1=="M") {print "scp " $2 " account_name@server_ip:~/my_codebase/$(dirname " $2 ")/;"} }'|sh

git status는 상대 경로를 출력하므로 git status를 실행하기 전에 파일과 동일한 디렉토리 (작업 디렉토리의 루트 아래)로 cd하면 추가 / 스테이징 된 파일의 기본 이름 만 출력됩니다.

cd /long/path/to/my/repo/root/dir
"stuff" > ./newfile.txt
> git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   /long/path/to/my/repo/root/dir/plus/some/more/levels/of/directory/structure/inside/it/changed_file.txt
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#       long/path/to/my/repo/root/dir/plus/some/even/more/levels/of/directory/structure/inside/it/but_another_new_file.txt
#       newfile.txt
no changes added to commit (use "git add" and/or "git commit -a")

즉, 'newfile.txt'는 동일한 경로에 있기 때문에 전체 경로없이 나열됩니다.

참조 URL : https://stackoverflow.com/questions/5237605/how-can-i-run-git-status-and-just-get-the-filenames

반응형