
git help 명령어, man git-명령어.git 디렉토리 = 레포지토리. 커밋들이 저장되는 공간
git config user.name "내이름"git config user.email "내이메일"git add 파일이름git add .git reset 파일이름git commit -m "커밋메시지"git log --pretty=onelinegit config alias.history 'log --pretty=oneline'git show 커밋아이디(대충앞4자리)
-가 이전파일, +가 현재파일git commit --amendi 누르고 수정, :wq를 통해서 나가기git diff 커밋아이디(4자리) 커밋아이디(4자리)
git reset --hard 커밋아이디
--hard: 해당커밋 이후로 한 작업들이 전부 사라짐git reset --hard HEAD^git reset --hard HEAD~xgit tag [태그 이름] [커밋 아이디]git taggit show [태그 이름]git status
git init : 현재 디렉토리를 Git이 관리하는 프로젝트 디렉토리(=working directory)로 설정하고 그 안에 레포지토리(.git 디렉토리) 생성
git config user.name 'codeit' : 현재 사용자의 아이디를 'codeit'으로 설정(커밋할 때 필요한 정보)
git config user.email 'teacher@codeit.kr' : 현재 사용자의 이메일 주소를 'teacher@codeit.kr'로 설정(커밋할 때 필요한 정보)
git add [파일 이름] : 수정사항이 있는 특정 파일을 staging area에 올리기
git add [디렉토리명] : 해당 디렉토리 내에서 수정사항이 있는 모든 파일들을 staging area에 올리기
git add . : working directory 내의 수정사항이 있는 모든 파일들을 staging area에 올리기
git reset [파일 이름] : staging area에 올렸던 파일 다시 내리기
git status : Git이 현재 인식하고 있는 프로젝트 관련 내용들 출력(문제 상황이 발생했을 때 현재 상태를 파악하기 위해 활용하면 좋음)
git commit -m "커밋 메시지" : 현재 staging area에 있는 것들 커밋으로 남기기
git help [커맨드 이름] : 사용법이 궁금한 Git 커맨드의 공식 메뉴얼 내용 출력
git push -u origin master : 로컬 레포지토리의 내용을 처음으로 리모트 레포지토리에 올릴 때 사용합니다.(-u origin master가 무슨 뜻인지는 'Git에서 브랜치 사용하기' 챕터에서 배울 거니까 걱정마세요!)
git push : 로컬 레포지토리의 내용을 리모트 레포지토리에 보내기
git pull : 리모트 레포지토리의 내용을 로컬 레포지토리로 가져오기
git clone [프로젝트의 GitHub 상 주소] : GitHub에 있는 프로젝트를 내 컴퓨터로 가져오기
git log : 커밋 히스토리를 출력
git log --pretty=oneline : --pretty 옵션을 사용하면 커밋 히스토리를 다양한 방식으로 출력할 수 있습니다. --pretty 옵션에 oneline이라는 값을 주면 커밋 하나당 한 줄씩 출력해줍니다. --pretty 옵션에 대해 더 자세히 알고싶으면 이 링크를 참고하세요.
git show [커밋 아이디] : 특정 커밋에서 어떤 변경사항이 있었는지 확인
git commit --amend : 최신 커밋을 다시 수정해서 새로운 커밋으로 만듦
git config alias.[별명] [커맨드] : 길이가 긴 커맨드에 별명을 붙여서 이후로 별명으로 해당 커맨드를 실행할 수 있도록 설정
git diff [커밋 A의 아이디] [커밋 B의 아이디] : 두 커밋 간의 차이 비교
git reset [옵션] [커밋 아이디] : 옵션에 따라 하는 작업이 달라짐(옵션을 생략하면 --mixed 옵션이 적용됨)
(1) HEAD가 특정 커밋을 가리키도록 이동시킴(--soft는 여기까지 수행)
(2) staging area도 특정 커밋처럼 리셋(--mixed는 여기까지 수행)
(3) working directory도 특정 커밋처럼 리셋(--hard는 여기까지 수행)
그리고 이때 커밋 아이디 대신 HEAD의 위치를 기준으로 한 표기법(예 : HEAD^, HEAD~3)을 사용해도 됨
과거의 커밋으로 git reset을 한다고 절대 그 이후의 커밋들이 삭제되지 않음
git reset은 과거의 커밋뿐만 아니라 현재 HEAD가 가리키는 커밋 이후의 커밋으로도 가능함
git tag [태그 이름] [커밋 아이디] : 특정 커밋에 태그를 붙임
git remote add origin [GitHub 상 프로젝트 주소] : [GitHub 상 프로젝트 주소]가 가리키는 리모트 레포지토리를 origin이라는 이름으로 내 컴퓨터에 등록하겠다는 뜻. origin 키워드는 관례상 사용되며, 다른 키워드로 변경도 가능함
git branch [새 브랜치 이름]: 새로운 브랜치를 생성
git checkout -b [새 브랜치 이름]: 새로운 브랜치를 생성하고 그 브랜치로 바로 이동
git branch -d [기존 브랜치 이름]: 브랜치 삭제
git checkout [기존 브랜치 이름]: 그 브랜치로 이동
git merge [기존 브랜치 이름]: 현재 브랜치에 다른 브랜치를 머지
git merge --abort: 머지를 하다가 conflict가 발생했을 때, 일단은 머지 작업을 취소하고 이전 상태로 돌아감
git fetch: 로컬 레포지토리에서 현재 HEAD가 가리키는 브랜치의 업스트림(upstream) 브랜치로부터 최신 커밋들을 가져옴(가져오기만 한다는 점에서, 가져와서 머지까지 하는 git pull과는 차이가 있음)
git blame: 특정 파일의 내용 한줄한줄이 어떤 커밋에 의해 생긴 것인지 출력
git revert: 특정 커밋에서 이루어진 작업을 되돌리는(취소하는) 커밋을 새로 생성


