Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .DS_Store
Binary file not shown.
Binary file added 3team_eunji/.DS_Store
Binary file not shown.
169 changes: 169 additions & 0 deletions 3team_eunji/2025-08-06/깃협력하기.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
# Git, Github 명령어 정리본

## Git 시작 설정

### 현재 디렉토리를 Git 프로젝트로 설정

> 명령어: git init
설명: 현재 작업 중인 디렉토리를 Git이 관리하는 프로젝트(working directory)로 만들고, 그 안에 Git 저장소(.git 디렉토리)를 생성합니다.

> 사용자 이름 설정
명령어: git config user.name '사용자 ID'
설명: 커밋에 포함될 사용자의 이름을 설정합니다.

> 사용자 이메일 설정
명령어: git config user.email '이메일주소'
설명: 커밋에 포함될 사용자의 이메일 주소를 설정합니다.

### Staging Area 다루기
파일들을 Staging Area에 올리기
1. 명령어: git add [파일 이름]
설명: 수정사항이 있는 특정 파일을 커밋 후보인 Staging Area에 올립니다.
2. 명령어: git add [디렉토리명]
설명: 해당 디렉토리 내에서 수정사항이 있는 모든 파일들을 Staging Area에 올립니다.
3. 명령어: git add .
설명: 현재 작업 디렉토리 내의 수정사항이 있는 모든 파일들을 Staging Area에 올립니다.

>Staging Area에 올린 파일 내리기
명령어: git reset [파일 이름]
설명: Staging Area에 올렸던 파일을 내리고 이전 상태로 되돌립니다.

>커밋 남기기
명령어: git commit -m "커밋 메시지"
설명: 현재 Staging Area에 있는 변경사항들을 확정하고 커밋 메시지와 함께 하나의 커밋으로 저장합니다.


### Git 상태 확인 및 도움말

>현재 Git 상태 출력
명령어: git status
설명: Git이 현재 프로젝트에 대해 인식하고 있는 내용을 출력합니다. 문제 발생 시 현재 상태를 파악하는 데 유용합니다.

>특정 명령어의 공식 매뉴얼 보기
명령어: git help [커맨드 이름]
설명: 궁금한 Git 명령어의 공식 사용법과 상세 내용을 출력합니다.

### GitHub 시작하기

>로컬 저장소 내용을 원격 저장소에 처음으로 올리기
명령어: git push -u(또는 --set-upstream) origin master
설명: 로컬 저장소의 내용을 원격 저장소(origin)의 master 브랜치에 처음으로 올립니다. 이 옵션을 사용하면 다음부터는 git push만으로도 동일한 작업을 할 수 있습니다.

>로컬 저장소 내용 원격 저장소에 올리기
명령어: git push
설명: 이미 한 번 원격 저장소에 연결된 후, 로컬의 커밋들을 원격 저장소에 올립니다.

>원격 저장소 내용 로컬 저장소로 가져오기
명령어: git pull
설명: 원격 저장소의 최신 변경사항을 가져와서 로컬 저장소에 병합(merge)합니다.

>GitHub의 프로젝트를 내 컴퓨터로 가져오기
명령어: git clone [프로젝트의 GitHub 상 주소]
설명: GitHub에 있는 원격 저장소를 내 컴퓨터에 복제하여 새로운 로컬 저장소를 만듭니다.

### Git에서 커밋 다루기

>커밋 히스토리 출력
명령어: git log
설명: 현재 브랜치에 대한 커밋 기록을 최신순으로 출력합니다.
명령어: git log --pretty=oneline
설명: oneline 옵션을 사용해 커밋 하나당 한 줄씩 간결하게 출력합니다.

>특정 커밋의 변경사항 확인
명령어: git show [커밋 아이디]
설명: 특정 커밋에서 어떤 파일이 어떻게 변경되었는지 자세한 내용을 확인합니다.

>최신 커밋 메시지 수정
명령어: git commit --amend
설명: 가장 최근의 커밋을 수정하여 새로운 커밋으로 만듭니다. 커밋 메시지를 수정하거나, Staging Area에 추가된 내용을 덧붙일 수 있습니다.

>명령어에 별명 설정
명령어: git config alias.[별명] [커맨드]
설명: 길이가 긴 명령어에 짧은 별명을 지정해 편리하게 사용합니다.

>두 커밋 간의 차이 비교
명령어: git diff [커밋 A의 아이디] [커밋 B의 아이디]
설명: 두 커밋 사이에서 어떤 내용이 변경되었는지 비교해서 보여줍니다.

>특정 커밋으로 되돌리기
명령어: git reset [옵션] [커밋 아이디]
설명: 현재 HEAD의 위치를 특정 커밋으로 되돌립니다.
1. --soft: HEAD만 이동시키고, Staging Area와 작업 디렉토리는 그대로 둡니다.
2. --mixed (기본값): HEAD를 이동시키고, Staging Area도 이전 상태로 되돌립니다. 작업 디렉토리의 변경사항은 유지됩니다.
3. --hard: HEAD와 Staging Area, 그리고 작업 디렉토리까지 모두 되돌립니다.

>특정 커밋에 태그 붙이기
명령어: git tag [태그 이름] [커밋 아이디]
설명: 특정 커밋에 중요한 시점(예: v1.0.0)임을 나타내는 태그를 붙입니다.

