git init 저장소이름
을 입력하면 작업 시작(혹은 초기화)
git config --global user.name 이름
git config --global user.email 이메일
ls -al
명령어 입력후 마지막에 .git
이 붙는 디렉토리가 버전관리해주는 곳vim 파일이름
으로 파일 열기vim 사용법
i
> 밑에 inset 확인되면 텍스트를 입력하는 모드esc
명령어를 입력하는 모드:wq 파일이름
명령어 입력 모드에서 저장하고 닫기:q!
수정사항 저장하지 않고 파일 종료하기V
줄 단위 선택v
글자 단위 선택y
복사yy
줄단위 복사p
붙여넣기d
잘라내기dd
줄단위 잘라내기
git status
파일의 상태확인(버전 관리가 되고 있는지, 수정되었는지 등)
git log
현재 버전 확인
git commit --amend
최신 커밋 바꾸기(push이전에만 가능)
git show 커밋id(앞4자리)
특정 커밋의 변경사항 확인하기
파일 버전관리 시작하기
git add 파일이름
커밋하고 싶은 파일만 등록
(git add .
변경된 모든 파일 추가)git commit
add에 추가된 파일의 버전 정보 등록 (vim에 버전 정보 입력해주고:wq
)
파일 버전관리 재커밋하기
git commit -a
add한 뒤 바로 commitgit commit -am "버전정보"
add한 뒤 바로 commit 정보 입력add한 파일은 stage area(커밋대기상태)로 간다.
commit된 파일은 repository(원격저장소)로 간다.
git log
: 커밋 기록 확인하기log -p
+: 수정된 부분 -:그 전 내용git diff 커밋번호..커밋번호
두 버전 비교 (difference)git diff
working copy와 index의 내용 비교 (init: 초기화)
git reset 최신화하고 싶은 파일번호 --hard --soft (--mixed : defalt)
(원격저장소에 저장한 이후에는 절대 reset하면 안됨) ,staging area에 올렸던 파일 다시 내리기
git reset HEAD~1
위 명령어는 현재 로컬 브랜치로부터 하나 뒤에 있는 커밋으로 돌아가라는 의미이다. HEAD~ 뒤에 붙여준 1 이 ‘하나 뒤에 있는’ 이라는 의미를 전달하는 것이다.git revert
특정 커밋에서 이루어진 작업을 되돌리는(취소하는) 커밋을 새로 생성git reset --hard --soft (--mixed : defalt) ORIG HEAD
reset 취소하기git reflog
커밋 기록 확인후git reset 좌측 번호
입력 > 해당 커밋으로 복귀
git branch
현재 branch 보기 (defalt: master)git branch 이름
branch 만들기git checkout 이름
만든 branch로 설정하기 (branch 빠져나오려면git checkout master
)git checkout -b 이름
branch를 만들고 checkoutgit checkout 커밋번호
커밋번호로 branch 만들기git log --branches
branch별 commit 확인git log --branches --graph
branch별 commit 그래프로 확인git log --branches --graph --oneline
branch별 commit 그래프 한줄로 확인stree
소스트리 다운로드 후 gui로 branch 확인 가능git log branch a..branch b
a에는 없고 b에는 있는 버전 표시git log -p branch a..branch b
a에는 없고 b에는 있는 버전+소스 표시git diff branch a..branch b
a에는 없고 b에는 있는 소스 표시git branch -d 이름
branch 삭제git merge branch a
현재 branch에서 branch a를 병합git merge --abort
merge 시도 이전으로 되돌리기git stash
수정된 파일 임시저장하기(add된 파일에 한함)git stash apply
임시저장된 파일 꺼내기git stash drop
임시저장된 파일 지우기git stash list
임시저장된 파일 리스트 보기git stash pop
임시저장된 파일 꺼내기+지우기
- branch 병합시 충돌났을때(다른 branch에서 같은 코드를 수정했을때)
- 해당 파일에서 ====윗부분과 아랫부분이 상충되므로 해당 부분 통일해주면 된다.
git config --global merge.tool kdiff3
(오픈소스 kdiff3 다운 필요)git mergetool
충돌난 파일에 대해 병합
git tag 버전
현재 commit에 태그 추가git tag -a 버전 -m "정보"
자세한 정보를 추가하는 태그git tag
현재 태그 확인git tag -v 버전
태그 버전 자세히 확인git tag -d 버전
태그 삭제git rebase 병합하고자 하는 branch
입력merge 메인 branch
입력하기
git remote add origin 주소
>git branch -M main
>git push -u origin main
> 깃허브 로그인(새팝업) : 깃허브 동기화, 현재 작업 파일 깃허브로 pushgit remote -v
현재 저장소 확인(원격저장소와 로컬저장소 연결되었는지 확인)git push
변경사항 깃허브에 반영git push --set-upstream opigin branch이름
새로운 branch push하기git push --tags
태그 깃허브에 반영- 깃허브 소스 clone하기: 깃허브 code>https>link 카피 후
git clone 카피한주소 디렉토리이름
입력git pull
깃허브 소스 가져오기 (master = origin master로 branch 병합됨)git fetch
깃허브 소스 가져오기 (master는 변경없이 ortgin master를 새로 가져옴)
장점: 원격저장소 내용과 현재 작업 내용 차이점 확인 가능(git diff HEAD(최신커밋) origin)
git remote remove origin
원격 저장소와 연결 끊기
ssh-keygen
엔터엔터엔터cd ~/.ssh
>cat id_rsa.pub
에 출력되는 코드 카피- 깃허브 프로필 settings > 좌측 ssh and gpg keys > new ssh key > title에 저장소 이름, key에 코드 붙여넣기 > add ssh key
- develop branch에서 개발을 진행한다.
- 특정한 기능을 개발할때 feature branch를 만들어 진행한다.
- 기능에 대한 작업이 끝나면 develop branch로 가져온다.
- 배포를 해야할 때 release branches에서 진행한다.
- 배포 작업이 끝날때마다 develop branch로 병합을 진행한다.
- 최종배포를 진행할때 master branch로 변경사항을 병합한다. (tag로 버전추가)
- 최종배포 후 버그가 생기면 hotfixes branch에서 수정후 새로운 버전으로 master branch에 배포하고 (tag로 버전수정) develop branch에도 반영한다.