programing

Git Add에 상세 스위치가 있습니까?

mailnote 2023. 8. 19. 10:33
반응형

Git Add에 상세 스위치가 있습니까?

제 개인 레포를 모두 깃허브로 옮기는 중입니다.제가 내린 결정 중 하나는 PC 등을 교체해야 하는 경우 툴링 설치 공간이 줄어들기 때문에 콘솔만 사용하는 것입니다.

저는 콘솔 응용 프로그램의 큰 사용자가 될 것이고, 처음 보는 사람이기 때문에 Tekpub의 Mastering Git 시리즈를 구입하기로 결정했습니다. 이 시리즈는 Gitbash를 툴바로 통합하는 방법을 보여주기 때문입니다.

다음과 같은 add all 명령을 제외하고는 모두 정상적으로 작동합니다.

git add .

효과가 있는 것 같은데 효과가 있는지 없는지 전혀 모르겠어요.명령이 실행된 후 어떤 파일을 추적했는지 알려주는 자세한 스위치가 있습니까?

Git 표준 설치와 함께 Visual Studio 2010을 사용하고 있습니다(Git 확장이 아님).

일부 git 명령에 대해 지정할 수 있습니다.--verbose,

git 'command' --verbose

또는

git 'command' -v

스위치가 실제 git 명령 이후인지 확인합니다.그렇지 않으면 작동하지 않습니다!

유용한 기능:

git 'command' --dry-run 

저는 git에 관한 문제를 디버깅하고 있었고 무엇이 잘못되고 있는지 알아내기 위해 매우 장황한 출력이 필요했습니다.저는 결국 그것을 설정했습니다.GIT_TRACE환경 변수:

export GIT_TRACE=1
git add *.txt

다음과 같은 항목을 동일한 줄에서 사용할 수도 마찬가지입니다.

GIT_TRACE=1 git add *.txt

출력:

14:06:05.508517 git.c:415               trace: built-in: git add test.txt test2.txt
14:06:05.544890 git.c:415               trace: built-in: git config --get oh-my-zsh.hide-dirty

사용할 수 있습니다.git add -igit add그게 정확히 당신이 추구하는 것은 아니지만요.가장 간단한 것은, 가진 후에 하는 것입니다.git add, 용git status준비된 내용을 확인할 수 있습니다.

용사를 합니다.git add .첫 번째 약속이 아니라면 별로 추천되지 않습니다.일반적으로 원하지 않는 파일(임시 파일 등)을 실수로 추적하기 시작하지 않도록 스테이징할 파일을 명시적으로 나열하는 것이 좋습니다.

Git에 GIT_TRACE2 플래그가 있을 뿐만 아니라(Git 2.25 이후, 2019년 2분기), 이제 그 추적은 Git라는 상위 프로세스가 무엇을 불렀는지도 알려줄 수 있습니다.

Git 2.34(Q4 2021)를 사용하여 trace2 로그는 Git이 호출된 컨텍스트를 확인하기 위해 상위 프로세스 이름을 표시하는 방법을 배웠습니다.

IDE에 의해 Git가 호출될 때 도움이 됩니다.

에밀리 셰퍼()nasamuffin의 커밋 2f732bf, 커밋 b7e6a41(2021년 7월 21일) 참조.
(주니오 C 하마노에 의해 합병 -- -- 2021년 8월 24일 커밋 6f64eeea에서)

tr2로그 상위 프로세스 이름

사인 오프 바이: 에밀리 셰퍼

사용자가 CLI 또는 스크립트를 통해 수동으로 Git를 호출했는지 여부를 누가 호출했는지 알 수 있습니다.IDE 로? 코드에 주고 'repo'할 수 있습니다.GIT_TRACE2_PARENT_SID호출자 프로세스의 환경 변수입니다.
'의 경우,가 '되는데, 는 '' 도구에 의해 호출되었는지를 할 수 것을 repo'의 경우 SID는 "repo"입니다. 이는 'repo' 도구에 의해 Git가 호출된 시기를 긍정적으로 식별할 수 있음을 의미합니다.
그러나 부모를 그런 식으로 식별하려면 어떤 도구가 Git를 호출하는지 알고 있고 해당 도구의 소스 코드를 수정할 수 있는 능력이 있어야 합니다.
대부분 우리가 모르는 Git를 사용하는 다양한 IDE와 래퍼를 따라잡을 수 없습니다.
어떤 도구와 래퍼가 Git를 호출하는지, 그리고 어떻게 실행하는지 학습하면 Git의 사용성과 성능을 개선할 수 있는 위치를 결정할 수 있는 통찰력을 얻을 수 있습니다.

