본문 바로가기

개발/ms window

git 사용법

반응형



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

=======================================

gTest-220913.zip
0.03MB

반응형