### Git에서 브랜치 사용하기

>새 브랜치 생성
명령어: git branch [새 브랜치 이름]
설명: 현재 커밋을 기준으로 새로운 브랜치를 생성합니다.

>새 브랜치 생성 및 이동
명령어: git checkout -b [새 브랜치 이름]
설명: 새로운 브랜치를 생성함과 동시에 해당 브랜치로 바로 이동합니다.

>브랜치 이동
명령어: git checkout [기존 브랜치 이름]
설명: 이미 존재하는 다른 브랜치로 HEAD를 이동시킵니다.

>브랜치 병합(merge)
명령어: git merge [기존 브랜치 이름]
설명: 현재 브랜치에 다른 브랜치의 변경사항을 병합합니다.

>병합 작업 취소
명령어: git merge --abort
설명: 병합 중 충돌(conflict)이 발생했을 때, 병합을 취소하고 이전 상태로 돌아갑니다.

>브랜치 삭제
명령어: git branch -d [기존 브랜치 이름]
설명: 지정한 브랜치를 삭제합니다.
Git 실전 I

>원격 저장소의 최신 커밋들 가져오기
명령어: git fetch
설명: 원격 저장소의 최신 커밋들을 로컬 저장소로 가져오지만, 로컬 브랜치에 자동으로 병합하지는 않습니다.(git pull과 차이점)

>파일의 특정 줄 변경 기록 확인
명령어: git blame
설명: 특정 파일의 각 줄이 어떤 커밋에 의해 수정되었는지, 누가 작성했는지 확인합니다.

>특정 커밋의 변경사항을 되돌리는 새로운 커밋 생성
명령어: git revert [커밋 아이디]
설명: 특정 커밋에서 이루어진 변경을 취소하는 새로운 커밋을 만듭니다. 커밋 히스토리를 깔끔하게 유지할 수 있습니다.
Git 실전 II

>HEAD의 이동 기록 확인
명령어: git reflog
설명: HEAD가 그동안 어떤 커밋을 가리켜왔는지에 대한 모든 기록을 출력합니다.

>모든 브랜치의 커밋 히스토리를 그래프로 출력
명령어: git log --all --graph
설명: 모든 브랜치의 커밋 히스토리와 그 관계를 시각적인 그래프 형태로 보여줍니다.

>커밋 히스토리를 한 줄로 깔끔하게 정렬
명령어: git rebase [브랜치 이름]
설명: 두 브랜치가 갈라진 지점 이후의 커밋들을 다른 브랜치의 최신 커밋 위로 옮겨 붙여서 커밋 히스토리를 한 줄로 만듭니다. git merge와 같은 효과를 내지만 더 깔끔한 히스토리를 유지할 수 있습니다.

>현재 작업 내용을 임시 저장
명령어: git stash
설명: 아직 커밋하지 않은 현재 작업 내용을 스택 영역에 임시로 저장하여 다른 브랜치로 이동할 수 있게 합니다.

>임시 저장한 작업 내용 적용
명령어: git stash apply [stash id]
설명: 스택에 저장된 작업 내용을 현재 작업 디렉토리에 적용합니다. (stash id를 생략하면 가장 최근 내용을 적용)

>임시 저장한 작업 내용 삭제
명령어: git stash drop [stash id]
설명: 스택에 저장된 작업 내용을 스택에서 삭제합니다. (stash id를 생략하면 가장 최근 내용을 삭제)

>임시 저장한 작업 내용 적용 및 삭제
명령어: git stash pop [stash id]
설명: 스택에 저장된 작업 내용을 적용함과 동시에 스택에서 삭제합니다. (stash id를 생략하면 가장 최근 내용을 적용)

>특정 커밋의 내용만 가져와서 적용
명령어: git cherry-pick [커밋 아이디]
설명: 다른 브랜치에 있는 특정 커밋의 변경사항만 가져와서 현재 브랜치에 새로운 커밋으로 반영합니다.
45 changes: 45 additions & 0 deletions 3team_eunji/2025-08-06/알고리즘문제.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
## 문제1
>머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요.

### 내 풀이 순서
1. 사람수를 7로 나눈다. 몫을 보관한다.
2. 사람수를 7로 나눠 남은 수가 0이 아닐 경우 보관한 몫에 1을 더한다

```javascript
function solution(n) {
var pizza = Math.floor(n / 7);
var more = n % 7;

if (more > 0) {
pizza++; // pizza += 1; pizza++;
}

return pizza;
}
```
## 문제2
>머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.

### 내 풀이 순서
1. n과 6의 최소공배수를 구한다
2. 최소공배수를 6으로 나눠 몫을 구한다

```javascript
// 유클리드 호제법으로 최대공약수(GCD)를 구하는 함수
function gcd(a, b) {
while (b !== 0) {
let temp = b;
b = a % b;
a = temp;
}
return a;
}
function solution(n) {
// 1. n과 6의 최소공배수를 구한다.
// 최소공배수 = (두 수의 곱) / (최대공약수)
const lcm = (n * 6) / gcd(n, 6);
// 2. 최소공배수를 6으로 나눠 필요한 피자 판 수를 구한다.
const numberOfPizzas = lcm / 6;
return numberOfPizzas;
}
```