힘내 이야기

7616 단어 git

워크플로 이야기



옛날 옛적에 Krevorook이라는 드워프가 트리 엘프의 의뢰를 받아 정적 웹사이트를 구축하고 Netlify와 같은 CDN에서 호스팅했습니다. 그의 여정은 새로운 발견으로 가득 차 있었습니다... 그리고 GIT라는 사나운 짐승과 친구가 되는 것도 그 중 하나였습니다. 다음은 그들이 함께 보낸 시간에 대한 작은 설명입니다.

프로젝트를 설정한 후 Krevorook은 새 git repo를 만들었습니다.
그래서 그는 배포 가능한(프로덕션) 코드가 있는 MAIN 브랜치를 가지고 있었습니다.

git init
git add .
git commit -m 'init'


새로운 Github 리포지토리를 생성한 후 리모컨을 추가했습니다.

git remote add origin https://github.com/user/repo.git
git push -u origin main


그리고 git push 그를 위해 잘 일했습니다. 홈페이지를 만들어 배포했습니다.

때때로 그는 새 파일을 가져왔습니다.

git add .
git commit -m 'added: .gitignore'
git push


때때로 그는 기존 것을 연마했습니다.

git commit -am 'my message'


Krevorook이 일부 파일을 추가하는 것을 잊었거나 부정확한 메시지를 작성했을 때 그는 스스로 수정했습니다.

git add .
git commit --amend -m 'new message'


그러나 더 자주 그는 사소한 수정을 했습니다.

git commit -a --amend --no-edit


그는 또한 분명히 아직 생산 준비가 되지 않은 페이지에 대해 연락을 취해야 합니다.
그래서 그는 "적극적으로 개발된"코드가 있는 새로운 브랜치 DEV를 만들었습니다.

git checkout -b dev
git push -u origin dev


그는 뽀모도로 기법을 사용한 세션, 30분 작업/3분 휴식을 사용하여 작업했습니다. 한 세션은 일반적으로 2-3시간이 소요된 후 최소 1시간의 휴식 또는 변경 활동(코딩이나 앉아 있는 것과는 관련이 없음)이 뒤따릅니다.
각 세션이 끝날 때 Krevorook은 의미 있는 메시지가 없더라도 커밋하려는 충동을 느꼈습니다.

git commit -am 'up'


그는 항상 기록을 정리할 수 있기 때문에 더미 커밋을 사용하는 것이 좋습니다.

git rebase -i HEAD~3


종종 그는 현재 상태를 확인했습니다.

git status
git log --graph --decorate --pretty=oneline --abbrev-commit


매우 반복적이었습니다. 그래서 Krevorook은 그의 소중한 애완동물인 Bash에게 도움을 청했습니다.

# ~/.bash_aliases
alias gs='git status'
alias gl='git log --graph --decorate --pretty=oneline --abbrev-commit'
alias gc='git commit -m'
alias gca='git commit -am'


마침내 페이지는 제작 준비가 되었고 WWW에 소개되기를 갈망했습니다.

그리고 Krevorook은 MAIN과 함께 DEV에 합류했습니다.

git checkout main
git merge dev
git push


그는 집, 연락처 및 정보의 3페이지로 웹사이트를 운영하고 있습니다.
그러나 연락과 페이지에 대한 정보는 빠르게 이루어졌으며 아마도 그는 더 나은 페이지를 만들기 위해 노력해야 할 것입니다.

그래서 그는 DEV를 기반으로 NEW-ABOUT-PAGE와 NEW-CONTACT-PAGE라는 두 개의 새로운 브랜치를 만들고 거기에 엄청난 노력을 기울였습니다.

git branch new-about-page dev
git branch new-contact-page dev


어느 시점에서 새 연락처 페이지가 좋아 보였고 개선할 점이 없었습니다. 그래서 그는 DEV와 함께 NEW-CONTACT-PAGE 브랜치에 단일 커밋으로 합류했습니다. 그런 다음 그는 모든 것을 프로덕션으로 푸시하고 리포지토리를 정리하여 NEW-CONTACT-PAGE 분기를 삭제했습니다.

# make sure everything is good, some adjustment is needed?
git checkout dev
git merge --squash new-contact-page
git commit -m "merge new-contact-page"

# deploy
git checkout main
git merge dev
git push

# delete
git branch -d new-contact-page
git push origin --delete new-contact-page


그리고 페이지는 어떻습니까?
연락처 페이지와 달리 새로운 정보 페이지는 그다지 좋지 않아 보였습니다. 그래서 그는 현재의 것을 고수하기로 결정하고 계속 진행했습니다.

git branch -D new-about-page
git push origin --delete new-about-page


끝.


사용된 명령



새 로컬 저장소 만들기

git init


작업 디렉토리의 상태를 표시합니다(수정된 파일 표시).

git status


현재 분기의 기록에 있는 모든 커밋을 표시합니다.

git log
git log --graph --decorate --pretty=oneline --abbrev-commit



다음 커밋(단계)에 파일 추가

git add [file]


다음 커밋에 모든 파일 추가

git add .


마지막 커밋을 새롭고 향상된 커밋으로 바꿉니다.

git add .
git commit --amend -m 'new message'


사소한 수정

git commit -a --amend --no-edit


Git 커밋 추가, 제거 또는 결합

git rebase -i HEAD~[num of commits]



새 분기(dev)를 만들고 전환하십시오.

git checkout -b dev


다른 브랜치(메인)로 전환하고 작업 디렉토리로 체크아웃하십시오.

git checkout main


원격 저장소에 새 분기(dev) 만들기

git push -u origin dev


기존 분기(dev)를 기반으로 새 분기(기능) 만들기

git branch feature dev


지정된 분기(기능)를 현재 분기(dev)에 병합(결합)

git checkout dev
git merge feature


지정된 분기(기능)를 현재 분기(dev)에 병합
단일 커밋으로

git checkout dev
git merge --squash feature
git commit -m "merge feature"


로컬 브랜치(기능) 삭제

# safe delete
git branch -d feature

# delete without questions
git branch -D [failed-feature-branch]


원격 분기 삭제(기능)

git push origin --delete feature

좋은 웹페이지 즐겨찾기