Git에서 로컬 변경 사항이 푸시되지 않도록 방지
저장소를 복제했고 저장소의 master분기가 추적 중 origin/master입니다. 내가 만든 work지점 및 응용 프로그램 작업을 만들기 위해 내 dev에 컴퓨터에 어떤 설정 파일의 특정을 변경했습니다.
내 일반적인 작업 흐름은 master분기 로 전환하고 분기에서 변경 한 내용 work과 push해당 변경 사항을 업스트림 으로 병합 하는 것입니다. 문제는 특정 chnages가 푸시되는 것을 원하지 않는다는 것입니다. 내 work분기를 병합하면 master변경 사항도 병합됩니다.
지금까지 찾은 유일한 해결책은 이러한 변경 사항을 적용 work하지 않는 것이지만 만족스러운 해결책은 아닙니다.
이러한 로컬 구성 파일의 커밋을 방지 (푸시)하려면 git update-index --assume-unchanged를 사용할 수 있습니다 . 이 플래그가 표시된 파일은 변경되지 않는 것으로 간주됩니다 (--no-assume-unchanged로 플래그를 재설정 할 때까지)
파일이 아직 추적되고 있지 않은 경우 로컬 저장소의 .gitignore 파일에 추가 할 수 있습니다. 그렇지 않으면 git update-index --assume-unchangedMauricio가 말한 것처럼 사용해야 합니다.
다음은 .gitignore 파일에 대한 자세한 정보입니다.
http://git-scm.com/docs/gitignore
이를 해결하는 한 가지 방법은 업스트림을 푸시하기 전에 작업 분기에서 마스터로 각 변경 사항을 "체리 선택"하는 것입니다. 로컬 변경에 대해서만 커밋 메시지에 NOCOMMIT와 같은 단어를 포함시킨 다음 다음과 같은 쉘 스크립트를 사용하는 기술을 사용했습니다.
#!/bin/sh
BRANCH=`git branch | grep ^\\* | cut -d' ' -f2`
if [ $BRANCH != "master" ]; then
echo "$0: Current branch is not master"
exit 1
fi
git log --pretty=oneline work...master | grep -v -E '(NOCOMMIT|DEBUG):' | cut -d' ' -f1 | tac | xargs -l git cherry-pick
이렇게 하면 NOCOMMIT (또는 DEBUG)로 표시 되지 않은 각 변경 사항이 마스터 분기로 선택됩니다.
필요한 것은 .gitignore 파일이고 .gitignore 파일 안에 모든 구성 파일을 추가하는 것입니다.
.gitignore 파일이 준비되면 캐시에서 구성 파일을 제거해야 할 수 있습니다.
다음은 명령입니다.
(Assume you use linux)
vi .gitignore
//Add all your config file inside
//run the following command to remove your config file from GIT cache if your config files is already track by GIT
git rm --cached myconfig.php
참고 URL : https://stackoverflow.com/questions/2173726/prevent-local-changes-getting-pushed-in-git
'program story' 카테고리의 다른 글
| git 명령에서 'origin'과 'remote'의 차이점은 무엇입니까? (0) | 2020.11.28 |
|---|---|
| 실제 서버가 deflate 인코딩보다 gzip을 선호하는 이유는 무엇입니까? (0) | 2020.11.28 |
| 동기화 된 절 내에서 예외를 throw하면 부작용이 있습니까? (0) | 2020.11.27 |
| 왜 java.security.NoSuchProviderException 그런 공급자가 없습니까 : BC? (0) | 2020.11.27 |
| Visual Studio에서 우선 순위가 높은 TODO 주석을 어떻게 추가합니까? (0) | 2020.11.27 |