-
[Git] Git 명령어 모음Github 2022. 12. 3. 17:07728x90
1. Git 영역
- Working Directory ( Local )
: 개인 코드 작성
- Staging area
: git add를 통해 수정된 코드를 올리는 영역
- Repository
: git commit 을 통해서 최종 수정본을 제출
2. github업로드 절차(프로세스)
1. github 원격 저장소 생성
2. github 원격 저장소 clone(복제하기)
3. 내 로컬(컴퓨터)에 프로젝트 생성 후, 복제한 원격 저장소 다운받기
4. 내 로컬의 원격 저장소 폴더에서 작업(코딩)하기
5. add : 작업한 파일 중에서 원격 저장소에 반영할 부분 추가하기
6. commit : 먼저 로컬(내 컴퓨터)에서 수정된 소스 파일 반영하기
7. push : 로컬(내 컴퓨터)에서 수정한 소스 파일을 github원격 저장소에 저장하기
8. github.com/[id]/[repository] 링크를 통해 정상적으로 업로드 되었는지 확인
3. Git 명령어 모음
Git 최초 설정 ( 사용자 이름과 이메일 설정 )
global 옵션 : 현재 시스템의 모든 Git작업에 사용할 user.name, user.email 을 설정합니다.
$ git config --global user.name [이름] $ git config --global user.email [이메일]
로컬 저장소의 git 히스토리 삭제
$ rm -rf .git
초기화
$ git init
설정 확인
$ git config --list
GitHub 프로젝트 로컬에 가져오기
clone으로 repository 데이터 가져오기
가져오고자 하는 repository의 code > https 주소를 복사한다.
$ git clone [주소]
로컬 Git 저장소에 원격 저장소를 추가
$ git remote add [원격저장소 이름 지정] [주소]
원격 저장소 목록 조회
$ git remote -v
원격 저장소 branch 새로 생성 후 해당 branch로 전환
$ git checkout -b [branch이름] $ git checkout [commit id]
버전 전환.
" git commit [v6의 commit id] " 를 입력하면 아래와 같이 HEAD가 v6를 바라보는 상태가 됩니다.
작업도 v6까지의 작업 상태로 돌아가게 됩니다.
branch 생성
$ git branch [branch이름]
원격 저장소의 branch 확인
$ git branch -r $ git branch // 모든 branch 출력, *붙어있는게 현재 선택된 branch
branch 삭제
$ git branch -d [branch]
branch 변경(전환)
$ git switch [branch이름]
현재 위치 출력
$ pwd
원격 저장소에서 로컬 저장소로 소스 가져오기
- pull : merge O, 원격 저장소의 소스를 가져오고 해당 소스가 현재 내 소스보다 더 최신 버전이라고 하면 지금의 버전을 해당 소스에 맞춰 올린다.
- fetch : merge X, 소스만 가져온다.
$ git fetch [remote]
$ git pull [remote명] [branch명]
Merge (병합)
exp 브런치를 main 브런치와 병합
$ git checkout [branch] //git checkout main $ git merge [branch] //git merge exp
충돌
exp, main 브런치로 따로 작업하다가 Merge하는 경우 수정된 파일이 우선이 됩니다. 하지만 둘다 수정이 된 경우에는 conflict가 발생합니다. merge 충돌입니다.
이 때 사용되는 해결 방법인 "3 way merge" 가 있습니다.
3 way merge는 충돌이 발생한 branch의 부모 branch(base branch)를 기준으로 개발자가 직접 내용은 변경합니다.
base branch를 기준으로 수정 작업이 이루어졌으니 이 시점이 기준이 되는 것입니다.
Working Directory상의 변경 내용을 Staging area에 추가
$ git add . //현재 디렉토리의 모든 변경 내용을 staging area로 넘긴다. $ git add -A //작업 디렉토리내의 모든 변경 내용을 모두 staging area로 넘긴다 $ git add -p //각 변경 사항을 터미널에서 직접 눈으로 하니씩 확인하면서 staging area로 넘기거나 제외시킬 수 있다. $ git add [file name] // 작업 디렉토리내의 특정 파일만 staging area로 넘긴다.
add( stage에 올리기)
> commit하기 전에 저장을 원하는 파일들을 묶는 일
> untracked -> tracked
-a : tracked만 adding
git add + "tab"
tab을 누르면 자동완성됩니다.
add 내역 확인
$ git status
Repository에 commit
특정 시점에 파일의 변화를 저장하기 ( = save)
$ git commit -m [메시지] $ git commit -am [메시지] // add와 commit 동시에 실행
언제든지 commit한 시점으로 되돌아 갈 수 있음.
현재 작업 내용이 내 컴퓨터에 저장됨.
-a 옵션은 tracked 상태의 파일만 auto adding 해준다. ( untracked 상태 제외)
commit 메시지 변경
$ git commit --amend -m [commit 메시지]
commit 이력 확인
$ git log $ git log --oneline //한 줄로 요약
log화면에서 나가려면 "q" 를 입력하면 됩니다.
여태까지 모든 작업 내역이 기록되어 복원할 수 있습니다.
$ git reglog
변경 내용 확인
$ git diff
push
commit한 이력이 repository로 저장
현재 폴더를 그대로 업로드 하는 것이 아니라, 지금까지의 이력/버전(commit)을 push하는 것이다.
$ git push [remote명] [branch명]
내 컴퓨터에 commit한 파일을 github 사이트에 업로드하는 것
내 컴퓨터에 프로젝트 파일이 없더라고 어디서든지 github 사이트에서 프로젝트 폴더를 다운받아 작업(수정) 가능
$ git push --set-upstream origin [branch name]
한 번만 명령어를 사용하고, 앞으로 설정한 branch name으로 원격 저장소에 push합니다.
pull
원격저장소 변경 사항(이력)을 받아옵니다.
$ git pull [remote명] [branch명]
다른 작업 환경이나 위치에서 작업할 때, 혹은 공동 작업에서 타인이 commit해서 이력 변경 등 경우가 있기 때문에 pull을 통해서 가져온 후 작업을 진행하는 것이 좋다.
git graph 단축기 설정
git config --global alias.l "log --oneline --all --graph"
alias라는 명령어를 이용해서 별명을 설정합니다.
git l
이제 "l"을 입력하면 graph 명령어가 실행됩니다.
파일 상태
M : modify (수정된 파일)
U : Untracked files (git 에 안올려서, git에서 관리하고 있지 않은 파일)
.gitignore
.gitignore 파일을에 무시하고자 하는 파일을 추가합니다.
파일이 status에 더 이상 나타지 않습니다.
.gitignore파일이 없다면 새로 생성하면 됩니다.
데이터 베이스 id, pw와 같은 민감한 정보는 git에 올리면 안됩니다.
그렇기 때문에 .gitignore 파일을 통해 실수라도 commit되지 않도록 관리할 수 있습니다.
만약 id, pw가 저장된 포맷이 필요하다면 필요하다면
config.txt.template 파일을 만들어서 아래와 같이 USER_ID, USER_PASSWORD로 적어 놓습니다.
(파일 이름은 마음대로)
Reset
$ git reset --hard [commit id]
RESET = HEAD의 Branch를 바꾼다.
CHECKOUT = HEAD를 바꾼다. (이전 버전으로 돌아감), HEAD를 옮긴다.
ex) 아래와 같은 상태에서 reset 명령어를 사용하여 v7 에서 v6상태로 옮기고 싶습니다.
만약 이 상태에서 reset 명령어를 입력한다면 어떻게 될까요?
$ git reset --hard [v6 commit id]
v7이 사라지고 v6까지의 작업만 남게 됩니다.
실제로는 v7이 사라진 것은 아닙니다. main이 v6를 바라보게 되면서 v7은 삭제한 것과 같은 효과를 얻을 수 있게 됩니다.
728x90'Github' 카테고리의 다른 글
[Github] github blog 테마에 utterances 연동 (0) 2022.12.08 [Github] Github theme 수정 ( Chirpy 커스터마이징) (0) 2022.12.07 [Github] branch rename (0) 2022.12.07 [Github] Github blog 생성하기 (0) 2022.12.06 [Github] Leetcode 연동 (0) 2022.12.03