깃강의 정리.

이호용·2022년 7월 10일
1

git정리!

목록 보기
1/1

구름 IDE

commit

바뀐걸 기록하는것.
그리고 로그기록과 함께 저장된다.

누가 많이 개발하는지 확인하는 명령어

 git shortlog -sn

폴더별 누가 기여를 많이 했는지.

아래 사진에서 mnist 파일에 누가 많이 기여했는지 확인하고 싶다.

git shortlog -sn -- minst/

특정기간 이후로 기여많이 한것 확인.

git shortlog -sn --after=2018-01-01 -- mnist/

특정기간 전후 로그

git log --online --after=2018-01-01 --befor=2019-01-01

특정기간 전후 로그 개수

git log --online --after=2018-01-01 --befor=2019-01-01 | wc -l

특정파일 특정기간 로그

특정기간 전후 로그 개수

git log --online --after=2018-01-01 --befor=2019-01-01 --파일이름. 

log중에서 merge빼고 보는법

git log --oneline --no-merges

커밋메세지 규칙

Add : 없는기능 옵션 추가할 때 (파일추가할때 쓰는경우가 많은데, 그것보다 이 파일을 왜 추가했는지 설명달아주는게 더 좋음!)
Fix: 잘못된 것을 고친것
Improve: 원래는 잘되던건데 개선한 것 (예: 10초 → 5초)
Implement: 설계를 구현 (미리 Discussion 된 부분을 구현)
Support: 윈도우 → 리눅스, ARM → x86 에서도 가능하게 고칠시

깃 설정.

git config --global user.name "Hoyong Lee"
git config --global user.email "ghdyd6372@naver.com"
git config --global core.editer nano
sudo apt install -y nano 

branch에만 작업하기.

master에 test파일 없고 test 브랜치에는 test파일이 있음.
add 랑 commit 해야 test브랜치에 적용이됨.

git checkout -b test
echo "hihihi" > test
git add .
git commit -m "test파일 만들었습니다."
git checkout master

rebase

공동작업을 하는중. 다른개발자가 먼저 머지함.

내거는 옛날 베이스임으로 리베이스를 하고 난뒤에 푸쉬 가능함.

stash : 파일 수정전후의 차이를 확인하고 싶을때

checkout

히스토리를 가져오는것!
히스토리는 .git안에 있다. .git에는 여러 브랜치의 내용이 담겨져있고, checkout으로 파일을 가져올수 있다!

그래서 add, commit을 하면 해당 브랜치에 히스토리에 저장해둬 진다.

commit 하나 취소

git reset --hard HEAD~1

]
]

commit -sm 옵션

-ㄴ


]

커밋하기전에 먼가 배먹었음.

이전 커밋에서 import requests를 커밋했는데 as req를 까먹고 커밋했다.
그럼 새로운 커밋을 또 올려야하나??( 좋지 않음 )
그래서 import requests를 올렸던 커밋을 수정해주자.
--amend 옵션을 사용하면 최신 커밋을 수정할수 있다.

amend사용법은 우선 원하는 부분을 수정한다음에 그냥 add 하고 commit 만 아래와 같이 해주면 최신 커밋과 합쳐진다.

git commit --amend



rebase, blame 활용해보기!! / 응용

아 까 말대로 rebase를 할려고한다.
re base 새롭게 base를 정의
그러기 위해서 원격저장소에서 히스토리로 새로운 base를 가지고온다.

git fetch upstream master 

rebase순서 1

내가 작업한거 일단 되감음 .

rebase순서 2.

기존 base에 fetchfh 받아온 최신 base를 올림.

rebase 순서 3.

다시 올려! 끝!

옛날 커밋에 커밋 올리기.

아래 처럼 커밋이 있는데 f9b87bb 위에 새로운 커밋을 올려보자!

git rebase -i --root

이러고 아래 처럼 나오면 고치고 싶은 곳에 edit을 하자.

자 그럼 이렇게 이전 커밋으로 돌아가버림.

그리고 다시 돌리고 싶으면 continue를 쓰면 예전으로 돌아감.

git rebase --continue

과거로 돌리고 새로운 커밋을 올리고 다시 돌릴수도 있다.!

자 이번엔 hoylee3을 hoylee2 과 합쳐보자.

$ git rebase -i --root
//hoylee3 을 edit으로 바꿔주자. 


$ git reset --soft HEAD~1
$ git status

$ git commit --amend
$ git rebase --continue




]]]

중간에 커밋 없애버리기!

864cf0f 를 없애보자.

git rebase -i --root 

864cf0f 로 이동하자. 그리고

git reset hard HEAD~1

커밋을 날려버릴수 있다!!!

blame이란?

git blame src/node.cc

이렇게 파일에 blame을 쓰면 누가 커밋을 했는지, 커밋로그는 무엇인지 확인할수 있고, 해당 커밋을 확인해서 해당 코드를 왜 넣었는지 파악할때 사용한다.


git fetch upstream master
git rebase upstream/master
git status
git diff
nano README.md
git add .
git rebase --continue
git push origin master -f

0개의 댓글