Daily Study : 12

dazzling:0
|2025. 9. 29. 00:09
반응형

 

코딩 테스트 


오늘 풀어본 문제는 프로그래머스에 있는 자리수 더하기와, 약수의 합이다. 정리를 해두면 좋을 거 같다. 

 

첫 번째 문제가 "문자열로 들어온 숫자를 각 자리수를 모두 더해서 리턴해라" 라는 문제였다. String 으로 넘어오는 것을 int 로 변환하는건 문제가 되지 않았다. Integer 클래스에서 제공하는 메서드인 parseInt(문자열)을 사용하면 정수로 변환이 가능해진다. 

 

정수로 변환까진 OK 그럼 각 자리수는 어떻게? 

생각해본 방법은 for 문을 돌리는 것이다. 각 자리수 별로 하나씩 잘라서 넘어온 값을 누적해서 더해주는 것이다. 가능할 거 같다. 

 

그런데, 여기서 문제가 생겼다. 문자열을 먼저 정수로 변환해주면 내가 생각한 문자열 자르기를 할 수가 없다. 

다시 String 클래스에 메서드인 substring()을 이용하여 자르기를 먼저 해주기로 했고, 자르기를 통해 나온 숫자를 정수로 변환하는 방법을 해보기로 했다. 변환된 값은 바로 누적해서 더해주었다. 

 

성공. 

 

글쓴이가 풀은 문제들의 코드를 링크로 걸어두겠습니다! 첫 번째 문제 | 두 번째 문제

 

 

Git Push & Pull


원격으로 커밋 밀어올리기 

git push

 

원격의 커밋 당겨오기 

git pull

 

 

Pull 받아와야 할 것이 있을 때 push를 하면? 

 

- 불가능하다. 원격에 먼저 적용된 새 버전이 있으므로 pull해서 원격의 버전을 받아온 다음에 push가 가능하다. 

 

push할 것은 있고, pull 할 때 두 가지 방법이 있다. 

 

git pull --no-rebase

- 이 방법은 merge 방식이다. 

 

git pull --rebase

- 이름에서 볼 수 있듯이 rebase 방식이다. (pull 상의 rebase는 다르다 협업 시에 사용한다)

 

pull 을 받아왔다면 푸쉬!

git push

 

 

원격의 브랜치 다루어보기


우선 로컬에서 브랜치를 만들어 원격에 push 를 해보겠습니다.

git branch from-local
git push -u origin from-local

 

브랜치 목록 살펴보는 것

git branch --all

 

 

원격의 브랜치 로컬에 받아 오는 것은 fetch를 한번 해줘야 합니다.

git fetch

 

로컬에 같은 이름의 브랜치를 생성하여 연결하고 switch

git switch -t origin/from-remote

 

원격에 있는 브랜치 삭제할 수도 있습니다.

git push 원격 이름 --delete 원격의 브랜치명

 

 

Git의 3가지 공간


우선 깃은 특징이 스냅샷을 사용하는 것이다. (Snapshot)

스냅샷 방식이 이전 버전 관리 시스템의 델타 방식보다 갖는 주요 이점은 

 

" 대규모 저장소에서 이력 접근 속도가 빠르고, 각 버전의 파일 상태 전체를 저장하므로, 변경 사항이 누적되는 델타 방식에 비해 대규모 저장소에서 특정 버전의 파일 내용을 빠르게 불러올 수 있다. "

 

 

 

Working directory 

- untracked : Add 된 적 없는 파일, ignore 된 파일

- tracked : Add 된 적 있고 변경내역이 있는 파일

- git add 명령어로 Staging area로 이동

 

Staging area 

- 커밋을 위한 준비 단계 

- git commit 명령어로 repository 로 이동

 

Repository

- .git directory 라고도 불림

- 커밋된 상태 

 

 

git rm 

- 파일을 그냥 삭제할 시 파일의 삭제가 working directory 에 있음. 

 

git rm 파일명

- 파일의 삭제가 Staging area 에 있음. 

 

 

git mv

- 파일명을 그냥 수정할 시 working directory 에 있음. 

 

git mv 기존파일명 수정파일명

- git이 수정된 파일명 추적을 할 수 있게 되고 staging area에 있음. 

 

 

파일을 staging area 에서 working directory로 이동하기 

 

git restore --staged 파일명

- --staged를 빼면 working directory에서도 제거가 된다. 

- 예전에는 git reset head 파일명 으로 사용했다고 한다. 

 

 

reset의 3가지 옵션 

 

-- soft : repository 에서 staging area 로 이동 

-- mixed (default) : repository 에서 working directory로 이동 

-- hard : 수정사항 완전히 삭제 

 

 

HEAD


Git의 HEAD

 

현재 속한 브랜치의 가장 최신 커밋! 

 

checkout으로 앞뒤 이동해볼수 있다. 

git checkout HEAD^

