
문서나 설계도 또는 소스 코드 등 다양한 파일의 변경 사항을 관리하는 소프트웨어
원격 저장소
로컬 저장소가 바라보는 공유 저장소
개인 컴퓨터가 아니라 별도 서버로 관리한다
로컬 저장소
개인 컴퓨터에 존재하는 저장소
원격 저장소의 코드를 복제한다.
로컬에서 작업한 뒤 원격 저장소에 올린다.
명령어 및 순서
원격 저장소 생성 (git init) -> 개인 저장소로 코드 복제 (git clone) -> 코드 작업 -> 원격 저장소로 코드 동기화 (git push) -> 원격 저장소에 변경된 코드가 있다면 (git pull)
pull
fetch + merge
fetch
Repository
저장소, 원격 저장소에 동기화하여 사람들과 코드를 공유한다
Commit
Branch
코드를 분기하는 기준
Revert
Reset
.gitignore란?
readme.md
markdown
Pull Request
Rebase를 생활화하자
Local 작업이 길어질수록 Base 브랜치 코드 변경이 자주 일어난다.
협업한다면 rebase를 자주 해야 코드 충돌을 줄일 수 있다.
Git 리뷰 코멘트 템플릿
Restful API 문서화 및 테스트하는 오픈소스
소스 코드 관리 정책
- 여러 개발자가 동시에 다양한 기능을 개발하고, 최종적으로 안정적인 소프트웨어 배포를 보장한다.
- Git workflow라고도 불린다.
브랜치 5단계
feature - develop - release - hotfix - main
feature
기능 개발 브랜치
develop
고정 브랜치로, 개발 중인 코드가 모이는 곳
release
배포 준비 단계로, 배포할 코드가 모이는 곳
hotfix
배포된 코드 이슈를 긴급 대응할 때 생성
main
고정 브랜치로, 최신 배포 코드가 담김
버저닝이 필요하고, 오로지 정기배포를 하는 앱 어플리케이션에 적합하다.
Git-flow는 개발자가 요구하는 상황보다 훨씬 더 프로세스를 가진다.
그래서, 워크플로우는 단순할수록 오버헤드가 발생하지 않고, 브랜치 전략을 이해하지 못하여 생기는 문제가 사라진다는 생각으로 만들어졌다.
main, feature 브랜치가 있다.
=> 상시 배포에 적합!
결론
만약 장기간 프로젝트가 존재하고, 핫픽스 등 유지보수 작업을 수행하는 팀은 Git-flow가 타당하다.
상시 배포하는 팀은 간단한 Github-flow가 적합하다.
https://school.programmers.co.kr/learn/courses/30/lessons/181187
위의 문제를 풀었다.
이중 for문을 하면 답은 찾기 쉬울 것 같았지만 반지름 최대 길이가 1,000,000이라 시간 초과가 날 것 같아 최대한 규칙을 찾으려고 했다.
하지만,, 찾지 못하고,, 찾았다 ! 싶었을 땐 점점 원이 커질 땐 적용되지 않는 규칙이었다.
그래서 수업이 끝나고 다시 풀어보았다.
class Solution {
public long solution(int r1, int r2) {
long answer = 0;
for(int x = 1;x<=r2;x++){
long maxY = (long)Math.floor(Math.sqrt((Math.pow(r2,2) - Math.pow(x,2))));
long minY = (long)Math.ceil(Math.sqrt((Math.pow(r1,2) - Math.pow(x,2))));
answer += maxY - minY + 1;
}
answer *= 4;
return answer;
}
}
x² + y² = r² 를 이용하여 풀면 되는 문제였다. 수학 문제는 식으로 풀이하면 좋다는 것을 알게 되었다.
y = ±√(r² - x²) 라는 식을 만들면 반복문을 하나만 둘 수 있었다.
오늘 11시에 시작하는 거.. 얼마나 좋던지.. 후
내일부터 스프링을 배운다고 하는데 기대되면서 무섭다..하하
파이팅해서 평일의 절반,, 수요일 잘 보내보자~!