목차
git init
현재 디렉토리를 git 레포지토리로 설정하는 명령
% git init
힌트: Using 'master' as the name for the initial branch. This default branch name
힌트: is subject to change. To configure the initial branch name to use in all
힌트: of your new repositories, which will suppress this warning, call:
힌트:
힌트: git config --global init.defaultBranch <name>
힌트:
힌트: Names commonly chosen instead of 'master' are 'main', 'trunk' and
힌트: 'development'. The just-created branch can be renamed via this command:
힌트:
힌트: git branch -m <name>
/Users/heypli/git_test/.git/ 안의 빈 깃 저장소를 다시 초기화했습니다
.git 레포지터리가 생기고 마스터 브랜치가 할당된다.
git init 이후 폴더가 자동으로 생성된다.
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
config 파일 안에 들어있는 내용이다.
사용자가 변경하거나 수정할 부분은 딱히 없다.
hey-pli-MacBook-Pro .git % git config user.name heypli
hey-pli-MacBook-Pro .git % cat config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[user]
name = heypli
user를 추가하면 config파일에도 추가된 걸 확인할 수 있다.
.gitignore
git을 이용해서 파일관리하지 않을 파일을 지정한다.
로그성 파일이나 특정 os, 플랫폼에 의존적인 파일은 제외하는 것이 좋다.
ex) DS_Store, log, Thumb.db, settings(eclipse) 등드
별도로 관리가 필요한 파일
=> 프로젝트 관련 모든 파일
.gitignore 파일 생성
% vim .gitignore
######################
.DS_Store
*.log
*.iml
temp/
gitignore 테스트
% touch .DS_Store
% echo "test" > test.html
% git status
추적하지 않는 파일:
(커밋할 사항에 포함하려면 "git add <파일>..."을 사용하십시오)
.gitignore
test.html
커밋할 사항을 추가하지 않았지만 추적하지 않는 파일이 있습니다 (추적하려면 "git
add"를 사용하십시오)
gitignore파일에 있는 .DS_Store파일은 보이지 않는다.
git status
레포지터리 상태를 보여주는 명령
% echo "<html> </html>" > inex.html
% git status
현재 브랜치 master
아직 커밋이 없습니다
추적하지 않는 파일:
(커밋할 사항에 포함하려면 "git add <파일>..."을 사용하십시오)
index.html
커밋할 사항을 추가하지 않았지만 추적하지 않는 파일이 있습니다 (추적하려면 "git
add"를 사용하십시오)
index.html을 add를 통해서 추가할 경우
% git add index.html
% git status
현재 브랜치 master
아직 커밋이 없습니다
커밋할 변경 사항:
(스테이지 해제하려면 "git rm --cached <파일>..."을 사용하십시오)
새 파일: index.html
새로운 파일을 추가했을 때
% echo "<html><h1>hi </h1></html>" > hi.html
% git status
현재 브랜치 master
아직 커밋이 없습니다
커밋할 변경 사항:
(스테이지 해제하려면 "git rm --cached <파일>..."을 사용하십시오)
새 파일: index.html
추적하지 않는 파일:
(커밋할 사항에 포함하려면 "git add <파일>..."을 사용하십시오)
hi.html
add를 하지 않으면 커밋/추적할 수 없다.
git add
working directory파일을 staging area로 옮기는 명령
% git add <파일명>
% git add index.html
% git add # 현재 디렉터리에 있는 추적하지 않는 파일
임의의 파일 두 개를 생성한다.
% touch index.html
% touch hi.html
% git status
현재 브랜치 master
아직 커밋이 없습니다
추적하지 않는 파일:
(커밋할 사항에 포함하려면 "git add <파일>..."을 사용하십시오)
hi.html
index.html
커밋할 사항을 추가하지 않았지만 추적하지 않는 파일이 있습니다 (추적하려면 "git
add"를 사용하십시오)
index.html 파일만 add해서 staging area로 옮긴다.
% git add index.html
% git status
현재 브랜치 master
아직 커밋이 없습니다
커밋할 변경 사항:
(스테이지 해제하려면 "git rm --cached <파일>..."을 사용하십시오)
새 파일: index.html
추적하지 않는 파일:
(커밋할 사항에 포함하려면 "git add <파일>..."을 사용하십시오)
hi.html
staging area에서 해제
% git rm --cached <파일>
% git rm --cached index.html
rm 'index.html'
% git status
현재 브랜치 master
아직 커밋이 없습니다
추적하지 않는 파일:
(커밋할 사항에 포함하려면 "git add <파일>..."을 사용하십시오)
hi.html
index.html
커밋할 사항을 추가하지 않았지만 추적하지 않는 파일이 있습니다 (추적하려면 "git
add"를 사용하십시오)
모든 파일을 스테이징 영역으로 옮긴다.
% git add .
# 해제 하는 방법
% % git rm -r --cached .
rm 'hi.html'
rm 'index.html'
interactive를 이용해서 파일 커밋
% git add -i
git commit
staging area에 있는 파일을 레포지터리에 저장.
% git commit
% git commit -m [커밋메시지]
% git commit -a -m [커밋 메시지]
파일을 add 한 뒤 git commit을 입력하면 vim editor창이 출력된다.
맨 위에 커밋 메시지를 작성한다.
입력 메시지가 간단한 경우
% git commit -m "Add hi.html"
[master ad7ccac] Add hi.html
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 hi.html
-m 옵션을 이용해서 간편하게 등록할 수 있다.
이미 커밋된 파일을 수정하는 경우
% echo "<html></html>" > index.html
% git status
현재 브랜치 master
커밋하도록 정하지 않은 변경 사항:
(무엇을 커밋할지 바꾸려면 "git add <파일>..."을 사용하십시오)
(use "git restore <file>..." to discard changes in working directory)
수정함: index.html
% git commit -a -m "index.html 수정"
[master f3cc72d] index.html 수정
1 file changed, 1 insertion(+)
git log
저장소에 있는 커밋 이력을 조회하는 명령
#현재 브랜치에 커밋이력을 상세히 조회
% git log
# 커밋 이력 중 커밋id, title message만 조회
% git log --oneline
# 모든 브랜치 이력조회
% git log --oneline --decorate --graph --all
#특정 파일 변경 커밋조회
% git log -- index.html
명령어 사용 방법
% git log
commit d606628454a7f254501e874be3d335798724c52a (HEAD -> master)
Author: heypli <heypli@naver.com>
Date: Tue Jul 19 14:51:09 2022 +0900
modified index.html
commit aae6b664c2d7fac4704c409f107fff71eac1afe5
Author: heypli <heypli@naver.com>
Date: Tue Jul 19 14:50:09 2022 +0900
add file
commit e4df50f51a8d802acbe90f17290aeeb1467df625
Author: heypli <heypli@naver.com>
Date: Tue Jul 19 14:49:37 2022 +0900
add index.html
상세 정보가 조회된다.
% git log --oneline
d606628 (HEAD -> master) modified index.html
aae6b66 add file
e4df50f add index.html
타이틀메시지 확인 가능
% git log -- index.html
commit d606628454a7f254501e874be3d335798724c52a (HEAD -> master)
Author: heypli <heypli@naver.com>
Date: Tue Jul 19 14:51:09 2022 +0900
modified index.html
commit e4df50f51a8d802acbe90f17290aeeb1467df625
Author: heypli <heypli@naver.com>
Date: Tue Jul 19 14:49:37 2022 +0900
add index.html
index.html파일의 변경이력 조회 가능
git diff
commit된 파일의 내용과 working directory 파일 내용을 비교하는 명령어
% git diff
# 특정 커밋과 비교
% git diff [commit id]
# 특정 커밋의 특정 파일과 비교
% git diff [commit id] -- [파일명]
git diff > 변경된 파일이 있을 경우 변경된 내용 표시
git diff [commit id] > 특정 커밋과 비교
git diff [commit id] -- [파일명] > 특정 커밋의 특정 파일과 비교 ( -- 뒤에 한 칸 띄워야함)
git branch
깃 브랜치는 개발을 독립적으로 진행하기 위한 작업 개념
여러 작업을 동시에 진행할 수 있다.
# 브랜치 생성
% git branch [branch name]
#브랜치 삭제
% git branch -d [branch name]
# 브랜치 이름 변경
% git branch -m [branch name]
branch생성시 아래와 같은 에러가 날 경우
fatal: 올바른 오브젝트 이름이 아닙니다: 'master'.
fatal: Not a valid object name: 'master'.
마스터 브랜치에서 최초의 커밋이후 브랜치를 생성할 수 있다. .gitnore 혹은 readme 파일이라도 커밋한 후 브랜치를 생성하자.
git branch 생성
% git branch dev
branch가 생성된 것을 확인할 수 있다.
git branch 삭제
% git branch -d dev
git branch 이름 변경
% git branch -m dev develop
git checkout
working directory의 소스를 특정 커밋이나 브랜치로 변경하는 명령어
% git checkout [branch]
% git checkout [commit id]
# 특정 파일을 해당 브랜치, 커밋 상태로 변경
% git checkout -- [파일 경로 ]
master branch에 아무것도 없는 index.html을 만든 후 브랜치를 변경한다.
% touch index.html
% git checkout dev
'dev' 브랜치로 전환합니다
index.html 파일에 태그를 추가한 후 커밋한다.( 커밋하지 않으면 수정된 파일은 브랜치를 바꿔도 유지된다.)
% git checkout dev
'dev' 브랜치로 전환합니다
% echo "<html></html>" > index.html
% git commit -m "add tag"
[dev ff82619] add tag
1 file changed, 1 insertion(+)
master 브랜치로 넘어와 index.html을 확인하면 파일에 아무것도 없다.
% git checkout master
'master' 브랜치로 전환합니다
% cat index.html
해당 브랜치에서 작업하면 해당 브랜치에만 존재한다.
git merge
두 개의 브랜치의 소스를 병합하는명령
% git checkout master
% git merge dev
master브랜치에 dev소스가 병합된다.
같은 파일에 같은 부분을 변경하는 경우 git에서 자동머지를 할 수 없다.
해당 파일을 확인해서 어떤 부분을 커밋할건지 설정한다.
<html><h1>hello</h1></html>
출처: https://bnzn2426.tistory.com/44 [보통의 개발자:티스토리]
참고
https://backlog.com/git-tutorial/kr/stepup/stepup1_1.html
'git' 카테고리의 다른 글
docker gitlab-runner 실행해서 연결하기 (0) | 2023.04.06 |
---|---|
git 설치 및 다운로드 설정파일 정보 확인 사용자 등록 (0) | 2022.07.14 |
gitlab package registry 생성 후 라이브러리 올리는법(gradle) (0) | 2021.05.04 |
intellij gitlab 기존소스 연동하는방법 (1) | 2021.05.04 |
git 사용방법 (with sourcetree) (0) | 2021.01.06 |