일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- c# winform
- C언어 포인터
- vim
- c#
- c# 윈폼
- 유니티
- Python
- Unity
- 플러터
- HTML
- github
- 깃
- gitlab
- git
- docker
- jupyter
- Houdini
- dart 언어
- 포인터
- 다트 언어
- Data Structure
- c언어
- 구조체
- 도커
- C# delegate
- jupyter lab
- Flutter
- Algorithm
- c# 추상 클래스
- C++
- Today
- Total
목록전체 글 (507)
nomad-programmer

git은 다양한 명령어를 지원한다. 구글에서 'git cheat sheet' 등의 검색어로 검색하면 많이 찾을 수 있다. https://git-scm.com/docs Git - Reference Reference git-scm.com git은 파일을 세 가지 작업 영역으로 관리한다. 이러한 가상의 공간 구분을 염두에 두고 살펴보면 몇몇 명령어들의 의미가 더욱 명확해진다. Working Directory : 저장소가 추적 중인 파일들이 위치하는 영역이다. Staging Area : 커밋할 준비가 된 (staged) 파일들이 위치하는 영역이다. Repository : 커밋되어 버전을 관리하는 파일들이 위치하는 영역이다. 이 영역의 파일이 수정되면 Working Directory 영역으로 이동된다. 위의 작업..

git-flow와 github-flow는 git을 이용한 작업 흐름 방식의 양 극단에 있는 작업 흐름이다. git-flow는 복잡하거나 견고하고 브랜치 사이의 엄격한 상호 작용 규칙에 따라야 하는 작업 흐름이다. 그만큼 전체적인 개발-주기가 긴 프로젝트에 어울린다. 반면, github-flow는 개발과 배포에 필요한 최소한의 브랜치 그룹만 유지해 언제나 배포할 수 있고, 여러 가지 요구나 상황 변화에 민첩하게 대응할 수 있는 작업 흐름이다. 이 두 가지의 중간에 gitlab-flow 가 있다. 'GitLab Flow' 라는 웹 문서에서 github-flow를 기본으로 여러 가지 변형 형태를 gitlab-flow라는 이름으로 소개한다. github-flow를 따르지만 배포 과정을 GitLab에서 개선한 작..

git-flow의 단점을 해결하고자 github에서 사용하는 github-flow가 있다. 이름에서 알 수 있듯이 이 작업 흐름은 github에서 사용 중인 작업 흐름이다. https://guides.github.com/introduction/flow/index.html Understanding the GitHub flow · GitHub Guides Create a branch When you're working on a project, you're going to have a bunch of different features or ideas in progress at any given time – some of which are ready to go, and others which are not. B..

git-flow 작업 흐름 데스트탑 애플리케이션은 한번 배포된 후에는 유지보수가 쉽지 않다. 사용 환경이 오프라인일 경우, 도중에 실행을 중단할 수 없는 경우, 사용자가 유지보수에 관심을 가지지 않을 경우 등 다양한 이유로 유지보수가 쉽지 않기 때문이다. 이런 애플리케이션은 매우 견고하게 만들어져야 하며, 견고함을 유지하기 위해 프로젝트 작업 흐름 또한 여러 가지 결함을 최소화하고 결함이 있다고 해도 빠른 시간 안에 감지해 수정할 수 있는 모델이어야 한다. 이런 조건을 만족하는 것으로 빈센트 드라이센(Vincent Driessen)이 제안한 작업 흐름 모델인 'A successful Git brancing model' 이 있다. https://nvie.com/posts/a-successful-git-br..

git을 이용한 협업은, 다르게 말하면 브랜칭 생성 규칙을 공유하는 것으로 말할 수 있다. git의 장점인 '자유롭고 무제한 브랜칭' 에 규칙을 정하는 것으로 협업의 틀이 완성되는 것이다. 브랜칭 생성 규칙의 예 요소/플랫폼 데스크탑 애플리케이션 웹 모바일 앱 특징 배포 후에 유지보수가 힘듦. 배포와 개발의 구분이 없음. 배포 이후 지속적인 업데이트 가능. 프로젝트 마감 최초 배포 시 해당 없음 버전마다 배포 단위 최초 한 번. 업데이트는 패치 등으로 제공됨 해당 없음. 무결절성(seamless) 버전마다 배포 시기 조절 가능 여부 ㉮ 가능 해당 없음 불가능 ㉯ 추천 Flow git-flow github-flow gitlab-flow ㉮: 배포 시기를 개발하는 쪽에서 완전하게 가져갈 수 있는지를 뜻한다...

git 을 이용해 프로젝트를 관리하는 방법에는 특별히 정해진 규칙이 없다. 언제든지 브랜치를 만들어서 새로운 기능을 시험해 볼 수 있고, 원 저장소와는 상관없는 자신만의 로컬 저장소를 만들어서 작업할 수 있는 것이 git 이다. 하지만 협업한다면 무엇보다도 중요한 것이 있다. 바로 브랜칭 규칙이다. 모두가 다 master 브랜치를 브랜칭해서 자신의 이름을 딴 브랜치에서 작업할 수도 있다. 하지만 그것보다 프로젝트 전체를 관리하는 훨씬 더 쉬운 방법이 있다. 프로젝트를 관리하기 전에 세워야 할 규칙 커밋 단위 커밋에 포함될 수 있는 내용이 여러 개로 나누어질 수 있을 만큼 크다면 이를 쪼개서 커밋해야 한다. 커밋의 내용을 최소 단위(Atomic)로 유지하는 것이다. 이를 위해 다음과 같은 규칙을 지키는 것..

