git - local - 내 컴퓨터에 설치해야 작동
리눅스 개발할 때 커널 개발할 때 나온거
터미널 명령어 정도는 알아야함
분산 소스 버전 관리 시스템
서버를 분산시켜 구축할 수 있게 하는 소프트웨어
소스코드를 효율적으로 관리할 수 있게 해주는 형상관리 도구
지역 저장소를 만들고 파일, 코드 등을 관리하는 작업
백업 가능
저장했던 시점 기억
저장했던 시점으로 왔다 갔다 할 수 있음.
협업할 때 특히 개발자들 에게 도움 됨..
add - 파일 지정 어떤 파일을 (어따 바구니에넣고)
commit -> 저 똥그라미에 넣는 것
ㅇ -ㅇ- ㅇ- ㅇ
add를 한 후 commit을 한다~
안정성이 뛰어남
신뢰성 높음
오류가 날 수 없대
안되면 내 실수래
github - cloud - id로 들어가 git과 연결해서 사용함
(git)을 사용하는 프로젝트를 지원하는 웹호스팅 서비스
git을 업로드 할 수 있는 웹사이트
개발자들의 버전 제어 및 공동 작업을 위한 플랫폼
터미널은 뭐지
형상관리 시스템 - 소스 저장하는 저장소
git 설치하기
github 아이디
clear / 지우개
pwd / 내 현재 위치 어디냐
ls/ 현재 위치한 폴더에 파일들이 뭐뭐잇냐
cd / 디렉토리 이동 시 사용
mkdir / 폴더 만드는 명령어 / 사용법 mkdir [폴더명]
rmdir / 폴더 삭제하는 명령어 / 사용법 mkdir [폴더명]
vi / 편집기 -
파일이 없는 상태에서 vi index2.html 쓰면 파일이 생성됨
파일이 있는 상태에서 vi index2.html 을 쓰면 파일을 염
Ctrl + 1orCtrl + Shift + `
PS -> 디렉토리 나타냄
pwd 현재 위치
d ------ -> directory
뒤로가기 cd.. or cd 폴더명
cd..
cd..
2번 뒤로간뒤
cd .|workspace|Hello_git2
| -> 역슬래시
맥이나 리눅스는 / 슬래시로
터미널에 git init 입력 -> 나 이 폴더 git 사용한다! 라고 하는거
============================점심먹고옴=========================
터미널에 git init 침
해당 디렉토리에 .git 파일을 만듬
add 는 동그라미 만들기 o
index.html 이라는 것을 봉다리에 담아논거 .
add 만 하고 status를 보면
No commits yet 이라고 친절히 나옴
commit-m
해당 내용의 메모. 옵션
최초의 동그라미를 만듬
ㅇ <- 안에 index.html 이 들어가있음
계쏙 이렇게 ㅇㅇㅇ 동그라미를 만들어 나갈겨 git add / git commit 사용해서
새로운 subpage.html 을 만들어서
body 안에 글자 쓰고
터미널에 git status 써보기
git status -> subpage.html 은 아직 git에 업로드 commit 안햇구나~
동그라미 4개 생김
메모의 중요성
최신걸로 쭊 과거 나옴
노란건 동그라미의 주소들
파일 동시에 2-3개 만ㄷ르어서 git add / git commit -m "[메모]"
그래서 총 4-5정도의 파일이 커밋이 됨.
커밋을 3번한거 인지해서 git log 를 써서
메모를 확인하며 내가 어떻게 작성했는지 보기
그담에 처음으로 돌아가는 대신 이전값을 삭제하는 기능
git reset [commit hash값] --hard
* --hard 는 git에서 명령을 위험하게 만드는 유일한 옵션. 데이터를 실제로 삭제하는 것으로 결과를 되돌릴 수 없다.
hash값은 -> git 6자리까지만 복사해서 사용하면됨 (그 긴 주소)
GIT
git init | git init -> .git 숨김파일 생김 / git 사용한다 ~ 선언 |
git add 파일이름 | sub.html 파일을 추가한다. (근데 바구니(인덱스) 안에 넣기만) |
git status | 상태 알려줌 |
git commit -m "add sub.html" | "add sub.html"이라는 메모와 함께 commit (동그라미에 sub.html)를 넣음 commit = 디렉토리에 있는 모든 파일에 대한 스냅샷을 기록 저장소를 복제(clone)하려면 보든 변경분(delta)를 풀어야하는데 이 때문에 명령행 결과로 resolving deltas 라는 문구가 있음. |
git add . | 변경된 모든 내용을 한번에 바구니(인덱스)에 담는 개념 |
git commit -m "update index.html" | index.html 전체에 업데이트 함 -> 추가안된거 다 한번에 됨 |
git.log | log 보기 (과거 행적, 특히 commit ) |
git reflog | 복구하고 싶은 원하는 위치 찾기 (commit, checkout, reset 등 다 나옴) |
git reset --hard (--hard는 아예 삭제해버리는 위험한 명령) | log or reflog에서 구한 값을 써서 원하는 곳으로 이동 |
git branch | 현재branches 상황, *위치 나옴 * 있는 곳에 내가 있다. 브랜치 = 특정 commit 에 대한 참조 reference |
git branch sample | sample 이라는 branch 만들기 |
git checkout sample | sample 이라는branch 로 * 옮기기 |
git checkout master | master (main)으로 다시 * 옮기기 (파일들도 다 따라 생기고 없어짐, 포커스 변경) |
git branch -D sample | sample branch를 지우기 |
git pull | 받기 |
git fetch | 원격 저장소에 누군가가 바뀌면 내가 그대로 소스달라진거 확인 |
git remote show | |
git remote add origin url | 현재 git 를 내 저장소로 보내기 (pop up창 열림) |
git remote rm origin | git remote add origin url 으로 이미 연결된 것을 취소 |
git pull origin master | pull 받는거 (달라진거petch를 한후 하는거) |
git push | push 보내는거 |
git push origin master | 원격저장소에 보내기 |
git cherry pick | |
git rebase | commit들을 모아서 복사한뒤 다른 곳에 떨궈 놓는 것 장점 : commit들의 흐름을 보기 좋게 깔끔히 한 줄로 만들 수 있음. 저장소의 commit log & history가 한결 깨끗해짐. |
git merge | 합치기 (두 부모가 같도록) |
git clone url | 클론하기 (상대방의 저장 내용을 내 pc로 옮기기 히스토리 등 모두 옮겨와짐. 즉 git init 이 되어 있는 상태 ! ) |
git 게임 출처 : https://learngitbranching.js.org/?locale=ko
commit
git commit -> c (n) 생성
Branch
브랜치 newImage는 C1을 가리킴.
git reflog -> 참조
C1 C2 C3 C4
Branch 를 C2, C3 를 연결해서 만듬
Branch 는 여러 방향으로 네트워크처럼 뻗어 나갈 수 있다 ~ 라는 의미
git branch
git init-> 첨에 일자의 c1,c2-c4 까지 만들어진거
첫번째 줄을 master 라고 일컬음 . =main
디폴트 값이 master
첫번째 가지~ 라는 뜻 / 원본 소스 = master
* -> 내가 바라보고 있는 브런치가 마스터다.
git branch [branch명령어]
git branch sample 하면 아무것도 안나옴 -> 잘 실행된거
git branch 써서 잘 되었는지 확인
별표 옮기기
뭐 할 때마다 브런치 쓰면서 별표 확인하기
git checkout master
하면 별표 master로 가있음
내 상태가 sample * 인 상태에서 파일 3개 만들어봐
여기서 commit 을 하면 C5가 되는게 아니고
C5
git commit -m 해주고
해봐
git checkout master 로 하면
포커스가 변경됨
오.. 만든 파일 aa, bb, cc 가 왔따 갔따 함.
checkout master
checkout sample 을 번갈아 써봐봐
브런치 여러개 만들어서 서로의 작업물이 달라지겟ㅈ?
그럼 마스터 브런치 남겨놓고
a 가 브런치 10까지 b 가 브런치 2까지 햇을 대
b의 브렌치 2의 아이디어를 a의 작업물에 merge 를 하고 싶을 때
소스를 가져다가 끌고오는것 - > branch 가 이용됨
a의 작업물을 master에 넣고.
checkout의 기능은 기똥차다.
==================local 에서 사용하는 git 의 기초 끝 ================
==================github ㄱ ㄱ ===============================
원격 저장소.
내가 내 컴터 (local)에서 만든 소스를 인터넷에 저장하는
소스 tool 이라는 걸 다운받아서 연결할 수 있음.
지금은 추천안함.
왜냐면 넘 쉽게 그림그려져서
일단 생각으로 ㄱ ㄱ
remove 하더라도 그 안에 속성? path 는 남아 있음.
저장소 만드는 법 오른 위 + repository 클릭
아직 필요한게 없다고 체크안하고 createㄱ !
연결 된 상태
요렇게 뜸
뭔진모르겟다.
git add .
git commit -m "커밋할 내용설명 영역"
git push origin master - 요거 보면
다 잘 됨.
클론.
다른사람 저장소
로그도 볼수잇음
git clone url
남의거를 가져와도 내가 올릴수는 없음.
하게하려면 -> 원 주인이 settign -> manage access -> Invite a collaborator ->상대방 멜 입력하면 ok
상대방도 세팅해야함.
git remote
는 뭘까
git remote add origin url
1. git 설치하기 먼저 ~
https://git-scm.com/download/win window 버전 설치하시면 됩니다.
git설치가 완료되었다면.
윈도우키를 눌러서 "Git CMD" 파일을 실행해주세요.
이후 터미널 창이 나타나면
git config --global user.name "name" git config --global user.email "email@email.com"
실행한뒤
git config --list
실행시켜 결과물을 확인해주세요.
참고 GitHub - ingoo-code/Hello_git: git 사용예제 저장소
질문 위에 하는 이유? 안쓰고 하면 하라고 한대 그래서 미리 설정한거 + 다른 개발자에게 내 컨텍 알려주기
Github 내 저장소에 파일 올리기
0. 위에 git 설치 및 git cmd 설정 먼저 ㄱ ㄱ !
vs 파일 terminal에
1. git init
2. git add .
3. git commit -m ""
4. git remote add origin url
-> 이 주소 url 너꺼 본인꺼가 맞아 ? 라고 질문하는 거
안뜨면 연결된거
5. git push origin master
(여기서 아래와 같은 오류 생겼을 때 (오류 - 데이터 유실 등의 문제 가능성이 있어 git에서 처리되지 않도록 에러를 띄우는 것이라고 함. git push -u origin +master -> 강제로 push 진행 - 임시방편..)
-> 그래도 고쳐졌다. ㅠㅠ
근데 교수님과 함께 한 오류 고치는 방법은 뭐였는지 기억이 안남..
저기 git hub 추가된거 들어가서 편집해서 내 아이디 변경 가능
git hub 상대방의 저장소 불러오기, 내용 수정 및 업데이트
* 주의사항 불러올 파일을 git init 을 하지 말아야함. 불러올 상대방의 파일은 이미 git.init이 되어있을 거기 때문에
1. 클론하기 (상대방의 저장 내용을 내 pc로 옮기기 히스토리 등 모두 옮겨와짐. 즉 git init 이 되어 있는 상태 ! ) | git clone url(상대방 git hub 주소) |
2. 불러온 상대방의 파일 안으로 들어가기 | cd .\HelloWorld\ (여기서 \ = 역슬래시) |
3. 내용 수정 하기 | - |
4. add / commit 하기 (상대방의 기트에서 내 컴퓨터에 기트를 복사해온 상태, 클라우드에서 파일을 다운받았은거랑 비슷 - 수정 후 해줘야함. | git add . / git commit -m "memo" |
5. Push 하기 (깃헙 Github 으로 업데이트 연결되게 올리기) | git push origin master |
Push 한 상태에서 내 컴퓨터로 Git hub 상대방의 기트 내용 변경된게보이지만 상대방은 Pull 받아주는걸 해야 상대방한테도 보임. | |
6. (상대방 입장) 내용 수정이 있는지 확인하기 | git fetch |
7. (상대방 입장) 수정이 있다면 변화된 내용을 받기 | git pull origin master |
내용을 또 수정한다면 위의 3번부터 다시 반복 |
나의 settings 가서 상대방 manage contributor 로 추가해주기
내용을 또 수정하고
바로 git push origin master 하니깐 내용 안변함
내용 수정 후 git add . / git commi -m "" 를 해야 github에 있는 파일 내용이 바뀜