2021.09.25 git log --stat
2021.09.26 git diff
2021.09.26 git push -f
git 은 vcs(Version Control System) 이다.
이 git 은 프로그램 등의 소스 코드 관리를 위한 분산 버전 관리 시스템이다.
분산 버전 관리 시스템 .. ㅡㅡ ??
조금더 쉽게 풀어서 얘기하면
여러명의 개발자 (분산 ) 가 특정 프로젝트를 자신의 컴퓨터로 협업하여 개발하면서 버전을 관리 할 수 있는 시스템이다 .
git 은 중앙 서버 컴퓨터와 여러개의 컴퓨터들이 연결되어 모두 같은 버전의 데이터베이스를 유지한다.
A 라는 컴퓨터에서 업데이트한 것을 중앙서버에 올리면 버전이 업데이트 되고 ,컴퓨터 B 는 이를 중앙 서버 컴퓨터로 부터 최신화 시키면서 버전과 파일을 모두 컴퓨터 A와 동일하게 유지할 수 있다.
이와 같은 작동하는 방식을 분산 버전 관리 시스템 이라고 한다.
git을 사용해서 파일 버전 관리를 할때 파일은 3개의 상태중 하나의 상태가 된다.
git init
프로젝트를 git repository 로 만들기 위해서 사용하는 명령어 이다.
여기서 프로젝트 는 개발하고자 하는 소스코드들이 있는 디렉토리를 말한다.
git init 을 해서 git repo 로 만들어야 git 으로 버전관리가 시작된다.
git add
수정 사항들 , 즉 modified 파일들을 staged 상태로 옴기고자 할때 , 사용하는 명령어 이다. 또한 git repo 에 새로이 추가된 파일들을 staged 상태로 옴길때도 시용된다. 새로이 추가된 파일들은 "untracked" 파일 이라고 하는데 , git 에서는 이들도 수정 사항이라고 보는 것이다.
git commit
staged 된 파일들을 commit 하고자 할때 사용하는 명령어 이다.
git diff
어떤 수정 사항들이 적용됬는지 보고자 할때 사용하는 명령어 이다.
참고로 staged 된 사항들은 git diff 로 볼 수 없습니다.
modified 된 파일들만 git diff 로 볼 수 있다.
git status
commit 내역들을 보여준다.
tig 같은 tool 을 사용해서 보여주기도 한다.
git rm
원하는 파일을 git repo 에서 삭제한다.
git mv
원하는 파일을 git repo 상에서 이동 시킬때 사용한다.
주로 rename 할때 자주 사용한다.
git branch
Branch 를 생성할 때 사용된다.
git checkout
어떤 branch 에서 branch 로 이동하거나 master 로 이동을 할때 사용한다.
git 에서 branch 는 굉장히 중요한 컨셉이며 꼭 이해하는 컨셉이다.
왜냐하면 git을 사용할땐 branch 기반으로 개발하기 때문이다.
git clone 주소
git branch dev/jakdu
git checkout dev/jakdu
수정
git add .
git commit -m "test"
git push origin dev/jakdu
git checkout master
만약에 push 할때 충돌 이 생기면 ??
branch 를 바꾸지 말고 그상태로 다시 pull 을 당겨서 ,
수정을 한후에 push 를 한다.
git branch -d dev/jakdu
git status
git reset HEAD [FILE]
git reset 만 하면 staged 된 모든 파일을 취소한다 .
[ git checkout -b dev ]
b 옵션을 줄 경우, 브랜치가 존재하지 않으면 생성하고 해당 브랜치로 switch해준다
http://honeymon.io/tech/2019/08/30/git-2.23-release.html
https://ujuc.github.io/2020/07/04/git-switch-n-restore-hurt-eo-bo-gi/
git log --stat
git diff 파일 경로를 하게 되면 해당 파일의 수정사항을 볼 수있다.
기존 branch 로 가서
git commit --amend
를 날리고 나서 ,
git push origin [branch이름]
해서 만약에 되지 않는다면
git push origin [branch이름] -f
git push -f 를 붙이게 되면 강제로 올린다는 뜻이다.
git config user.name "yourname"
git config user.email "youremail"
git config --global user.name "yourname"
git config --global user.email "youremail"
로컬 branch 와 remote branch 가 각각 따로 존재한다.
이럴때 로컬 branch 와 remote branch 를 연동해주도록 한다.
git branch --set-upstream-to origin/<branch name>