저장소
-
[Git] 특정 브랜치에서 main(master) 브랜치 merge(push) 막기저장소/git 2022. 7. 3. 15:45
특정 브랜치에서 main 또는 master 브랜치에 merge 또는 push되는 것을 막는 방법을 설명합니다. 아래 설명에서는 develop → main이 되지 않도록 예시를 듭니다. github branch protection rule 추가 repository에서 Settings → Branches에 들어간 다음 Branch protection rules 에서 Add rule 을 클릭합니다. 그 다음, Branch name pattern에 아래의 룰을 적용할 패턴을 추가하고 (여기서는 main 브랜치명을 그대로 적습니다.) Require a pull request before merging 을 체크합니다. 체크하면 하위 리스트가 나오게 되는데 Require approvals 를 체크해제 하지 않고 몇명..
-
[Git] 쉘 스크립트 권한 추가해서 푸시하기저장소/git 2022. 4. 13. 19:48
로컬에서 git에 배포 → 서버에서 해당 브랜치 내려받기 이후 쉘 스크립트의 권한을 서버 내에서 직접 변경하게 되면 git은 이를 파일 변경으로 판단하게 됩니다. 따라서 로컬에서 쉘 스크립트를 git에 배포할 때, 아래와 같이 권한을 업데이트 해줘야 합니다. 권한 확인 git ls-tree HEAD 현재 디렉토리에 위치한 파일들의 퍼미션을 확인할 수 있습니다. 가장 왼쪽에 숫자로 표시가 되는데 해당 숫자에서 뒤의 3자리가 644면 실행 권한이 없는 상태라고 볼 수 있습니다. 권한 추가 # git update-index --chmod=+x 쉘스크립트 파일 git update-index --chmod=+x run.sh 권한 제거 # git update-index --chmod=-x 쉘스크립트 파일 git u..
-
[Git] Branch 전략 - merge, rebase, squash란저장소/git 2022. 2. 27. 16:52
git에서 브랜치를 합치는 전략으로 merge, rebase, squash가 있습니다. merge merge는 가장 간단한 병합 방법으로 크게 2가지의 방식이 많이 사용됩니다. Fast-forward develop 브랜치에서 test-child라는 브랜치를 생성했다고 가정합니다. test-child 브랜치에서 작업을 하고 서버에 푸시까지 완료가 됐다면 아래와 같이 develop 브랜치보다 커밋 포인터가 한칸 위로 올라가있는 것을 볼 수 있습니다. * commit af320b4bc8b555b23e1340db4604958992be9836 (HEAD -> test-child, origin/test-child) | Author: brownbear | Date: Sun Feb 27 15:23:40 2022 +09..
-
[Git] 체리픽 (Cherry-pick)저장소/git 2022. 2. 5. 19:49
git cherry-pick은 다른 브랜치에 있는 커밋을 선택하여 내 브랜치에 적용시킬 때 사용하는 명령어입니다. rebase도 원하는 커밋을 선택할 수 있지만 현재 브랜치 위에서만 가능합니다. 다른 브랜치의 commit을 가져오고 싶다면 해당 브랜치를 현재 브랜치로 merge 후 rebase 해야합니다. cherry-pick은 같은 내용을 같고 있는 커밋을 여러개 생성하기 때문에 꼭 사용해야만 할 때 진행하는 것이 좋습니다. 커밋 체리픽 아래와 같이 있다고 가정할 때, feature/#1 브랜치의 커밋 중 34b4cab 와 13f03ab 를 현재 master 브랜치에서 적용한다고 하면 다음과 같이 진행할 수 있습니다. # git cherry-pick {커밋 해시} git cherry-pick 34b4c..
-
[Git] 브랜치 전략 - GitLab Flow저장소/git 2022. 2. 5. 18:50
Github flow는 너무 간단해서 배포, 릴리즈 등의 조금 복잡한 이슈를 보완하기 위해 나온 전략입니다. Gitlab flow의 브랜치는 아래와 같이 사용을 합니다. 브랜치 설명 feature 모든 기능 구현은 feature 브랜치에서 시작합니다. feature 브랜치는 master 브랜치에서 분기되고 머지됩니다. master gitlab flow의 master 브랜치 역할은 git flow의 develop 브랜치와 동일합니다. master 브랜치는 feature 브랜치에서 병합된 기능에 대해 test를 진행합니다. 전체적인 테스트가 진행되어 기능에 대한 보장이 되었다면 production 브랜치로 머지합니다. 만약 staging 단계를 원한다면 pre-production 브랜치로 머지를 진행합니다...
-
[Git] 여러 커밋 revert 하기저장소/git 2022. 2. 5. 17:59
1개의 브랜치에서 여러 커밋을 진행한 후, master에 머지를 했다가 해당 작업물에 문제가 생겼다면 머지 이전으로 되돌아가야 합니다. 하지만 이 때, 커밋 내용이 여러개이므로 squash를 진행하지 않았다면 당황하게 됩니다. 여기서는 여러 커밋 내용을 1번에 revert 하는 방법을 설명하겠습니다. merge가 완료된 상태에서 revert 하기 먼저 아래와 같은 형태로 브랜치 그래프가 있다고 가정합니다. * commit 9aed3a99358ccc5bbfd2dd99d29a82273115801a (HEAD -> master) |\ Merge: ccdd474 9796ce6 | | Author: brownbear | | Date: Sat Feb 5 16:13:16 2022 +0900 | | | | Merge ..
-
[Git] 브랜치 전략 - Github flow저장소/git 2022. 2. 2. 02:16
브랜치 전략이란? 브랜치 전략이란 여러 개발자가 1개의 저장소를 사용하는 환경에서 효과적으로 활용하기 위해 나온 개념입니다. 브랜치 생성, 병합 등의 git 구조를 활용해 보다 효율적으로 소스를 관리하고 협업을 원활하게 할 수 있도록 도와줍니다. 브랜치 전략은 Git flow, GitLab flow, Github flow 3개로 보통 사용하고 있습니다. Github flow github flow는 git flow가 github에서는 사용하기가 복잡하다고 하여 나온 전략으로 위 3개의 전략 중 가장 간단한 전략입니다. 위의 flow가 단순한 만큼 사용법도 단순합니다. master 브랜치의 역할만 확실히 지켜진다면 다른 브랜치에 대해 관여를 하지 않습니다. 즉, master 브랜치를 제외하고 feature,..
-
[Github Action] GCS(Google Cloud Storage)에 코드 배포하기저장소/git 2022. 2. 1. 21:31
GCS는 AWS의 S3와 동일한 개념으로 보면 됩니다. 여기서는 github action을 사용하여 특정 브랜치에 코드가 푸시됐을 때, GCS에 자동으로 배포하는 프로세스를 설명합니다. 배포를 위해선 gcloud / gutil CLI를 사용해야 합니다. github action에서는 우리가 직접 설치할 필요 없이 마켓 플레이스에 있는 버전을 사용하면 됩니다. Set up gcloud Cloud SDK environment - GitHub Marketplace 현재 bq 나 gutil 에서는 워크로드 아이덴티티 제휴를 사용하지 못하고 기존 방식인 json key file을 매핑해야 합니다. GitHub - google-github-actions/auth: GitHub Action for authentica..
-
[Github Action] GCP 워크로드 아이덴티티 제휴 (Workload Identity Federation) 연결하기저장소/git 2022. 2. 1. 16:36
GCP 워크로드 아이덴티티 제휴에 대해선 여기에서 설명하고 있습니다. Github Action에서 GCP 리소스를 접근하기 위해선 서비스계정의 key file 내용을 scret 에 등록하는 방법과 워크로드 아이덴티티 제휴를 사용하는 방법이 있습니다. 하지만 서비스 계정 방식은 deprecated될 거라고 하기 때문에 아래에서는 워크로드 아이덴티티 제휴 방식을 사용하여 연결하는 것을 설명하도록 하겠습니다. 아래는 github action marketplace의 문서입니다. Set up gcloud Cloud SDK environment - GitHub Marketplace 위 github 문서를 보면 service_account_key 방식은 deprecated 될 거라 나와 있습니다. 그리고 servic..
-
[Github Action] 특정 시간마다 브랜치 삭제 & 생성하기저장소/git 2022. 1. 29. 23:44
아래는 schedule을 사용하여 새벽 6시마다 브랜치를 삭제하고 생성하는 예제입니다. name: Delete Branch & Create Branch on: schedule: - cron: '0 21 * * *' jobs: delete-branch: runs-on: ubuntu-latest steps: - name: Delete branch uses: dawidd6/action-delete-branch@v3 with: github_token: ${{github.token}} branches: test-branch create-branch: needs: delete-branch runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v..