Git: 상태, diff 등에서 '수정된 내용'/dirty 서브모듈 항목의 나열을 억제할 수 있습니까?
(1.6.x 릴리스 즈음에) 하위 모듈 내부의 변화를 알게 된 것 같습니다.그것은 나를 짜증나게 할 뿐입니다.
$ git 상태 벤더 | grep 수정: # 수정됨: 벤더/벤더(수정된 내용)
$ git diff 벤더/diff --gita/gita/gita b/gita b/gita/gita--- a/slot/slot/slot+++ b/b/bunt/bunt/bike@@ -1 +1 @@-서브프로젝트 커밋 046c900df27994d454b7f906caa0e4226bb42b6f+서브프로젝트 커밋 046c900df27994d454b7f906caa0e4226bb42b6f-dirty
멈춰주세요.
편집:
네, 그래서 답이 있습니다.이제 또 한가지 질문이 있습니다.
이거 넣어도 되나요?~/.gitconfig
? 처음부터 그럴 수 없는 것 같고 패치를 훑어보니 유망한 것이 보이지 않았습니다. (가명을 만들 수 있을 것 같습니다.)
.gitmodules 파일 내에 추가된 모든 하위 모듈에 대해 무시 모드를 설정할 수도 있습니다.
바로 오늘 저는 이 문제에 직면했고 해결책을 찾은 후 즉시 블로그에 이 문제에 대한 기사를 썼습니다.git 하위 모듈의 변경을 무시하는 방법
그것의 요점은:
서브모듈을 추가하면 다음과 같은 이름의 파일이 표시됩니다.
.gitmodules
당신의 저장소의 근본에
거기에 한 줄만 더하면 됩니다..gitmodules
파일:
[submodule "bundle/fugitive"]
path = bundle/fugitive
url = git://github.com/tpope/vim-fugitive.git
ignore = dirty
사용자가 억제할 수 있는 변경 통지에는 두 가지 종류가 있습니다.
첫번째는untracked content
하위 모듈을 변경하지만 아직 변경하지 않았을 때 발생합니다.상위 저장소는 이를 인식하고git status
그에 따라 보고합니다.
modified: modules/media (untracked content)
다음을 사용하여 이를 억제할 수 있습니다.
[submodule "modules/media"]
path = modules/media
url = git@github.com:user/media.git
ignore = dirty
그러나 변경 사항을 커밋하면 상위 리포지토리가 다시 한 번 주의하고 그에 따라 보고합니다.
modified: modules/media (new commits)
이런 것들을 억제하고 싶다면, 당신은 무시해야 합니다.all
변화들
[submodule "modules/media"]
path = modules/media
url = git@github.com:user/media.git
ignore = all
업데이트: nilshalldenwang의 추가 가능성에 대한 답변 보기(그리고 찬성).gitmodules
지정된 하위 모듈의 dirty 상태를 무시하기 위한 config 매개 변수를 파일로 만듭니다.
ignore = dirty
그래서 1.7.2가 나왔으며 다음을 포함합니다.--ignore-submodules
에 대한 옵션status
.
부터git help status
:
--submodules [=<when>]변경사항을 찾을 때 하위 모듈에 대한 변경사항은 무시합니다. <when>은 "미추적", "미추적" 또는 "모두"일 수 있습니다.는 기본값입니다."Untracked"가 사용될 때 하위 모듈은트랙이 없는 경우에만 더러운 것으로 간주되지 않습니다.내용(수정된 내용은 여전히 검색됩니다). "dirty"를 사용하면 작업 트리의 모든 변경 사항이 무시됩니다.하위 모듈, 에 저장된 커밋에 대한 변경 사항만 해당superproject가 표시됩니다(이것은 이전의 동작이었습니다).1.7.0)."all"을 사용하면 하위 모듈에 대한 모든 변경 내용이 숨겨집니다.하위 모듈 요약의 출력을 억제합니다.config 옵션 상태.submodule summary set).
The value that I want is dirty
.
git status --ignore-submodules=dirty
I use an alias because I'm lazy:
alias gst='git status --ignore-submodules=dirty'
As you mention, the patch git submodule: ignore dirty submodules for summary and status is in the making.
Also announced in the Git 1.7.2-rc2 release:
Git v1.7.2 Release Notes (draft)
================================
Updates since v1.7.1
--------------------
"
git status
" learned "--ignore-submodules
" option.
Meaning:
git config --global diff.ignoreSubmodules dirty
Regarding this as an option is not exactly the approach chosen for now:
After this series I am planning to add a config option '
ignore
' to.gitmodules
, which can be set for each submodule to either "all", "dirty", "untracked" or "none" (the default).
"git diff
" and "git status
" will use that config value for each submodule.
Using "--ignore-submodule
" overrides this default (and the new parameter "none" will be added there to able to override the config settings).
And to avoid having to do "
git submdule sync
" every time that option changes, I would like to search for it in.git/config
first.
If it is not found there, it will be taken from.gitmodules
, if present.So users can override the setting but if they don't, upstream can change it easily (e.g. when a submodules
.gitignore
has been updated so that "ignore=untracked
" is no longer necessary anymore it can be removed).
Also switching branches will have an effect instantly if the 'ignore
' entry in.gitmodules
is different between branches.
Another approach to make git status (or any git command) to ignore a particular submodule is available with Git 2.13 (Q2 2017):
git config submodule.<name>.active false
See more at "Ignore new commits for git submodule".
You can also use
% git config [--global] submodule.ignore dirty
to set submodule.ignore = dirty
in your .git/config
file. --global
will set the ignore flag in your ~/.gitconfig
and apply to all your repositories. Without it it should set in .git/config
for just the repo you're in currently.
The only documentation I can find on this is submodule.<name>.ignore
at the git-config docs. I moved it from a .gitmodules file into my ~/.gitconfig and it's still working for me.
You need to add
ignore = dirty
to .gitmodules
I've answered this question here in greater detail.
Just run
git config --global diff.ignoreSubmodules dirty
to add a local config option to ignore those changes.
So git v1.7.2-rc2 has what I want:
$ git diff --ignore-submodules=dirty vendor # no output
$ git status --ignore-submodules=dirty vendor # On branch … nothing to commit (working directory clean)
Building your own git howto:
# get git
git clone git://git.kernel.org/pub/scm/git/git.git git
cd git
git checkout v1.7.2-rc2
# make git. beware of setting prefix
make configure
./configure --prefix=/usr/local
make
sudo make install
# you REALLY don't want to `make doc`, use this instead
sudo make quick-install-man
sudo make quick-install-html
You may not want to add ignore = dirty
to .gitmodules
, you may want to be more selective about the changes you wished to ignore.
이렇게 하려면 패턴을 추가합니다..git/submodule_foo/bar/info/exclude
,어디에submodule_foo/bar/
는 하위 모듈의 경로입니다.
패턴은 당신이 추가할 패턴과 유사합니다..gitignore
, 루트가 서브모듈 디렉토리인 경우.예를 들어, 이 패턴은 다음을 무시합니다.build
하위 모듈의 디렉토리submodule_foo/bar/
:
# in .git/submodule_foo/bar/info/exclude:
/build/
언급URL : https://stackoverflow.com/questions/3240881/git-can-i-suppress-listing-of-modified-content-dirty-submodule-entries-in-sta
'programing' 카테고리의 다른 글
Angular ui-router로 기본 상태를 설정하는 방법 (0) | 2023.09.18 |
---|---|
ReferenceError: 설명이 NodeJs로 정의되지 않았습니다. (0) | 2023.09.13 |
팬더는 조건이 충족되는 행에만 적용됩니다. (0) | 2023.09.13 |
사용자가 카메라 사용을 허락했는지 확인하는 방법은? (0) | 2023.09.13 |
utf8_unicode_ci와 utf8mb4_0900_ai_ci의 차이점은 무엇입니까? (0) | 2023.09.13 |