git을 커밋하기 전에 파일에서 변경된 내용을 확인하려면 어떻게 해야 합니까?
한두 장의 티켓 작업을 하다 보면 자리를 비우면 무엇을 작업했는지, 무엇이 바뀌었는지 등을 잘 모르겠다는 것을 눈치챘습니다.
git add 후 git commit하기 전에 주어진 파일의 변경 사항을 볼 수 있는 방법이 있습니까?
찾으시는 제품
git diff --staged
정확한 상황에 따라 세 가지 유용한 사용 방법이 있습니다.git diff
:
- 인덱스와 작업 트리 간의 차이를 표시합니다. 즉, 커밋하기 위해 준비하지 않은 변경 사항:
git diff [filename]
- 현재 커밋과 인덱스 간의 차이를 표시합니다. 즉, 커밋하려는 항목(
--staged
정확하게 동일한 작업을 수행합니다. 원하는 작업을 사용합니다.):
git diff --cached [filename]
- 현재 커밋과 작업 트리 간의 차이 표시:
git diff HEAD [filename]
git diff
는 디렉터리에서 반복적으로 작동하며 경로가 지정되지 않은 경우 모든 변경 사항을 표시합니다.
사용:
git diff -- yourfile
나를 위해.git add -p
모든 미단계 변경사항을 검토하고(각 파일에 대한 차이를 보여주는), 커밋과 함께 수행해야 하는 좋은 변경사항 집합을 선택한 다음, 이러한 변경사항을 모두 준비한 후 사용하는 것이 가장 유용한 방법입니다.git commit
다음 커밋을 위해 반복합니다.그런 다음 다양한 파일에서 변경된 경우에도 각 커밋을 유용하거나 의미 있는 변경 집합으로 만들 수 있습니다.또한 각 티켓 또는 유사한 활동에 대해 새로운 지점을 만들고 다음을 사용하여 전환할 것을 제안합니다.checkout
(사용자 정의)git stash
전환하기 전에 커밋하지 않으려는 경우), 그러나 빠른 변경을 많이 수행하는 경우에는 문제가 될 수 있습니다.자주 합병하는 것을 잊지 마세요.
git diff filename
작업 트리와 인덱스 또는 트리 간의 변경 사항, 인덱스와 트리 간의 변경 사항, 두 트리 간의 변경 사항 또는 디스크의 두 파일 간의 변경 사항을 표시합니다.
파일이 아니라 변경 사항을 커밋하는 것입니다.
이러한 이유로, 제가 사용하지 않는 것은 매우 드문 일입니다.git add -p
(또는 Magit 등가물)을 클릭하여 변경사항을 추가합니다.
git diff <path>/filename
경로는 파일까지 완전한 시스템 경로가 될 수 있습니다.
프로젝트에 있는 경우 수정된 파일 경로도 붙여넣습니다.
경로가 있는 수정된 파일의 경우:git status
제 경우는 파일 목록에 관심이 없을 때입니다.다 보여주세요.
이미 실행했을 때git add
파일 목록과 함께:
$ git diff --cached $(git diff --cached --name-only)
최신 버전의git
사용할 수 있습니다.--staged
또한, 이것은 동의어입니다.--cached
.
파일을 추가하지 않았지만 추가하지 않은 경우에도 동일하게 사용할 수 있습니다.--cached
선택.
$ git diff $(git diff --name-only)
캐시된 옵션에 대한 Git 명령 별칭:
$ git config --global alias.diff-cached '!git diff --cached $(git diff --cached --name-only)'
해당 Git repo로 이동한 다음 다음 명령을 실행합니다.
gitdiff 파일 이름
변경사항이 표시된 파일이 열립니다. 파일을 아래로 스크롤하려면 return/enter 키를 누릅니다.
P.S. 파일 이름에는 파일의 전체 경로가 포함되어야 합니다. 그렇지 않으면 파일의 해당 디렉터리/폴더에 들어가 전체 파일 경로 없이 실행할 수 있습니다.
또한 Git-friendly 텍스트 편집기를 사용할 수 있습니다.수정된 선에 색상, 추가된 선에 대한 다른 색상, 삭제된 선에 대한 다른 색상 등을 표시합니다.
이를 수행하는 좋은 텍스트 편집기는 GitHub의 Atom 1.0입니다.
일부 경로의 경우 다른 응답이 양식의 오류를 반환합니다.fatal: ambiguous argument
.
이러한 경우 diff에는 파일 이름 인수와 커밋 문자열을 구분하는 구분 기호가 필요합니다.예를 들어 질문에 답하려면 다음을 실행해야 합니다.
$ git diff --cached -- <path-to-file>
이렇게 하면 수정된 파일과 마지막 커밋 간의 변경 내용이 표시됩니다.
반면에:
git diff --cached HEAD~3 <path-to-file>
의 로컬 버전과 3개의 커밋 전 버전 간의 변경 내용이 표시됩니다.
변경한 파일이 확실하지 않고 로컬 지점에 커밋하기 전에 변경 내용을 알고 싶다면 다음을 사용합니다.git add -p
로컬에 추가하기 전에 변경사항을 확인할 수 있습니다.이 쿼리 사용
이 헝크를 스테이징 [y,n,q,a,d,/,j,J,g,e,?]하면 변경 스테이징, 변경 스테이징 안 함 등과 같은 여러 옵션이 제공됩니다.
다른 옵션: q - 종료; 이 헝크 또는 나머지 어떤 것도 준비하지 않음 - 파일에서 이 헝크 및 모든 이후의 헝크를 준비하지 않음 - 파일에서 이 헝크 또는 이후의 헝크도 준비하지 않음 - 이동할 헝크 선택 / - 지정된 정규식 j와 일치하는 헝크 검색 - 이 헝크를 결정하지 않음,다음 미정의 Hunk J 보기 - 이 Hunk를 미정으로 유지, 다음 Hunk 보기 - 이 Hunk를 미정으로 유지, 이전 Hunk 보기 - 이 Hunk를 미정으로 유지, 이전 Hunk 보기 - 현재 Hunk를 더 작은 Hunk로 분할 - 현재 Hunk를 수동으로 편집? - 인쇄 도움말
도움이 되길..해피 기팅...
언급URL : https://stackoverflow.com/questions/4456532/how-can-i-see-what-has-changed-in-a-file-before-committing-to-git
'source' 카테고리의 다른 글
문서화 수행DB는 쿼리에서 LIKE 키워드를 지원합니까? (0) | 2023.05.10 |
---|---|
HTTP 프록시를 통해 Git 저장소에서 가져오려면 어떻게 해야 합니까? (0) | 2023.05.10 |
FormGroup을 사용하는 경우와양식 배열? (0) | 2023.05.10 |
Xcode 8 베타 - 현재 Swift 구문으로 변환 실패:테스트 호스트를 찾을 수 없습니다. (0) | 2023.05.10 |
여러 항목(고정 텍스트 및/또는 변수 값)을 한 줄에 동시에 인쇄하려면 어떻게 해야 합니까? (0) | 2023.05.10 |