github는 단순히 원격 저장소만을 제공하는 서비스가 아니다. 프로젝트를 진행하는 데 필요한 서비스들도 같이 제공하고 있다. 따라서 github가 제공하는 여러 가지 기능을 적극적으로 이용하여 협업하는 것이 좋다. github 의 협업 도구 github 는 엽업을 위한 다양한 도구를 제공하고 있다. github 에서 제공하는 도구 중 필수적이라고 할 수 있는 이슈 트래커, 위키, 풀 리퀘스트, 코드 리뷰 기능등이 있다. 이슈 트래커 이슈 트래커는 쉽게 말하자면 게시판이다. 버그 보고, 기능 개선 건의, 그 외 프로젝트에 관련된 주제(이슈)를 등록할 수 있는 공간이다. 물론 일반적인 게시판과는 다른 점이 있다. 담당자: 이슈 담당자 지정 기능 알림: @ 형식으로 특정 그룹이나 특정 사용자에게 알림 라벨:..
git merge 명령을 실행할때마다 --no-ff 옵션을 주었다. 이유는 커밋 내역을 남기기 위함이다. 그런데 git의 전역 속성으로 추가하면 굳이 옵션을 따로 안주어도 된다. git config --global --add merge.ff false

git 을 이용한 버전 관리 시스템의 작업 흐름은 평소에는 여러 개의 브랜치와 커밋 내역을 만들고, 마지막에 작업 내역을 확인하고 올바른 작업물만 병합하는 것이다. git 의 특징 중 하나는 커밋 내역을 수정할 수 있다는 것이다. 하지만 수정할 수 있다고 해서 이미 원격 저장소에 푸시가 끝난 커밋 내역을 수정하는 것은 정말 특별한 상황이 아닌 이상 절대로 권장할만한 일이 아니다. 푸시하기 전에 git merge 명령을 이용해서 병합하면 충돌 해결 커밋이나, --no-ff 로 만든 병합 커밋을 남기게 된다. 이는 작업 흐름을 일관되게 파악하는 데는 깔끔하지 않다. 따라서 할 수 있다면 로컬 저장소에 있던 커밋을 깔끔하게 정리해서 푸시하는 것이 좋다. 그런 정리를 가능하게 하는 것이 git rebase 명령..
파일 하나를 대상으로 변경 내역을 통째로 원래대로 (변경 직전의 최종 커밋 시점으로) 되돌릴 때 사용한다. git checkout HEAD -- 파일이름 위 명령을 실행하면 파일이름 파일의 내용이 최종 커밋 시점 (HEAD 대신 다른 커밋 SHA-1 체크섬 값을 입력하면 해당 커밋 시점으로 되돌림) 으로 되돌아가게 된다. '--' 는 포함하는 것이 좋다. git checkout 명령에 뒤따라 오는 것이 파일이라는 것을 확실하게 해주는 것이다. 만약 '--' 가 없다면, 파일이름이 브랜치 이름과 같을 경우 해당 브랜치로 체크아웃하거나, 특정 커밋 시점으로 저장소 전체가 되돌아갈 수 있다. // example git checkout HEAD -- README.md cat README.md 명령을 실행하면 파..
git reset 명령은 어떤 특정 커밋을 사용하지 않게 되어 다시 되돌릴 때 사용한다. git revert 명령이 이전 커밋을 남겨두는 명령이었다면 git reset 명령은 이전 커밋을 남기지 않고 새로운 커밋을 남긴다는 차이가 있다. 또한 git reset 명령은 현재 커밋인 HEAD의 위치, 인덱스, 작업하는 저장소 디렉토리 등도 함께 되돌릴지를 선택하기 위한 모드를 지정할 수 있다. git rest 명령의 모드 모드 의미 HEAD 위치 인덱스 저장소 디렉토리 hard 완전히 되돌림 변경 변경 변경 mixed (기본값) 인덱스의 상태를 되돌림. 모드를 지정하지 않았을 때의 기본값 변경 변경 변경 안 함 soft 커밋만 되돌림 변경 변경 안 함 변경 안 함 * 인덱스(Index) 는 실제 커밋 전 변..
이미 공개된 커밋 내역을 수정하는 것은 매우 위험하다. 할 수는 있지만 "절대로" 하면 안된다. 하지만 안전하게 변경 내역을 되돌리는 방법이 있다. 커밋으로 발생한 변경 내역의 반대 커밋을 하면 된다. 즉 추가한 코드는 빼고, 지운 코드는 다시 추가하는 커밋을 하는 것이다. git revert 이 명령을 특정 지점의 커밋 SHA-1 체크섬 값을 입력하면 해당 지점까지 변경 내역을 취소하게 된다. ex) git log -5 git log 명령을 통해 특정 지점의 커밋 SHA-1 체크섬 값을 찾는다. 그 후 git revert 523a 명령을 실행한다. vim 편집기 창이 등장하면서 커밋 메시지를 수정하게 된다. 잘 살펴보면 원래의 커밋 메시지가 큰 따옴표로 묶여 있고 앞에 'Revert'라는 문자가 입력되..