मैंने उसी समस्या का सामना किया और मुझे इसके लिए एक समाधान मिला। मैंने पहली बार सभी फाइलों को केंद्रीय भंडार (डेवलपर वाले भी) में जोड़ा।
इसलिए अगर कोई डेवलपर रिपॉजिटरी से फाइल लेता है तो डेवलपर कॉन्फिगर भी होता है। इस फ़ाइल में किए गए परिवर्तन से, गिट को इन परिवर्तनों के बारे में पता नहीं होना चाहिए। इस तरह से परिवर्तनों को रिपॉजिटरी में धकेला / प्रतिबद्ध नहीं किया जा सकता है, लेकिन स्थानीय रूप से बने रहें।
मैंने इसे git कमांड का उपयोग करके हल किया है update-index --assume-unchanged
:। मैंने एक बैट फाइल बनाई, जो उन परियोजनाओं के निर्माण में निष्पादित होती है, जिनमें एक फाइल होती है, जिसके परिवर्तन को गिट द्वारा अनदेखा किया जाना चाहिए। यहाँ मैं कोड को बैट फ़ाइल में रखा गया हूँ:
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
उदाहरण के लिए, मैंने अपने प्रस्ताव में बैट फाइल को कॉल किया:
call "$(ProjectDir)\..\..\MakeFileBehaveLikeUnchangedForGit.bat" "$(ProjectDir)Web.config.developer" "$(SolutionDir)"
मुझे SO पर एक बैट फाइल मिली, जो सही कॉन्फिग फाइल को web.config / app.config में कॉपी करती है। मैं इस बैट फाइल को प्रीलिफ्ट में भी कहता हूं। इस बल्ले फ़ाइल के लिए कोड है:
@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.
उदाहरण के लिए, मैंने अपने प्रस्ताव में बैट फाइल को कॉल किया:
call "$(ProjectDir)\..\..\copyifnewer.bat" "$(ProjectDir)web.config.$(ConfigurationName)" "$(ProjectDir)web.config