git push : local 리포지토리의 commit 내용을 remote 리포지토리(github)로 보내줌git pull : remote 리포지토리의 commit 내용을 local 리포지토리로 가져옴cat 파일이름으로 잘 읽어왔는지 확인 가능!
git clone 깃허브링크(https://github.com/리포지토리.git): 다른 프로젝트 가져오기git branch 브랜치이름git checkout 브랜치이름git status로 확인 가능git checkout -b 브랜치이름git branchgit branch -d 브랜치이름git merge [가져오고자하는브랜치이름(B)] 를 실행함git merge --abort
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin master
git pull - conflict 발생 파일을 열어서 확인하고 수정함 - git pushgit fetch를 이용해서 branch로 불러오고, git diff 로컬리포지토리의브랜치 리모트리포지토리의브랜치를 실행해서 차이점을 체크한 후 git merge를 활용해서 merge하기git fetch + merge == git pullgit blame 파일명, git show를 사용해서 확인할 수 있음git revert 되돌리고싶은커밋의아이디: 이미 remote repository에 올라간 commit을 취소하기 위해서 사용
git reset은 remote repository와 local repository를 연결한 경우, 지양해야 함git push -f옵션을 사용해서 강제로 push해버릴 수도 있음git add . , git commit -m "커밋메시지")git reflog: 지금까지 HEAD가 가리켜온 commit들의 기록. 이를 통해 직전에 HEAD가 가리키던 commit의 아이디를 얻어서 git reset --hard 아이디로 돌아갈 수 있음. git log --pretty=oneline --all을 이용하면 모든 branch의 commit history를 확인할 수 있음. 이 때 더 가시적으로 효과적이게 표현하려면 git log --pretty=oneline --all --graph을 활용할 수 있음. 이 때 * 표시가 commit 하나이다. git rebase 브랜치 : 실행 결과는 merge와 동일함

git stash로 저장git stash list로 확인 가능: 최근 commit 이후 작업했던 내용은 모두 stack에 옮겨지고 working directory 내부는 다시 최근 commit의 상태로 초기화됨git stash apply 를 사용해서 다시 working directory로 불러올 수 있음!git slash로 해결 가능!git stash로 stack에 작업 내용 저장하기git stash apply로 불러오기 (이 때, 정확도를 위해 stash@{0} 등의 아이디를 apply 뒤에 붙여주기!git stash drop 아이디을 통해 지워주자! (가장 최근에 저장된 작업내용의 아이디: stash@{0}git stash pop [작업 내용의 아이디]를 사용하자! (가장 최근에 작업해서 맨 위에 위치한 작업내용의 경우 아이디 생략 가능!)git cherry-pick: 자신이 원하는 작업들이 들어있는 commit들만 가져와서 현재 브랜치에 추가하기 (merge등과 달리 전체 브랜치를 다 가져올 필요가 없어짐)git reset --mixed (or --soft)로 commit은 취소하되 working directory의 내용은 그대로 유지하고, git add ., git commit -m "커밋메시지" 순으로 commit해주기웹 사이트를 만드는 프로젝트에서 새로운 기능인 "사용자 프로필 페이지"를 추가하는 상황:
git pull: 먼저 원격 저장소에서 최신 코드를 받아와서 현재 로컬 코드가 최신 상태인지 확인하고, 다른 사람이 진행한 작업을 로컬 리포지토리에 포함시킴
git checkout -b add_profile_page: 새로운 기능을 위한 브랜치를 생성하고 적절히 명명하기
git add -A: 새로운 프로필 페이지에 필요한 모든 파일과 변경 사항을 staging area에 추가하기 (새로운 HTML, CSS, JavaScript 파일 등)
git commit -m "feat: add user profile page": staging area에 있는 변경사항을 커밋
git push: 커밋한 변경 사항을 원격 저장소에 푸시합니다. 이를 통해 다른 팀원들이 이 변경 사항을 볼 수 있게 됩니다.
git clone https://github.com/<username>/<repository-name>.git )git pull)git checkout -b) → 변경 사항 커밋 (git add & git commit) → git push → PR 생성



<<<<<<<<<<<<<<<< : current change (현상태)>>>>>>>>>>>>>>>> : incoming change (제안되는코드)git merge main를 통해서 원본 브랜치의 최신 변경 이력을 main 브랜치로 가져오는 것