라벨이 git인 게시물 표시

Gitlab으로 CI/CD하기( DevOps 구축 )

DevOps = Development + Operations 개발 조직과 운영 조직을 융합하기 위한 개발 방법론이다. 운영 조직에서는 서비스를 안정적으로 운영, 확장, 관리하는 것이 중요하다. 트래픽 모니터링, 재고 용량에 대해서 모니터링 등의 작업을 수행한다. 개발 조직에서는 기획에 따라서 새로운 기능을 개발하거나, 버그 수정, 성능 최적화 등을 수행한다. 어떤 작업을 수행하든 코드의 변경이 운영 조직에 영향을 미치고 결국에는 운영 서버에 반영돼야한다.

Git commands(branch, checkout, update 및 pull error 해결)

이미지
- git branch <new branch name> : 새 브랜치 생성 - git branch -a : local, remote의 branch 목록을 전부 출력. - git checkout <branch name> : 현 작업공간(현 branch)에서 <branch name>으로 이동 - git remote update : remote에서의 변경 사항을 갱신 Error 원인 및 해결법 사례1 : git pull <branch name> 할 때 다음과 같은 에러가 뜸. error: The following untracked working tree files would be overwritten by checkout: .idea/.gitignore .idea/inspectionProfiles/profiles_settings.xml .idea/modules.xml .idea/vcs.xml .idea/xxx.iml Please move or remove them before you merge. untrack 되는 파일들을 pull 하려고 할 때 로컬에 있는 파일들이 덮어씌워주기 때문에 경고가 생기는 케이스다. untrack할 파일들을 미리 .gitignore에 리스팅해두고 커밋했어야했지만 그러지 않았기 때문에 생긴다. 이 파일들이 속해있는 폴더 .idea 폴더는 IDE에서는 보이지 않지만 파일탐색기를 타고 들어가보면 다음과 같이 존재한다. .idea는 프로젝트의 메타데이터이기 때문에 프로그래머가 직접 수정할일이 없어서  IDE 프로젝트 트리에는 보여주지 않지만 Git으로 관리할 때는 여전히 관리 대상이다. 보통 .idea는 untrack 되는 파일로, .gitignore의 대상이다. 이미 .idea를 포함한채로 commit 했기 때문에  다시 .gitignore에 포함시키려면 별도의 작업이 필요하다. 이 작업에 대해서는 다음 포스팅을 참고한다. https://cpusuite.blogspot.com/2022...

Git .gitignore 사용법 ( .idea/를 gitignore 해, 말아?)

.gitigrnore는 git의 관리 대상으로 넣지 않을 파일들이 리스팅되어있는 파일이다. 간혹 .gitigrnore에 관리 대상으로 넣지 않을 파일들을 리스팅 했지만 실제 커밋하다보면 반영되지 않는 경우가 있다. .gitignore는 새로 추가되어서 아직 track되지 않는 파일들만 무시하기 때문이다. a파일을 생성하고(자의적으로든 Pycharm 프로젝트가 자동으로 생성했든) .gitignore에 리스팅하지 않은 채 이미 remote 저장소에 커밋했다면, 커밋 후에 a파일을 .girigrnore 파일에 리스팅해도 이미 a파일은 track되고 있다. 이런 경우에는 다음과 같은 조치를 취해야한다. 1 git rm --cached -r .idea/     -> 리포지토리로부터 .idea를 삭제한다. 2 echo '.idea' >> .gitignore    -> gitignore 파일을 갱신한다. 3 .git add .gitignore             ->  gitignore 파일을 add하고 커밋. 4 git 커밋 후 push .idea파일 또는 폴더를 삭제할 수 없다고 뜰 때는, 마지막 argument에 실제 경로를 기입해야한다. .idea/의 상위폴더가 utils라면 utils/.idea로 되어 있을 때에는 후자로 기입해야한다. 스택 오버플로글을 찾아보면 1에서 git rm -r --cached . 를 사용하라라는 답변이 있는데 댓글로 캐시된 파일 전부를 지우는건 과하다 라는 의견이 있다. 대댓글로, '큰 프로젝트를 관리할 때는 파일 하나하나 다 리스팅 하기 번거롭다' 라는 의견이 있고 rm -r --cached 이후에 gitignore갱신 뒤 add . 을 하지 않으면 remoted 브랜치와 차이가 생기기 때문에 문제가 발생할 요지가 있다. 참고로 git rm -h로 알 수 있는 rm -r의 정체는 rec...

