이 글은 경영학부 경영통계 수업에서 배운 자료들을 정리한 내용입니다.
통계학을 정의한다.
기술통계학과 추론통계학 차이를 구분한다.
정성변수와 정량변수, 이산변수와 연속변수를 분류한다.
명목척도, 순서척도, 등간척도, 비율척도를 구분한다.
이 카테고리는 경영학부 경영통계 수업을 듣고 정리한 내용을 바탕으로 글을 작성하였습니다.
이 글은 Git 마스터 과정에서 배운 것을 정리한 내용입니다.
fast-forward 같은 경우는 master branch에서 새로운 branch가 생성된 이후에 master branch의 변동사항이 없다면, merge를 할 때, 단순히 master branch가 가리키고 있는 포인터를 새로운 branch(featureA)로 옮기면 된다. 그리고 branch를 삭제하면 된다.
fast-forward 단점 - 히스토리에 merge가 되었다는 사실이 남지 않는다.
[fast-forward merge 하는 경우] - merge하는 동시에 이전 feature-A가 사라지게 된다.
=> 깔끔한 merge (history에 남지 않기 때문)
git merge featureA #merges featureA branch into the current one
# 현재 위치인 master가 featureA로 merge되면서 이동된다.
# featureA로 merge 했다면 더이상 feature-A의 branch가 필요없기 때문에
# 해당 branch를 삭제한다. => git branch -d feature-A
---
[fast-forward merge 하기 싫은 경우] -> --no-ff 옵션을 사용한다.
git merge --no-ff featureA #creates a merge commit
---
[fast-forward merge 불가능한 경우] => Three-way merge를 이용해야 한다.
- master branch와 파생된 feature-A branch의 변동사항을 모두 합해서
- merge commit을 만든 다음에 master branch에 commit을 해야한다.
=> fast-forward가 불가능한 상황에서 git merge feature-A 를 하게 될 때,
따로 merge commit이 만들어진다. => 해당 commit을 종료하고 git hist를 통해
새로운 merge commit이 만들어진 것을 볼 수 있다.
---
git merge --squash featureA #suqash merge, only one commit
git merge --continue
git merge --abort # merge하는 것을 취소하고 싶을 때
git mergetool #opens merge tool
예) feature → master에 merge를 할때, conflict이 발생했다.
merge를 했을 때, conflict상황이 발생했다면 다음과 같은 상황이 발생한다.
open main.txt 입력 → 수동적으로 둘 중 하나만 남기고 나머지는 지운다
“Oh.. Here!! From master branch!” 만 남기고 지우거나 둘다 남겨도 된다.
단, 새로운 메세지를 추가해서는 절대 안된다 → 현직 개발자들도 실수를 종종 한다.
git status에 보시면 “git add
git add main.txt → git status를 하면 수정이 되었고, merge을 이어서 계속하면 → git merge --continue
입력하면 아래와 같이 merge가 성공적으로 되는 것을 볼 수 있다.
git merge --continue
이것은 fast-forward merge가 아니기 때문에, merge commit이 만들어진다. 타이틀을 입력한 다음에, 파일을 끄면 merge가 완성되는 것을 볼 수 있다.git config –global -e 입력 → 다음 4줄을 맨 밑에 추가해준다.
다음 4줄을 추가해주고 닫아준다.
[merge]
tool = vscode
[mergetool "vscode"]
cmd = code --wait $MERGED
git merge feature
(conflict 발생한지 확인 후) → git mergetool
입력한다.
다음 과 같은 4가지 옵션중에 한가지를 고르면 된다. → A선택, B선택, 둘다선택, 두개 비교 (예시 - Accept Current Chage = A선택)
git status
로 확인한다.그러면 git status 에서 main.txt.orig (오리지널 파일)보이는데, 이것은 이전에 merge conflict이 발생하였을 때, 내용이 포함된 것을 볼 수 있다.
이것을 끈다고 하면, git config --global mergetool.keepBackup false
입력한다.
또는 git config --global -e
→ edit 창에 들어가서 [merge] 밑에 다음과 같이 추가해줘도 된다. ⇒ 기존 4줄 밑에 추가한다.
[merge]
tool = vscode
[mergetool "vscode"]
cmd = code --wait $MERGED
[mergetool]
keepBackup = false
git merge --abort
: merge 취소
git clean -fd
: false적으로 directory에 있는 것들을 정리한다. (“Removing main.txt.orig” 라는 메세지가 나오는 것을 볼 수 있다)
다시 처음부터 merge를 한다. git merge feature → git mergetool (수정하고) → git status를 확인해보면, main.txt.orig이 생기지 않는 것을 볼 수 있다.
마지막으로 merge --continue
입력 (→ commit 메세지 저장후 종료) → merge 완료
DS_STORE 파일이란 Desktop Services Store의 약자로, 애플에서 정의한 파일 포맷이다.
애플의 맥 OS X 시스템이 finder로 폴더에 접근할 때 자동으로 생기는 파일로써, 해당 폴더에 대한 메타데이터를 저장하는 파일이다.
윈도우의 thumb.db 파일과 비슷하다.
분석해보면 해당 디렉토리 크기, 아이콘의 위치, 폴더의 배경에 대한 정보들을 얻을 수 있다.
맥 OS 환경에서만 생성 및 사용되지만, 파일을 공유하는 과정에서 이 파일도 같이 공유되는 경우가 있다.
DS_store 파일은 프로젝트와 관련없는 파일이며, git status를 사용했을 때 발견되는 파일이니, github로 넘기지말고 삭제해도 된다.
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
만약, 앞으로도 .DS_Store 파일을 업로드하지 않을거라면,
저장소 상위 디렉토리에 .gitignore 파일 생성 및 .DS_Store 파일 추가
echo .DS_Store >> .gitignore
git add --all
git commit -m '.DS_Store removed'
git push origin main
이 글은 Git 공식 문서를 통해 배운 것을 정리한 내용입니다.
개발을 하다 보면 코드를 여러 개로 복사해야 하는 일이 생기거나 팀 프로젝트에서 개인이 독립적으로 개발을 진행할 때 필요한 것이 브랜치
다.
Git은 브랜치를 만들어 작업하고 나중에 Merge 하는 방법을 권장한다.
Git의 브랜치는 커밋 사이를 가볍게 이동할 수 있는 어떤 포인터 같은 것이다.
기본적으로 Git은 master
(현재는 main
)을 만든다.
처음 커밋하면 이 master
브랜치가 생성된 커밋을 가리킨다. 이후 커밋을 만들면 master
브랜치는 자동으로 가장 마지막 커밋을 가리킨다.
브랜치를 하나 새로 만들면 어떻게 될까?
git branch
명령어로 testing
브랜치를 만든다.
$ git branch testing
HEAD
라는 특수한 포인터가 있는데, 이 포인터는 지금 작업하는 로컬 브랜치를 가리킨다.브랜치를 새로 만들었지만, 아직 Git은 master
브랜치를 가리키고 있다.
git log
명령에 --decorate
옵션을 사용하면 쉽게 브랜치가 어떤 커밋을 가리키는지 확인할 수 있다.
git log --oneline --decorate
f30ab (HEAD -> master, testing) add feature #32 - ability to add new formats to the central interface
34ac2 Fixed bug #1328 - stack overflow under certain conditions
98ca9 The initial commit of my project
f30ab (HEAD -> master, testing)
통해 master
브랜치를 가리키고 있는 것을 확인할 수 있다.git checkout
명령으로 현재 브랜치에서 다른 브랜치로 이동할 수 있다.
현재 master
브랜치에서 새로 만든 testing
브랜치로 이동하는 명령어는 다음과 같다.
git checkout testing
이렇게 하면 HEAD는 testing
브랜치를 가리키는 것을 확인 할 수 있다.
만약 다시 master
브랜치로 이동하고 싶으면, git checkout
명령을 사용하면 된다.
현재 브랜치가 가리키고 있는 히스토리가 무엇이고, 어떻게 갈라져 나왔는지 확인하려면 git log
명령를 입력하면 된다.
git log --oneline --decorate --graph --all
입력하면 히스토리를 출력한다.
git log --oneline --decorate --graph --all
* c2b9e (HEAD, master) made other changes
| * 87ab2 (testing) made a change
|/
* f30ab add feature #32 - ability to add new formats to the
* 34ac2 fixed bug #1328 - stack overflow under certain conditions
* 98ca9 initial commit of my project
아래의 글은 Git 마스터 과정에서 배운 것을 정리한 내용입니다.
git hist
를 통해 branch에 대한 현재 상태를 확인할 수 있다.
checkout
을 하게 되면 원하는 버전으로 갈 수 있고, 원하는 branch로도 이동이 가능하다.
내가 원하는 branch로 이동하고 싶다면 checkout
, switch
둘 중 하나 선택해서 하면 된다.
git branch testing #create a new branch called testing
# 새로운 "testing"이라는 branch를 만든다.
git checkout testing #switches to testing branch
# testing branch로 이동하게 된다.
git checkout [hashcode]
# checkout 뒤에 hashcode를 입력하게 되면 해당 commit으로 이동하게 된다.
# 그리고 git hist를 통해 확인하면, (HEAD)가 최신 commit이 아니라,
# 방금 checkout한 commit을 가리키게 된다.
git switch testing #same as the above
# 다른 branch 로 이동할 때 switch를 사용한다.
git checkout -b testing #create and switch to testing
# 새로운 branch를 만들고 나서 동시에 새로운 branch에 이동이 된다.
# 밑의 git switch -C testing 과 같은 의미이다.
git switch -C testing #same as the above
# 새로운 branch를 만들고 나서 동시에 새로운 branch에 이동이 된다.
# ex) git switch -C new-branch : new-branch로 만들고 나서, new-branch로 이동하게 된다.
git branch #simple listing of all branches
#내 컴퓨터안의 branch들을 보여준다.
git branch -r #sees the remote branches
git branch --all #list including remote branches
# 서버에 있는 branch들의 모든 정보를 보여준다. Gitbub와 같은 서버
git branch -v #sees the last commit on each branch
# 간단하게 최신 commit들을 확인할 수 있다.
git branch --merged #sees merged branches
# 현재 merged된 branch들을 확인할 수 있다.
git branch --no-merged #sees not merged branches
# master branch에서 merge되지 않은, 즉 master branch에서 파생된
# 다른 변경사항, 다른 commit 있는 것을 보여준다.
git branch -d testing #deletes the branch
# testing이라는 branch를 삭제할 때 옵션 -d를 쓰면 된다.
git push origin --delete testing
# 원격에 있는 곳에도 삭제를 원할 시 사용한다.
git branch --move wrong correct #rename
# 이름을 correct로 변경하고 싶을 때
git push --set-upstream origin correct #push new name
# 원격에 업데이트 하고 싶을 때
# 원격에 correct라는 이름으로 업데이트 하고 싶을 때
git log branch1..branch2 #all the commits between branch1 and branch2
# branch1와 branch2 사이 commit을 확인하고 싶을 때 git log를 사용한다.
git diff branch1..branch2 #all the changes between branch1 and branch2
# 마찬가지로 코드를 확인하고 싶을 때 git diff를 사용한다.
# 로컬 Git 저장소 브랜치의 이름을 변경(수정)하는 방법
git branch -m [Old_branch] [New_branch]
# git branch의 m 옵션을 사용하면 브랜치의 이름을 변경할 수 있다.
# [Old_branch]에는 이름을 변경하고 싶은 브랜치를 지정하고,
# [New_branch]에는 새로운 브랜치 이름을 지정한다.
# GitHub 저장소 브랜치 이름을 변경(수정)하는 방법
git push origin [New_branch]
# 1. 로컬에서 변경한 [New_branch] 이름을 GitHub에 반영한다.
git push origin --delete [Old_branch]
# 2. 기존 origin에 있는 [Old_branch]를 삭제한다.
git push origin :[Old_branch] [New_branch]
# 1+2. 브랜치의 생성과 삭제를 한 번에 할 수 있다.
# [Old_branch]를 삭제하고, [New_branch]를 생성하는 방법이다.