Git 사용방법 정리

Gitea 서버를 구축해서 사용하고 있습니다. 보통 사용하는 CLI git사용방법을 정리합니다. 필요에따라 업데이트 되는 글 내용으로 완성된 글이 아닙니다.

Git이란?

Git은 분산 버전 관리 시스템으로, 소스 코드의 변경 사항을 추적하고 여러 개발자들 간에 협업을 용이하게 만드는 도구입니다. Git을 사용하면 파일의 추가, 수정, 삭제 등의 모든 변경 이력을 저장하고 관리할 수 있어 이전 상태로 복원하거나 협업 중 발생하는 충돌을 해결하는 데 유용합니다.


git commit 되돌리기(복원)

로컬(origin)에서 작업을하고 원격지 main브랜치로 push를 하였습니다.
해당 기능을 폐기하고 적용을 초기화하고자 사용한 방법입니다.

로컬 commit 되돌리기

gitea 웹콘솔에서 커밋 버전을 확인하고 되돌릴 hash값을 조회합니다.

로컬의 commit 상태를 이전 상태로 되돌립니다.
새로 작성된 코드 파일은 남아있으니 파일은 직접 제거 해야합니다.

git reset --hard <commit-hash>

원격지도 되돌려줍니다.

git push origin <브랜치 > --force

branch, dev 브랜치를 이용한 관리

다양한 브랜치 전략과 방법론이 있지만 단순하게 dev와 main만 이용하고자 합니다.
혼자 작업중이자만 이전 작업에서 main을 되돌리는게 상당히 귀찮다는 것을 알게되었으므로…

branch를 생성하고 확인합니다.

생성된 branch 전환

git checkout dev

원격 저장소에 branch적용

git push origin dev

push를 하면 아래와 같이 에러가 발생할수 있습니다. 동기화가 되도록 설정합니다.


branch 병합

dev에서 작성한 코드를 main브랜치에 적용해야 됩니다.

현재 브랜치 상태 조회

git branch

병합해야되는 main브랜치로 전환

git checkout main

병합 및 push

git merge dev
git add .
git commit -m "Test, branch merge."
git push

웹 콘솔에서 잘 적용되고 CI 빌드도 정상적으로 동작되는 것을 확인 하였습니다.

CI 빌드작업은 브랜치 머지와 별개로 설정해야하는 부분 입니다. 별도 설정이 없으면 적용되지 않음.

Git Remote 변경하기

새로운 Gitea에서 초기화하지않고 Repository를 생성

git remote를 확인

git remote -v

git remote 교체 새로운 Gitea의 Repository URL로 변경

git remote set-url origin https://gitea.example.com/admin/example.git

git push

git push --mirror

.env같은 보안에 중요한 파일을 잘못 올렸을때

git-filter-repo설치

pip install git-filter-repo
# 삭제 동작
git filter-repo --path .env.prd --invert-paths

# 안되면 강제 실행
git filter-repo --path .env.prd --invert-paths --force

# 출력결과 예시
NOTICE: Removing 'origin' remote; see 'Why is my origin removed?'
        in the manual if you want to push back there.
        (was https://gitea.icurfer.com/icurfer/butler_ddochi.git)
Parsed 84 commits
New history written in 2.17 seconds; now repacking/cleaning...
Repacking your repo and cleaning out old unneeded objects
Enumerating objects: 1125, done.
Counting objects: 100% (1125/1125), done.
Delta compression using up to 8 threads
Compressing objects: 100% (570/570), done.
Writing objects: 100% (1125/1125), done.
Completely finished after 5.01 seconds.

# 원격지 정보가 삭제되므로 다시 등록필요.
git remote add origin https://gitea.icurfer.com/icurfer/butler_ddochi.git

# 동기화
git push --set-upstream origin main

# 이전 기록들과 충돌나면 강제 실행
git push --set-upstream origin main --force