본문 바로가기

Git

[Git] old mode new mode

반응형

git status 하였을때 아무런 변경사항이 없는데도 불구하고 Changes not staged for commit에 상태변화가 있었다.

그래서 git diff으로 상세 변경사항을 보니 아래와 같이 old mode와 new mode로 나오는 경우가 발생하였다.

24hours-beginner:~/test$ git diff
diff --git a/test_script.sh b/test_script.sh
old mode 100644
new mode 100755

궁금해서 검색 결과 권한을 변경 또는 부여했을 경우 이런 경우가 발생한다고 한다.

crontab에서 script 실행을 위하여 아래와 같이 권한을 설정했기에 바로 납득하였다.

chmod +x filename

이러한 변경사항을 알려주는 이유는 권한을 변경을 하여도 이게 저장 또는 변경이 안된다라고 하는듯 하다.

 

1. old mode new mode 변경사항 무시하는 방법

이 변경사항을 무시하려면 두가지의 방법이 있다.

1. git config 이용

# 현재 repository에만 적용
# .git/config
git config core.filemode false

# 글로벌 적용
# ~/.gitconfig, ~/.config/git/config
git config --global core.filemode false

(현재 repo에만 적용)그러면 아래와 같이 메일이 보내졌다고 한다.. 뭔지 모르겠다... 하지만 하고 나면 git diff 했을 때 아무것도 나오지 않은걸 확인할 수 있었다.

You have new mail in /var/mail/24hours-beginner

 

2. .gitconfig 또는 .git/config 수정

Add in ~/.gitconfig or .git/config:

 [core]
      filemode = false

여기서 참고할점은 .git/config값이 filemode = false가 기본값인지 이미 설정되어 있음에도 불구하고 저게 떴었다.

보기싫으면 false가 되어 있더라도 한번 더 false 해주는것을 추천한다.

 

2. filemode를 확인하려면

# windows powershell
git config --list --show-origin | sls filemode 

# Linux
git config --list --show-origin | grep filemode

 

참고사항 git config

더보기

'git config’라는 도구로 설정 내용을 확인하고 변경할 수 있다. Git은 이 설정에 따라 동작한다. 이때 사용하는 설정 파일은 세 가지나 된다.

  1. /etc/gitconfig 파일: 시스템의 모든 사용자와 모든 저장소에 적용되는 설정이다. git config --system 옵션으로 이 파일을 읽고 쓸 수 있다. (이 파일은 시스템 전체 설정파일이기 때문에 수정하려면 시스템의 관리자 권한이 필요하다.)
  2. ~/.gitconfig, ~/.config/git/config 파일: 특정 사용자(즉 현재 사용자)에게만 적용되는 설정이다. git config --global 옵션으로 이 파일을 읽고 쓸 수 있다. 특정 사용자의 모든 저장소 설정에 적용된다.
  3. .git/config : 이 파일은 Git 디렉토리에 있고 특정 저장소(혹은 현재 작업 중인 프로젝트)에만 적용된다. --local 옵션을 사용하면 이 파일을 사용하도록 지정할 수 있다. 하지만 기본적으로 이 옵션이 적용되어 있다. (당연히, 이 옵션을 적용하려면 Git 저장소인 디렉토리로 이동 한 후 적용할 수 있다.)
  4. 각 설정은 역순으로 우선시 된다. 그래서 .git/config  /etc/gitconfig 보다 우선한다.
 

Git - Git 최초 설정

Vim과 Emacs, Notepad++은 꽤 인기 있는 편집기로 개발자들이 즐겨 사용한다. Mac이나 Linux 같은 Unix 시스템, Windows 시스템에서 사용 가능하다. 여기서 소개하는 편집기들이 불편해서 다른 편집기를 사

git-scm.com

 

 

참조 링크

https://stackoverflow.com/questions/1257592/how-do-i-remove-files-saying-old-mode-100755-new-mode-100644-from-unstaged-cha

 

How do I remove files saying "old mode 100755 new mode 100644" from unstaged changes in Git?

For some reason, when I initially did a pull from the repository for a git project of mine, I got a ton of files in my working copy that have no discernible changes made to them, but keep showing u...

stackoverflow.com

 

반응형