Giit에서build에 있는 파일을 다른 지점에서 관리하여 차별화

6907 단어 Gittech

이 기사에서 얻을 수 있는 것들


Master 분기의build 파일을 제출하지 않고git diff에서build 파일을 추출할 수 있습니다.
예: dist 디렉터리는 .gitignore이지만 dist로 디렉터리의 차이를 추출하고 싶습니다.반드시 zip으로 납품하여 데이터 차이 등을 공개해야 한다.

개시하다


물론 Giit 창고로 원본을 관리하는 것은 당연하지만,build 파일을 창고에 포함시킬지 여부는 찬반 양론이 엇갈리는 문제다.
만약build의 파일을 창고에 포함한다면 라이브러리 등의 분배는 이용자에게 편리하지만, 예를 들어 사이트의 관리에서 제출 로그가 커지고 보기 어려워지는 등 나쁜 점이 더 좋을 것이다.
그러나 이번에 사이트 관리에서build 데이터를 추출하는 차분 파일이 자주 발생하는데 창고 관리를 사용하지 않으면 git archive로 차분을 추출할 수 없다.
이번에 마스터 지점은 src 등 데이터를 관리하고 다른 지점의build 파일을 관리하며 git diff로 얻을 수 있는 팁을 소개한다.

이번 문서 구성


프로젝트 폴더


drwxr-xr-x   8 foo  staff   256  9 24 21:46 ./
drwxr-xr-x  14 foo  staff   448  9 24 21:19 ../
drwxr-xr-x  32 foo  staff  1024  9 24 21:29 node_modules/
-rw-r--r--   1 foo  staff   241  9 24 21:30 package.json
drwxr-xr-x   4 foo  staff   128  9 24 21:32 src/
-rw-r--r--   1 foo  staff  8197  9 24 21:29 yarn.lock

src 폴더


-rw-r--r--  1 foo  staff  245  9 24 21:32 about.ejs
-rw-r--r--  1 foo  staff  232  9 24 21:26 index.ejs

일단 인티리얼 커밋.


gitignore,git init 만들기


프로젝트 디렉터리가 만들어지고 추가되었습니다. git diff
# .gitignore
/dist
/node_modules
!.gitignore
다음git init, initial commiit를 추가합니다.
$ git init
$ git add .
$ git commit -m 'initial commit'

release 지점 만들기,build을 통해commiit 진행


다음.gitignore에 지점release을 만들어서 지점에서build로commiit를 진행합니다.releasegit add선택하여 강제로 무대에 오른다.
$ git checkout -b release
$ yarn ejs-cli --base-dir src/ '*.ejs' -o dist/
$ git add -f ./dist/*
$ git commit -m 'initial release commit'
이렇게 준비했어요.

실질적으로 변경 점수를 얻다


당장 마스터 지점-f에 변경commiit만 추가해 보세요.
<!-- src/index.ejs -->
-___EJS0___
+___EJS1___
$ git commit -am 'update - トップページのウェルカムメッセージを変更'

release 지점으로commiit 진행


그럼,release 지점에서 방금 수정한 것을 적용하여 차분을 추출합니다.
$ git checkout release
$ git merge master
$ yarn ejs-cli --base-dir src/ '*.ejs' -o dist/
$ git add -f ./dist/*
$ git commit -m 'release'
$ git archive --format=zip --prefix=archive/ HEAD `git diff --name-only --diff-filter=AMCR HEAD~1 HEAD` -o archive.zip
는 이로 인해 생성된 src/index.ejs에 차분archive.zip을 저장했다.
Archive:  archive.zip
   creating: archive/
   creating: archive/dist/
  inflating: archive/dist/index.html

차분 파일을 만드는 프로그램을 조개 스크립트로 변환하기


매번 상술한 절차를 수행하는 것은 매우 번거롭기 때문에 먼저 스크립트 파일을 만드는 것이 가장 좋다.
# make_diff_archive.sh
git checkout release
git merge master
yarn ejs-cli --base-dir src/ '*.ejs' -o dist/
git add -f ./dist/*
git commit -m 'release'
git archive --format=zip --prefix=archive/ HEAD `git diff --name-only --diff-filter=AMCR HEAD~1 HEAD` -o archive.zip
git checkout master
마지막으로 마스터 지점으로 되돌아갈 줄을 추가했습니다.
항목에 따라 명령 등을 적절하게 조정하세요.
나는 아직도 촌스러운 일이 많다고 생각한다.뭔가 도움이 된다면 좋겠네요.

좋은 웹페이지 즐겨찾기