1. git 설치
- https://git-scm.com/download/win 에서 포터블 버전 가져와 깔고
- 환경 설정 에서 E:\down\_chrome\PortableGit\bin 를 패스에 추가 해준다.
2. 설치 확인
- cmd 창 열고
- git --version
3. gui
- sourcetree : https://www.sourcetreeapp.com/
4. 설정확인
- git config --list
5. 사용자 확인, 설정
git --global user.name "bahk"
git --global user.email "bahk@coree.com"
git config user.name
git config user.email
6. 저장 호환성 유지 설정
win: git config --global core.autocrlf true
\r 을 저장때 빼주고, 꺼낼때 붙여 준다
mac: git config --global core.autocrlf input
\n을 저장때 붙이고 꺼낼때 그냥 가져 온다.
8. master branch rename : 기존에 master 를 main 으로 바꾼다.
git config --global init.defaultBranch <name>
git config --global init.defaultBranch br_initial
git config --global init.defaultBranch main : 이것을 쓸거이다.
확인: git config --list : maser 가 main 으로 바뀌어 있는 것 확인 된다.
7. 시작
md gTest
cd gTest
git init : .git directory 가 생성
dir : .git 보임
git status : 상태보기
11. sourcetree 에 등록
- 파일-열기-E:\srcSky\prjBahk\gTest
- 터미널 열기 : 액션(A) - [터미널에서 열기]
하면 bash cmd 창이 열린다. 자세한것은 help 를 쳐본다.
b@b-PC MINGW32 /e/srcSky/prjBahk/gTest (main)
$ help
맨뒤 (main) 이 기본 브랜치 이름이다.
이후 기본적으로 윈도 cmd 또는 이 bash cmd 창에서 하는 데,
할때마다 sourcetree 에서도 확인 하면서 하자.
12. 트랙킹 하고 싶지 않은 파일.
- 이렇게 파일에 텍스트 넣을때는 그냥 윈도 cmd 창에서 해야 한다.
- bash 창에서 하면 줄끝에 cr 만들어가고 lf 는 안들어간다...
echo *.log > .gitignore
echo # .gitignore >> .gitignore
echo _git_*.txt >> .gitignore
9. alias
git config --global alias.st status : st 가 status 와 같이 동작
즉 git st == git status
확인: git config --list
10. 로컬 3 영역 - 작업, staging, .git(repository) 과 서버 영역
- 작업영역에서 작업하다, 완료 되면 스테이징에 옮겨 놓고, 깃으로 저장
- 깃 디렉토리에서 깃 서버로 저장: PUSH, 서버에서 꺼내는것 pull
11. 보기
파일 만들기
echo a1 > jjj.txt
echo hello world > b.txt
echo hello world > c.txt
git status ( == git st )
스테이징에 옮기기
git add jjj.txt
git st
나머지것도 옮기기
git add b.txt c.txt
git add *.txt
git add .
git status
echo a2 >> a.txt : a.txt 파일 수정
git status
git add a.txt : 수정된 파일이 다시 스테이징으로 들어검.
git status
git rm --cached * : 스테이징된 모든 파일 빼기
git status
13 수정 내용확인
git diff : workibng dir 만 비교해서 보여준다
다른것 보여 준다. 빠져 나올때는 q
git diff --staged : stage 것 비교헤서 보여준다
== git diff --cashed
14. 수정내용 툴로 확인 - 건피그에서 설정 한뒤
git config --global -e
git difftool
git difftool --staged
15. 리파지토리에 저장
git st : 일단 상태 확인 : statge(cache) 에 new file 이 있다고 나옴.
git commit : stage 것들을 repository 에 저장.
comment 를 달아 줘야 하니 이것은 sourcetree 에서 하자.
저장소 - commit staged changed - 하면 메모 넣으라고 나오고
1st commit 라 쓰고, [커밋] 버튼 누르면 등록 된다.
16. 기록 보기
git log
17. 수정해 두번째 커밋 하기
echo a2 >> jjj.txt
echo a2 >> b.txt
git status -s : 간단히 상태보기
git add jjj.txt : jjj.txt 스테이지로
sourcetree 에서 커밋, 코멘트는 2nd commit
git add . : 현재 디렉토리 모든것 스테이지로
git commit -m "3rd commit" : 코멘트 직접 입력 하고 커밋
git log : 로그 보고 q 로 빠지기
18. 이전거 확인 - cmd 에서 하는것 sourcetress 에서 모른다.
- 'commit' 문구 뒤의 해시코드 앞에서 4자리 이상 복사
현재 해드가 3rd commit 에 있는데,
git checkout 복사한 4자리 이상 해시코드
- 현재 소스가 해당 버전으로 돌아간다. 두번째(2nd)로 돌아가 보자
- 돌아간뒤 보면 b.txt 에 추가 하였던 a2 가 없어 졌다.
git status 해보면 해드가 2번째 있음을 확인.
- sourcetree 에서 나타나지 않으면 껏다 켜보면 된다. head 가 두번째 가있는것 확인 된다.
다시 마지막으로 가기
git checkout 브랜치 이름 (== main)
- main 뿐만 아니라 모든 brach 의 마지막으로 가려면 branch 이름 쓰면 된다.
git checkout main
- 되돌아오기(해당 브랜치의 최신 커밋으로 돌리기)
- b.txt 에 다시 a2 가 생긴것을 확인 할 수 있다.
- 역시 sourcetree에서 안나타 나면, 재실행 해보면 나온다.
19. branch 추가, 변경, 삭제
- 추가하고자 하는 commit 으로 이동
git checkout 복사한 4자리 이상 해시코드 -- 2nd commit 로 가자.. 여기서 만들 거임.
- branch 만들기
git branch [br name] : 추가 git branch br1
git branch : 목록
- sourcetrss (재실행) 에서 2nd 에 br1 이 있음을 알수 있다.
- 아직 해드는 main 2nd 에 있다.
git switch [br name] : 이동 : git switch br1
git branch : 목록 , head 가 br1 에 있음을 확인.
- sourcetrss (재실행) 에서 br1 에 head가 있음을 알수 있다.
git switch -c [br name] : 만들고 + 이동 : git switch -c br2
- sourcetrss (재실행) 에서 br2가 만들어지고, 여기에 head가 있음을 알수 있다.
git branch -m [old name] [new] : 이름 바꾸기 : git branch -m br2 br3
git branch -d [br name] : 지우기, -D 는 강제 지우기 : git branch -d br3
- head 가 위치해 있으면 지우지 못하니 다른 br 로 간다음 지운다.
git switch br1
git branch -d br3
20. br 꺼 수정
git switch br1 : br1 으로 이동.
echo b1 >> jjj.txt : 파일 수정.
git status
git add .
git commit -m "br1-1st" : br1 에 커밋
21, main, br 수정
- 메인 상태로 가기 : git checkout [main hash 4자리이상] , 마지막 갈거면 그냥 main
git checkout main
- 모든 파일이 main 마지막 상태 즉 3rd 상태로 가고, head 도 여기이다.
- 즉 jjj.txt 에 b1 이 없어졌다.
echo a3>> jjj.txt
git add .
git commit -m "4th ---"
git checkout br1
- jjj.txt 가 a3 가 없어지고, b1 이 나타난다.
echo b2 >> jjj.txt
git checkout main
echo a4 >> jjj.txt
git add .
git commit -m "main-5th"
echo a5 >> jjj.txt
git add .
git commit -m "main-6th"
18. 이전으로 돌아가기 1 of... 2가지 - revert
- revert : 중간에 있는거 수정부분 취소.
- reset : 이전거 지우고 돌아가기, 돌아간 이후 것들은 다 지워져 복구 안된다.
git revert [해쉬] : 해쉬때 수정(수정, 파일 삭제,파일 추가) 된부분 취소 한것을 마지막에 추가 한다.
revert 는 하다가 그 이후 커밋된것과 충돌 하면, 그것을 사용자가 직접 해결 하고 계속진행 해야 한다.
- 추가된 파일 이후 수정 된것 지우기 등 : git rm [fname]
git revert --continue : 리버트 계속진행
리버트 때 커밋 하지 않을 경우 ( 추가로 더 뭔가를 바꾸고 커밋 하고자 할때)
git revert --no-commit [해쉬]
main-5th 를 revert 하기
git log
git revert [해쉬]
- 6 th 가 있어, conflit 발생 하여 안된다
- jjj.txt 에 보면 충돌 사항이 있으니, 알아서 수정 하고,
git add .
git revert --continue
19. 이전으로 돌아가기 2 of... 2가지 - reset
git reset --hard [hash 전부나 어느정도 일부분] : 해시 상태로 간다
git reset --hard : 마지막 상태로 간다.
20. branch 합치기 2가지 : merge, rebase
merge : 두br 합치기 - 메인에 통으로 브렌치 합치기
- 1개 커밋 생김, 브랜치 유지 됨
rebase : 메인에 브렌치 각 커밋을 개별로 커밋 함,
브랜치 커밋 수 만큼 메인에 생김
- 브렌치 없어짐 ,, 깔금
git switch main
git merge [br] : 합처라 메인에 git merge br1
머지 한뒤 남은 브렌치는 삭제 하든지 말든지
git switch [br]
git rebase main : br 에 main 이 합처짐. 아직 main 은 이전과 같음
git switch
git merge [br] : main 에 br 합침.
21. merge 에서 br 간 충돌
- 분기 이후 같은 부분을 메인도 수정하고, br도 수정하고 , 이후 합치면
git switch main
git merge br
-- 충돌
git merge --abort : 합치기 중단
git add .
git commit
22. rebase 에서 br 간 충돌
git switch br
git rebase main
-- 충돌
git rebase --abort : 포기
-- 수정
git add .
git rebase --continue
-- 충돌2
git rebase --abort : 포기
-- 수정2
git add .
git rebase --continue
git switch main
git merge br
=======================================
'개발 > ms window' 카테고리의 다른 글
파워포인트,워드,엑셀 powerpoint, word,excel 새창에서 열기 (0) | 2023.03.07 |
---|---|
win11 에서 IE 익스플로러 Explorer 실행하면, 안뜨고 edge 뜰때 (0) | 2023.03.04 |
AnyDesk ID 재설정 방법 (0) | 2023.01.03 |
파일 숨기기 위한 비밀, 보안 안전 drive 사용 (0) | 2022.12.30 |
git/Source Tree 에서 unsafe repository 라고 나오면 (0) | 2022.12.14 |