mysql 데이터베이스를 덤프하고 pre-commit 훅을 사용하여 준비 영역에 .sql 덤프 파일을 추가하려고합니다. 그러면 커밋에 포함될 수 있습니다 (Windows 서버의 경우 2012 R2/IIS). 다음 코드는 데이터베이스를 멋지게 덤프하지만, 커밋 한 후에도 여전히 스테이징 영역에 be.sql 파일을 표시합니다. 가끔은 (?) - 커밋 (?) 후 준비에 파일을 추가하는 것 같습니다. 이것은 내가 커밋 한 후에는 파일을 추가 할 수있다 왜 아무 생각이 장소도지지 않습니다 그래서 훅을 미리 커밋이다힘내 사전 커밋 훅 커밋 후 파일 추가하기
#!/bin/bash
# Dump Database
/c/Program\ Files\ \(x86\)/MySQL/MySQL\ Server\ 5\.7/bin/mysqldump.exe -u root --skip-extended-insert be > /c/inetpub/wwwroot/directory/be/be.sql
# Add Database
cd /c/inetpub/wwwroot/directory/be
git add be.sql
동작이 약간 이상입니다 - 나는 be.sql가 준비 여전히 볼 수 지역 그래서 나는 커밋을합니다. 나중에 내가 상태가되면 나무가 깨끗해진다. 내가 다시 커밋하고 git status를 실행하면 스테이징 인덱스에 be.sql 파일이 수정 된 것으로 표시됩니다 (수정하지 않았습니다). 그리고 앞뒤로 간다. 그냥 .sql 파일을 덤프하고 .sql 파일을 준비 인덱스에 추가 한 다음 준비 인덱스가 깨끗할 때마다 커밋합니다. 왜 이런 일이 일어나는지에 대한 아이디어는 크게 감사 할 것입니다.
마지막 줄에 "exit 0"을 추가하십시오 (몇 개의 "internets"예에서 보았습니다) – barat
스크립트에 "cd"가있어서 현재 디렉토리에서 옮깁니다. 까닭은 약간 까다 롭습니다. - 다른 * 디렉토리에. 그러나 동시에 여러 가지 Git 환경 변수를 덮어 쓰지는 않습니다. Git이 특정 저장소, 색인 파일 및/또는 작업 트리 경로로 지시하도록 설정하면 Git이 여전히 특정 디렉토리로 이동할 수 있습니다. 잠재적으로 잘못된 파일). 나는 Git-for-Windows가 이상하고 특별한 일을하는지, "정상적인"Git인지를 확신하지 못한다. 그러나 일반적인 Git은'git'과 sub-command 사이의 인수를 기반으로 변수를 설정한다. [계속] – torek
* commit * hooks (pre-commit, edit-commit-msg)는'GIT_INDEX_FILE'가 설정된 상태로 실행됩니다. 다행히도 인덱스 파일 (스테이징 영역)을 수정하는 것은 Git 버전 1.5.4 이후로 사전 커밋 훅에서 명시 적으로 허용됩니다. 그러나 경로가 상대 경로 일 수 있으며, 다른 경로로 이동하는 경우 경로를 조정해야합니다. – torek