Git commands(reset, revert)

 reset 이력을 되돌리고자하는 그 당시 상태로 되돌린다. git reset <옵션> <돌아가고싶은 커밋> ex) git reset <옵션> ebf3fgh9 ebf3fgh9 이후의 내용과 상태는 옵션에 따라 달라진다. 옵션은 3가지 ( hard, mixed, soft )가 있다. git reset --hard ebf3fgh9 ebf3fgh9로 돌아간다. 돌아가려는 이력이후의 모든 내용을 지워 버린다. git reset --soft ebf3fgh9 ebf3fgh9로 돌아간다. 이후의 커밋의 내용, 스테이지가 그대로 남아있어서  바로 커밋할 수 있는 상태로 돌아간다. git reset --mixed ebf3fgh9 git reset ebf3fgh9 ( 옵션을 공백으로 둘 때는 기본적으로 --mixed로 작동한다. ) ebf3gfgh9로 돌아간다.이후에 변경된 내용들은 남아있지만 인덱스는 초기화됨. 커밋을 하려면 다시 변경된 내용은 추가해야 하는 상태이다. revert revert는 이전 이력은 그대로 두고, 되돌릴 커밋의 코드(내용)만 원복시킴. git revert <원복시킬 커밋> git revert 2664ce8 git revert 2664ce8..19fgk99(여러개 범위의 커밋을 지정해서 원복) 하지만 이력 중간의 특정 커밋을 reset을 사용하여 취소하려고 한다면  이후 이력을 모두 날려버리게 된다. 이런 때 revert를 사용하여 특정 커밋의 내용만 되돌릴 수 있다. 또한 이미 원격 리파지토리에 push 를 한 상태라면 reset을 사용하면 reset 하기 이전으로 되돌리기 전까지는 push 할 수 없게됩니다.  force 옵션은 위험하니 최후의 수단으로 가지고 있는다. 이미 push 한 코드라면 미련을 버리고 revert로 커밋을 되돌려야한다. -> 왜? push를 하게되면 가장 최신의 commit을 기준으로 브랜치에 반영된다.     0-1-2-3-...

Git commands(diff, stash)

 git diff branch_a branch_b branch_a와 branch_b 의 차이를 터미널에 보여준다. ex) git diff origin/master origin/feature_a git stash branch_a에서 작업을 하다가 다른 브랜치로 넘어가야 할 때 작업한 내용을 임시로 백업할 때 사용한다. commit을 해도 되긴하지만,  작업 도중인 중간 결과물을 commit 할 때에는 커밋 메시지도 뭐라고 넣을지 애매하고  취소할 때 귀찮기 때문에 stash가 용이하다. commit은 local에 변경 내용을 반영시키는 절차라서, 아직 반영 시킬 준비가 안 됐을 때 stash를 쓰면 용이하다.  git stash list 백업된(stashed) 내용을 보여준다. git stash apply stash@{0) (stash 이름으로 가져오기) or git stash apply 0  (stash 인덱스 번호로 가져오기) stash된 내용을 다시 불러올 때 사용한다. apply 뒤에 인자를 부여하지 않고 git stash apply만 입력하면 가장 최근의 stashed 백업을 가져온다. git stash drop stash@{0}  (stash 이름으로 삭제) or git stash drop 0  (인덱스 번호로 삭제) 특정 stash를 삭제할 때 사용 git stash branch new_branch stash된 내용으로 새로운 브랜치(new_branch)를 생성할 때 사용.  <참고 링크> https://backlog.com/git-tutorial/kr/ https://itholic.github.io/git-stash/

이 블로그의 인기 게시물

실무진 면접 경험으로 정리하는 백엔드 (1) : 에듀 테크 기업 면접

노마드코더 개발자북클럽 Clean code TIL 6 : 6장. 객체와 자료구조

백엔드 개발자가 Djnago fullstack 사이드 프로젝트를하며 ( html, css, vanillaJS 그리고 JS프레임워크 )