- ^ 또는 ~ : 갯수만큼 이전으로 이동한다. 

- 커밋 해시를 사용해서도 이동할 수 있다. 

git checkout 커밋해시

 

이전으로 이동을 했다면 이동을 한 단계 되돌리기도 있다. 

git checkout -

 

 

HEAD를 사용하여 reset 도 가능함.

git reset HEAD 원하는 단계 옵션

 

 

fetch 와 pull


fetch : 원격 저장소의 최신 커밋을 로컬로 가져오기만 함

pull : 원격 저장소의 최신 커밋을 로컬로 가져와 merge 또는 rebase로 가져온다. 

 

 

프로답게 커밋 관리하기


 

하나의 커밋에는 한 단위의 작업을 넣도록한다.

- 한 작업을 여러 버전에 걸쳐 커밋하지 않는다.

- 여러 작업을 한 버전에 커밋하지 않는다. 

 

커밋 메시지는 어떤 작업이 이뤄졌는지 알아볼 수 있도록 작성한다. 

 

 

커밋 메시지 컨벤션

type : subject

body (optional)
...
...
...

footer (optional)

 

예시

feat : 압축파일 미리보기 기능 추가

사용자의 편의를 위해 압출을 풀기 전에 
다음과 같이 압축파일 미리보기를 할 수 있도록 함
- 마우스 오른쪽 클릭
- 윈도우 탐색기 또는 맥 파인더의 미리보기 창

Closes #125

 

Type 

타입 설명
feat 새로운 기능 추가
fix 버그 수정
docs 문서 수정
style 공백, 세미콜론 등 스타일 수정
refactor 코드 리팩토링
pert 성능 개선
test 테스트 추가
chore 빌드 과정 또는 보조 기능(문서 생성기능 등)수정

 

Subject

커밋의 작업 내용 간략이 설명

 

Body 

길게 설명할 필요가 있을 시 작성 

 

Footer

- Breaking Point 가 있을 때

- 특정 이슈에 대한 해결 작업일 때 

 

 

보다 세심하게 스테이징하고 커밋하기


hunk별 스테이징 진행

git add -p

- 옵션 설명을 보려면 ? 입력 후 엔터

- y 또는 n로 각 헝크 선택

 

변경사항을 확인하고 커밋하기

git commit -v

- git diff --staged 도 이번 커밋에서 변경되는 것들을 확인할 수 있고, 위 명령어는 커밋과 변경사항을 한번에 확인 및 작업을 할 수 있다.

 

 

커밋하기 애매한 변화 stash하기 (치워두기)


git stash

- 해당 명령어로 치워둘 수 있다. git shash save 와 같음. 

 

원하는 시점, 브랜치에서 다시 적용하기 

git stash pop

 

원하는 것만 stash 해보기

git stash -p

 

메시지와 함께 스태시

git stash -m "메시지"

 

스태시 목록 보기 

git stash list

- 리스트상의 번호로 apply, drop, pop 가능하다. 

 

 

커밋 수정하기


커밋 메시지 변경 

git commit --amend

 

커밋 메시지 한 줄로 변경

git commit --amend -m "메시지"

 

대상 바로 이전 커밋을 다양한 방법으로 수정가능하다. 

git rebase -i

 

p, r, e, d, s 

p : pick 커밋 그대로 두기

r : reword 커밋 메시지 변경

e : edit 수정을 위해 정지

d : drop 커밋 삭제

s : squash 이전 커밋에 합치기 

 

 

관리되지 않는 파일들 삭제하기 


git clean -옵션

-n : 삭제될 파일들 보여주기

-i : 인터렉티브 모드 시작

-d : 폴더 포함

-f : 강제로 바로 지워버리기

-x : .gitignore에 등록된 파일들도 삭제 (이건 위험하다) 

 

 

커밋하지 않은 변경사항 되돌리기 


git restore 파일명

- 특정 파일을 지정된 상태로 복구하기 

- 워킹 디렉토리의 특정 파일 복구

- 파일명 자리에 . : 모든 파일 복구 

 

변경상태를 스테이지에서 워킹 디렉토리로 돌려놓는 방법도 있다. 

git restore --staged 파일명

 

파일을 특정 커밋의 상태로 되돌리는 방법도 가능하다

git restore --source=해시 파일명

 

 

reset 을 했어도 희망이 존재한다 !!!

git reflog

- reflog는 프로젝트가 위치한 커밋이 바뀔 때마다 기록되는 내역을 보여주고, 이를 사용하여 reset 하기 이전 시점으로 프로젝트를 복구할 수 있다. 

728x90
반응형

'TIL & STUDY' 카테고리의 다른 글

Daily Study : 14  (0) 2025.10.01
Daily Study : 13  (0) 2025.09.30
Daily Study : 11  (0) 2025.09.27
Daily Study : 10  (0) 2025.09.26
Daily Study : 9  (1) 2025.09.25