안타깝게도 상위 프로세스의 이름을 수집할 수 있는 교차 플랫폼의 신뢰할 수 있는 방법은 없습니다.
한다면procfs존재한다면, 우리는 그것을 사용할 수 있습니다; 그렇지 않으면 우리는 다른 방법으로 그 이름을 발견해야 할 것입니다.
그러나 코드를 공유할 수 있도록 프로세스 ID는 대부분의 플랫폼에서 프로세스 이름을 검색하기에 충분해야 합니다.

for 윈도유정수보를같다기다이록으로 합니다."data_json"이벤트
하만지 이후로, 그이로."data_json"변수 형식을 가지고 있기 때문에 일부 언어에서는 효과적으로 구문 분석하기 어렵습니다. 대신 전용을 추구합니다."cmd_ancestry"현재 프로세스의 조상에 대한 정보와 일관되고 구문 분석 가능한 방법을 기록하는 이벤트.

또한 Git for 윈도우즈는 둘 이상의 상위 세대에 대한 정보를 수집합니다.
에서는 추가 를 Linux와 함께 할 수 .procfs하지만 그렇게 하는 것은 다루기 어렵습니다.
을 'Git for Windows로 cmd_ancestry에 Linux에 더 트리를 데 더 에 이 'Linux 'Linux'를 만들어 - 를 사용합니다.cmd_ancestry혈통을 이어받다

technical/api-trace2이제 관리 페이지에 다음 항목이 포함됩니다.

"cmd_ancestry"

이 이벤트에는 현재 프로세스의 부모(및 이전 세대의 부모)에 대한 텍스트 명령 이름이 가장 가까운 부모에서 가장 먼 증조부모 순으로 배열되어 있습니다.일부 플랫폼에서는 구현되지 않을 수 있습니다.

{
"event":"cmd_ancestry",
...
"ancestry":["bash","tmux: server","systemd"]
}

Git 2.34(2021년 4분기)를 통해 프로세스 조상 정보의 추적이 향상되었습니다.

커밋 2d3491b, 커밋 326460a, 커밋 6eccfc3, 커밋 48f6871, 커밋 f2cc888, 커밋 7d9c80f(2021년 8월 27일)를 Aevar Arnførd Bjarmason()avar의 커밋을 참조하십시오.
(주니오 C 하마노에 의해 합병 -- -- 76f5fdc, 2021년 9월 20일 커밋)

tr2:tr2:log N

사인 오프 바이: 애바르 아르뇌르드 비야르마손
승인 기준:테일러 블라우

