GIT(1) : 기본개념 및 기본사용법

notepad·2023년 1월 29일
0

git

목록 보기
1/14

git을 알음알음 사용하다 보니, 한번 정리의 필요성을 느껴
기본부터 정리하는 과정.
앞부분은 local에서의 작업만 다룬다.

git init

git 의 시작
.git 폴더가 만들어지면 해당폴더를 root로 git tracking 가능

git init

touch <file>

touch README.MD 등 새로운 빈 파일을 생성함.

# touch <something>
touch README.MD
touch main.py

git status

현재 git 의 상태를 출력한다.
현재 branch 및 tracking 상태 등을 출력.

veritas@veritas:~/git/gittest$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	README.MD
	main.py

nothing added to commit but untracked files present (use "git add" to track)

git log

현재 git의 log 출력
git log --oneline 으로 한줄출력할수 있음.

veritas@veritas:~/git/gittest$ git log --oneline
51b7eaf (HEAD -> master) git add for deleted file
5e50429 (dev2, dev) initial commit

git add <file1> <file2>

git add README.MD main.py

현재 git 에서 untrack 되는 파일을 track 되도록 지정한다.

git add .

를 실행하면 현재 untrack 되는 모든 파일을 자동으로 tracking 시작
이상태에서 git status 를 실행하면 tracking 되는 상태로 변경됨.

veritas@veritas:~/git/gittest$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
	new file:   README.MD
	new file:   main.py

*삭제된 파일에 대한 git add

tracking 되는 파일을 삭제한 후에 해당 파일을 다시 git add하면 삭제된 상황이 tracking 된다.

veritas@veritas:~/git/gittest$ git switch master
Switched to branch 'master'
veritas@veritas:~/git/gittest$ ls
main.py  README.MD
veritas@veritas:~/git/gittest$ rm -rf main.py
veritas@veritas:~/git/gittest$ git status
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	deleted:    main.py

no changes added to commit (use "git add" and/or "git commit -a")
veritas@veritas:~/git/gittest$ git add main.py
veritas@veritas:~/git/gittest$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	deleted:    main.py

veritas@veritas:~/git/gittest$ git commit -m "git add for deleted file"
[master 51b7eaf] git add for deleted file
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 main.py
veritas@veritas:~/git/gittest$ git status
On branch master
nothing to commit, working tree clean

git commit -m <message>

commit 을 통해 변경 사항을 반영함.
commit 은 message 를 동반하며 보통 -m 옵션을 동반하여 한번에 메세지를 작성한다.
git commit 만 쓰면 설정된 에디터를 통해 commit message를 작성하게된다.

veritas@veritas:~/git/gittest$ git commit -m "initial commit"
[master (root-commit) 5e50429] initial commit
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README.MD
 create mode 100644 main.py

git commit --amend

해당 옵션은 바로직전의 commit이 잘못되서 변경하고 싶을때 사용
원래 적용하고 싶었던 변경사항을 git add 하여 traking 하고

git commit --amend

를 실행하면 에디터에서 commit message를 수정하여 commit 이 변경된다.

git branch <branch>

새로운 branch 생성.
현재 HEAD가 위치한 branch 를 복사하여 새로운 branch 생성
HEAD 는 새로운 branch 가 아닌 복사의 대상이된 branch 에 머문다.

git branch dev

혹은 git checkout -b <branch> 로 생성가능(생성 및 해당 브랜치로 HEAD 변경)

veritas@veritas:~/git/gittest$ git status
On branch master
nothing to commit, working tree clean
veritas@veritas:~/git/gittest$ git checkout -b bugfix
Switched to a new branch 'bugfix'
veritas@veritas:~/git/gittest$ git branch
* bugfix
  master

git branch

현재 local에 존재하는 branch 리스트를 보여줌.
*가 붙은 branch 가 현재 HEAD 가 위치한 branch

veritas@veritas:~/git/gittest$ git branch
  dev
* master

git switch <branch>

branch 변경 ( HEAD 변경)
checkout 커맨드로도 가능. 다만 checkout이 기존의 command 이고 옵션이 다수 존재
switch 가 새로 생긴 커맨드라고 보면된다.

veritas@veritas:~/git/gittest$ git switch dev
Switched to branch 'dev'
veritas@veritas:~/git/gittest$ git branch
* dev
  master
veritas@veritas:~/git/gittest$ 

-c 옵션으로 새로운 branch 를 만듬과 동시에 새로운 branch 로 이동가능

veritas@veritas:~/git/gittest$ git switch -c dev2
Switched to a new branch 'dev2'
veritas@veritas:~/git/gittest$ git branch
  dev
* dev2
  master

git branch -d (-D) <branch>

브랜치 삭제 command
-d 는 delete
-D 는 delete 에 force가 붙어 강제적으로 삭제함.
기본적으로 -d 는 사용할 수 있는 상황이 적음. (merge 가 선행되거나 삭제하려는 branch에 commit이 없어야함.)
또한 삭제하려는 branch가 아닌 다른 branch 에서 시행해야됨.
local만 존재하는 git 환경에서는 유의

veritas@veritas:~/git/gittest$ git branch
  dev
  dev2
* master
veritas@veritas:~/git/gittest$ git switch -c deleteme
Switched to a new branch 'deleteme'
veritas@veritas:~/git/gittest$ git status
On branch deleteme
nothing to commit, working tree clean
veritas@veritas:~/git/gittest$ touch deleteme.txt
veritas@veritas:~/git/gittest$ git add deleteme.txt 
veritas@veritas:~/git/gittest$ git commit -m "add deleteme.txt on deleteme branch"
[deleteme 779a1f9] add deleteme.txt on deleteme branch
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 deleteme.txt
veritas@veritas:~/git/gittest$ git branch -d deleteme
error: Cannot delete branch 'deleteme' checked out at '/home/veritas/git/gittest'
veritas@veritas:~/git/gittest$ git branch -D deleteme
error: Cannot delete branch 'deleteme' checked out at '/home/veritas/git/gittest'
veritas@veritas:~/git/gittest$ git switch master
Switched to branch 'master'
veritas@veritas:~/git/gittest$ git branch -d deleteme
error: The branch 'deleteme' is not fully merged.
If you are sure you want to delete it, run 'git branch -D deleteme'.
veritas@veritas:~/git/gittest$ git branch -D deleteme
Deleted branch deleteme (was 779a1f9).
veritas@veritas:~/git/gittest$ git branch
  dev
  dev2
* master

git branch -m(-M) <branch>

branch 의 이름 변경
branch 삭제와 달리 이름을 변경하고자 하는 branch에서 수행

veritas@veritas:~/git/gittest$ git status
On branch master
nothing to commit, working tree clean
veritas@veritas:~/git/gittest$ git branch
  dev
  dev2
* master
veritas@veritas:~/git/gittest$ git switch dev
Switched to branch 'dev'
veritas@veritas:~/git/gittest$ git status
On branch dev
nothing to commit, working tree clean
veritas@veritas:~/git/gittest$ git branch -m dev3
veritas@veritas:~/git/gittest$ git status
On branch dev3
nothing to commit, working tree clean
veritas@veritas:~/git/gittest$ git branch
  dev2
* dev3
  master

0개의 댓글