Tôi đã đối mặt với vấn đề tương tự và tôi đã tìm ra giải pháp cho nó. Đầu tiên tôi đã thêm tất cả các tệp vào kho lưu trữ trung tâm (cũng là các tệp của nhà phát triển).
Vì vậy, nếu một nhà phát triển tìm nạp các tệp từ kho lưu trữ, cấu hình nhà phát triển cũng ở đó. Khi thay đổi được thực hiện đối với tệp này, Git không nên biết về những thay đổi này. Bằng cách đó, các thay đổi không thể được đẩy / cam kết vào kho lưu trữ mà vẫn ở cục bộ.
Tôi giải quyết điều này bằng cách sử dụng lệnh git: update-index --assume-unchanged
. Tôi đã tạo một tệp dơi được thực thi trong bản dựng trước của các dự án có chứa tệp mà các thay đổi sẽ bị Git bỏ qua. Đây là mã tôi đặt trong tệp bat:
IF NOT EXIST %2%\.git GOTO NOGIT
set fileName=%1
set fileName=%fileName:\=/%
for /f "useback tokens=*" %%a in ('%fileName%') do set fileName=%%~a
set "gitUpdate=git update-index --assume-unchanged"
set parameter= "%gitUpdate% %fileName%"
echo %parameter% as parameter for git
"C:\Program Files (x86)\Git\bin\sh.exe" --login -i -c %parameter%
echo Make FIleBehaveLikeUnchangedForGit Done.
GOTO END
:NOGIT
echo no git here.
echo %2%
:END
Trong bản dựng trước của mình, tôi sẽ thực hiện một cuộc gọi đến tệp dơi, ví dụ:
call "$(ProjectDir)\..\..\MakeFileBehaveLikeUnchangedForGit.bat" "$(ProjectDir)Web.config.developer" "$(SolutionDir)"
Tôi đã tìm thấy trên SO một tệp bat sao chép tệp cấu hình chính xác vào web.config / app.config. Tôi cũng gọi đây là tệp dơi trong bản dựng sẵn. Mã cho tệp dơi này là:
@echo off
echo Comparing two files: %1 with %2
if not exist %1 goto File1NotFound
if not exist %2 goto File2NotFound
fc %1 %2
if %ERRORLEVEL%==0 GOTO NoCopy
echo Files are not the same. Copying %1 over %2
copy %1 %2 /y & goto END
:NoCopy
echo Files are the same. Did nothing
goto END
:File1NotFound
echo %1 not found.
goto END
:File2NotFound
copy %1 %2 /y
goto END
:END
echo Done.
Trong bản dựng trước của mình, tôi sẽ thực hiện một cuộc gọi đến tệp dơi, ví dụ:
call "$(ProjectDir)\..\..\copyifnewer.bat" "$(ProjectDir)web.config.$(ConfigurationName)" "$(ProjectDir)web.config