2f732bf(")에서)tr2log parent process name", 2021-07-21, Git v2.34.0 -- 병합 - 상위 프로세스 이름을 기록하기 시작했지만 Windows에서 모든 부모만 기록했습니다.리눅스에서는 직접 상위 프로세스의 이름만 기록되었습니다.

여기에 추가된 기능을 확장하여 Linux에서 전체 상위 체인도 기록합니다.


Git 2.38(Q3220)을 사용하여 상세 추적 출력이 구성 변수에 대한 출력을 포함하도록 향상되었습니다.

35ae40e 커밋, Teng Long()의 커밋 050dc(2022년 8월 12일) 참조.dyrone
(주니오 C 하마노에 의해 합병 -- -- 10ccb50, 2022년 8월 29일 커밋)

api-trace2.txt인쇄 구성 키-값 쌍

승인된 사용자:텅롱

" 을값다설 " 심정관 " 는있 " 구키 " - 쌍을 tr2 그쇄 " 니습있수 인할 " 을 에 "관심 인쇄할 수 GIT_TRACE2_CONFIG_PARAMS 및 환경 변수"trace2.configparam설정합니다.

technical/api-trace2이제 관리 페이지에 다음 항목이 포함됩니다.

Config (def param) Events

trace2 로그에 "대상" 구성 값을 덤프합니다.

이벤트는 수 . 를 참조하십시오.trace2.configparams활성화 방법에 대해 설명합니다.

$ git config color.ui auto

그런 다음 구성을 표시합니다.color.ui " 있는미로" "와으성구" "
GIT_TRACE2_CONFIG_PARAMS:

$ export GIT_TRACE2_PERF_BRIEF=1
$ export GIT_TRACE2_PERF=~/log.perf
$ export GIT_TRACE2_CONFIG_PARAMS=color.ui
$ git version
...
$ cat ~/log.perf
d0 | main                     | version      |     |           |           |              | ...
d0 | main                     | start        |     |  0.001642 |           |              | /usr/local/bin/git version
d0 | main                     | cmd_name     |     |           |           |              | version (version)
d0 | main                     | def_param    |     |           |           |              | color.ui:auto
d0 | main                     | data         | r0  |  0.002100 |  0.002100 | fsync        | fsync/writeout-only:0
d0 | main                     | data         | r0  |  0.002126 |  0.002126 | fsync        | fsync/hardware-flush:0
d0 | main                     | exit         |     |  0.002142 |           |              | code:0
d0 | main                     | atexit       |     |  0.002161 |           |              | code:0

이를 다른 런타임 trace2 이벤트와 결합할 수 있습니다.

tr2키-값 쌍 외에 무조건 범위 표시

승인된 사용자:텅롱

가 정할때를 지정할 때.GIT_TRACE2_CONFIG_PARAMS또는trace2.configparams에 "" 값을 합니다. 는2 관심 "있는에니 " 인합쇄 " 값다을 " 구trace성 " 로그니 " 합ing다 " ▁trace"인 " 쇄심▁config " ▁"▁values▁to2 " 2▁will"관 "
파일에 이 설정되어 있는 과 같은 필드는 로 생략됨)."로 생략됨).

...`|` `def_param`    `|`  ...  
`|` core.multipackindex:false ...`|` `def_param`    `|`  ...  
`|` core.multipackindex:false ...`|` `def_param`    `|`  ...  
`|` core.multipackindex:false  

로그에 표시된 것처럼 서로 다른 범위에 있는 각 구성도 덤프되지만 어느 범위에서 왔는지는 알 수 없습니다.
따라서 스코프 이름을 더 잘 인식할 수 있도록 추가하는 것이 좋습니다.

추적 조합의 예:

예를 들어, 실행 시:

$ GIT_TRACE2_PERF=1 \
  GIT_TRACE2_CONFIG_PARAMS=core.multipackIndex \
  git rev-list --test-bitmap HEAD"

입니다. ( 없는 는 " 음은출여로다니다입력생됨필는략드 "없기서관는련"로합니다.)..."):

Format normal:
... git.c:461 ... def_param scope:system core.multipackindex=false
... git.c:461 ... def_param scope:global core.multipackindex=false
... git.c:461 ... def_param scope:local core.multipackindex=false


Format perf:

... | def_param    | ... | scope:system | core.multipackindex:false
... | def_param    | ... | scope:global | core.multipackindex:false
... | def_param    | ... | scope:local  | core.multipackindex:false

Format event:

{"event":"def_param", ... ,"scope":"system","param":"core.multipackindex","value":"false"}
{"event":"def_param", ... ,"scope":"global","param":"core.multipackindex","value":"false"}
{"event":"def_param", ... ,"scope":"local","param":"core.multipackindex","value":"false"}

git 명령 전에 다음 명령을 사용하면 됩니다.다음과 같은 것:

$ GIT_TRACE=true \
GIT_CURL_VERBOSE=true \
GIT_SSH_COMMAND="ssh -vvv" \
GIT_TRACE_PACK_ACCESS=true \
GIT_TRACE_PACKET=true \
GIT_TRACE_PACKFILE=true \
GIT_TRACE_PERFORMANCE=true \
GIT_TRACE_SETUP=true \
GIT_TRACE_SHALLOW=true \
git clone git://host.xz/path/to/repo.git

언급URL : https://stackoverflow.com/questions/7319357/does-git-add-have-a-verbose-switch

반응형