🌈 기술스택/Git
실수를 되돌리는 방법들 (restore, reset, revert)
실수를 되돌리는 방법들 (restore, reset, revert)
2021.10.24마음 아프지만 실수는 누구나 하는 것 😢 Git으로 프로젝트를 관리하다 보면 종종 실수를 합니다. 오타를 낸 상태로 커밋 메시지를 저장하기도 하고, 때로는 문제가 해결되지 않은 코드를 그대로 커밋하는 경우도 있을 수 있습니다. 저도 정말 많이 겪은 실수들인데 이럴 때 되돌아가는 방법을 몰라서 항상 프로젝트를 다시 클론하거나, 완전히 지운 다음 처음부터 다시 시작하곤 했습니다. 작은 실수라도 문제이지만, 치명적인 영향을 주는 실수라면.. 생각만 해도 벌써부터 현기증이 나네요 ㅂㄷㅂㄷ 다행히 Git은 실수가 발생했을 때, 되돌릴 수 있도록 다양한 명령을 제공하고 있습니다. 최근 커밋 수정하기 변경 내역을 커밋할 때 메시지를 잘못 작성했으면 다음 명령을 사용하면 됩니다. $ git commit --amend ..
Stash로 변경 이력 임시 저장하기
Stash로 변경 이력 임시 저장하기
2021.10.24변경 이력을 잠시 저장해야 하는 경우 💦 프로젝트에서 자신이 맡은 기능을 열심히 구현하고 있는데, 중간에 다른 브랜치를 확인해야 하는 경우가 발생할 수 있습니다. 그런데 커밋을 하지 않고 이동하게 되면, 현재 브랜치의 워킹 디렉토리에서 작업 중이던 내용들이 해당 브랜치에서도 함께 보이기 때문에 반드시 커밋을 하고 넘어가야 합니다. 하지만 커밋을 하기 애매한 경우라면 정말 곤란할 것입니다. 이때 사용할 수 있는 것이 git stash입니다. 이 명령은 stash stack이라는 공간에 현재 작업 중인 내역(WIP: Working In Progress)들을 임시적으로 저장할 수 있는 명령입니다. 스택 구조를 띄고 있기 때문에 stash 명령으로 저장한 이력의 위로 나중에 저장한 이력들이 계속해서 쌓이게 됩니..
Merge와 Rebase 알아보기
Merge와 Rebase 알아보기
2021.10.24브랜치를 하나로 합치는 방법 🤔 Git을 통해 프로젝트를 진행하다 보면 기능별로 브랜치를 만들어 구현하게 됩니다. 그리고 완성이 된 브랜치는 별다른 문제가 없다면, 상위 브랜치에 병합을 해줄 수 있습니다. Git에서는 병합을 위한 명령어로 merge가 있습니다. merge는 병합하고자 하는 브랜치의 상위 브랜치로 이동한 후, git merge 명령으로 수행할 수 있습니다. 서로 다른 브랜치에서 같은 파일을 수정했을 때 발생하는 충돌(Conflict)과 같은 문제가 없다면, 브랜치들을 정상적으로 병합해 줍니다. 그리고 git log 명령으로 커밋 히스토리를 확인해보면, 다음과 같이 병합이 잘 된 것을 확인할 수 있습니다. 브랜치를 따서 작업한 후 병합을 했음에도 불구하고 로그 그래프가 깔끔하고, 병합과 관..
프로젝트를 멋지게 설명하는 README.md
프로젝트를 멋지게 설명하는 README.md
2021.09.25README.md README.md 파일은 깃허브 저장소를 돌아다니다 보면 흔히 볼 수 있는 문서 파일입니다. 이 파일은 프로젝트의 내용을 설명하기 위해 사용하는 파일로써 프로젝트가 어떤 목적에 의해 개발되었는지, 어떻게 사용할 수 있는지 등을 적어 놓습니다. README 문서의 내용은 저장소의 메인 페이지에 노출되기 때문에, 다소 귀찮더라도 신경 써서 작성하는 것이 좋습니다. GitHub는 저장소 최초 생성 시, README 파일을 작성할 수 있도록 안내하고 있습니다. 잘 작성된 README 문서의 예시로 facebook React 저장소를 가져와 봤습니다. 링크를 타고 들어가 보면 사진 속 내용 외에도 더 많은 내용을 확인할 수 있는데, React 뿐만 아니라 깃허브에 등록되어 있는 대부분의 프로젝트..
Branch의 종류와 사용법
Branch의 종류와 사용법
2021.09.25Git Branches Git Workflow는 수명이 항상 유지되는 메인 브랜치(master, develop)와 일정 기간 동안만 유지되는 보조 브랜치(feature, release, hofix) 총 5개의 브랜치를 사용합니다. 아래 그림은 "A Successful Git brancing model" 글에 첨부된 이미지를 가져온 것으로, 이보다 더 Git Workflow를 잘 설명한 그림은 없는 것 같습니다 😀 메인 브랜치 (Main Branch) master 브랜치는 배포 가능한 상태만을 관리하며, 커밋할 때는 태그를 사용해 배포(Release) 번호를 기록합니다. 위의 Workflow를 이용한 협업에서 작업한 결과물을 서브 브랜치가 아닌, master에 바로 올려 버..
느낌 있는 Commit Message 작성하기
느낌 있는 Commit Message 작성하기
2021.09.25Commit Message 커밋(Commit)은 프로젝트 내의 어떠한 파일들에 변화가 있는 시점을 메시지와 함께 저장하는 기능입니다. 커밋 시점은 개발자마다 다릅니다만, 개인적으로는 코드를 기능별(Feature)로 쪼개서 수시로 커밋하는 것을 선호하는 편입니다. 한 번에 여러가지를 해 놓은 이후 커밋하는 것보다, 특정 기능이나 역할 변경에 대해서만 커밋을 남기면, 이후 코드 리뷰가 용이하고 해당 부분만 언급하기도 좋습니다. 만약 너무 많은 커밋으로 인해 로그(Log)가 지저분할 때는 Merge나 Rebase 명령으로로 정리하면 됩니다. 좋은 커밋 메시지 위 사진은 Alibaba Fusion이라는 곳의 저장소에서 가져온 커밋 히스토리입니다. 이 외에도 대형 서비스를 운영하고 있는 기업들의 깃허브에서 커밋 ..
코드 관리를 위한 Git & GitHub
코드 관리를 위한 Git & GitHub
2021.09.25Git & GitHub Git은 컴퓨터 파일의 변경 사항을 추적하고, 여러 명의 사용자들과 해당 파일들을 공유하고, 수정할 수 있도록 도와주는 분산 버전 관리 시스템(Distributed Version Control System)입니다. 각 클라이언트와 서버는 추적하고 있는 파일의 마지막 변경 사항(스냅샷)만을 저장하지 않고, 저장소(디렉토리)와 함께 모든 히스토리(변경 내역)를 복제합니다. 그렇기 때문에 서버에서 문제가 발생하더라도, 분산되어 있는 클라이언트 중 하나를 통해 기존 상태를 완벽하게 복원할 수 있습니다. Git은 이와 같은 특성을 가지고 있기에 파일의 버전 관리가 용이하고, 각 버전을 통한 백업도 가능하며, 다른 개발자들과의 협업까지 가능합니다. 보통 Git을 통한 파일의 버전 관리는 주로..