Git
- Git은 형상 관리 도구 중 하나로, 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다.
GitHub
- 깃허브(GitHub)는 분산 버전 관리 툴인 깃(Git)을 사용하는 프로젝트를 지원하는 웹호스팅 서비스이다.
- Ruby on Rails(Ruby를 사용하는 웹 프레임워크)로 작성되었다.
- GitHub는 영리적인 서비스와 오픈소스를 위한 무상 서비스를 모두 제공한다.
Git 설치
https://git-scm.com
window 버전 다운로드 – 모두 default 설치

실행 프로그램
- Git Bash : 리눅스 환경
- Git CMD : 윈도우 커맨드 창
- Git GUI : 윈도우 환경
윈도우에서는 - 폴더
자바에서는 - 패키지
리눅스에서는 - 디렉토리
같은 느낌이라고 보면된다.
Git Bash 실행


컴퓨터 사용자 이름 @ 컴퓨터 이름 MINGW32 현재 폴더 위치
- MINGW32는 프로그램 이름이고,
- $는 입력커서
컴퓨터 이름은 아래와 같이 확인이 가능하다.


~ = 홈 디렉토리라고 부른다.
리눅스 명령어
★★★ pwd ) 어느 위치에 있는지 확인

cd d: ) d 드라이브로 들어감

ls ) 무엇이 잇는지 내용을 보여줌
(ls -l 좀 더 자세하게)

cd Git ) d 드라이브에 있는 Git폴더로 들어감

ll(sysout과 같은) -> ls와 같은 내용이라고 생각하면 됨

ls -la ) 숨긴파일도 보여줌

./ - 자신의 폴더 (this.)
../ - 상위 디렉토리(폴더) (super)
cd .. ) 상위 폴더로 감

cat ) 내용 확인 (tab키를 누르면 자동완성)
메모장에 작성한 한 메모를 git 폴더에 저장함.
폴더와 연결이 되어 있어 git or 메모장 어디서 만들든 볼 수 있다

vi ) 편집기
편집화면
i 를 눌러 편집모드로 편집을 진행한다.
: wq(write quit) ) 편집을 그만하고 나가겠음


:q! ) 편집한거 저장 안하고 나감


rm -rf 파일 이름 ) 파일 삭제

mkdir 폴더 이름 ) 폴더를 만듬


vi로 편집도 생성도 가능함


우리는 이러한 것들을 프롬프트라고 한다.

Git 환경 설정
- git에서 커밋 할 때마다 기록하는 사용자 이름과 메일 주소를 설정해야 한다.
- 사용자 계정 홈 디렉토리에 .gitconfig 파일이 생성된다.
C:\Users\yeoni.gitconfig
git config --list

1. git config --global user.name "~~"
2. git config --global user.email "~~"
내 이름과 메일주소 등록하기(GitHub에 회원가입한 것과 같은 것으로 하는 것이 좋음.)

Git 저장소
- 저장소는 관리하고자 하는 모든 소스 코드 및 디렉토리가 저장되는 곳으로 여러 개의 프로젝트를 하나의 저장소에서 관리할 수 있다.
저장소는 특별한 데이터베이스처럼 보이지만 사실은 디렉토리와 파일 기반으로 데이터를 관리하며 생성한 저장소 하위의 .git디렉토리에 저장되어 있다.
(1) Git 저장소 기반으로 프로젝트 관리하는 방법
- Git 저장소에 신규 프로젝트를 생성해서 반영하는 방법으로 처음으로 프로젝트와 저장소를 생성할 때 사용한다.
- Git 저장소에 누군가가 이미 만들어 놓은 프로젝트를 활용하고 싶다면 해당 프로젝트를 복제해서 사용할 수 있다.
나의 위치

(2) Git 저장소 생성
-
Git 저장소로 사용할 디렉토리를 생성한다.
=> git_repo 디렉토리 만들기
=> 윈도우 탐색기에 폴더로 작성해도 되고 리눅스로 만들어 된다.
-
git init
=> 생성한 디렉토리를 Git이 저장소로 인식할 수 있도록 초기화한다.
=> 초기화하면 .git 디렉토리가 생성된다.
=> "." 이 붙어서 숨김 디렉토리로 인식한다.
=> 해제하려면 .git를 삭제하면 된다.
git init 관리 대상자 -> master 만듬

master -> main (약속)

숨긴거 까지 볼래 ls -la

지울래 rm -rf .git

Git의 스테이징 단계
- git add으로 진행되는 형상 관리가 3가지 영역에서 진행된다.

① 워킹 디렉토리
- 소스 코드를 작업하는 영역으로 코드를 추가, 수정, 삭제하는 작업이 이루어지는 영역을 의미한다.
내가 작업하고 있는 프로젝트의 디렉토리
② 스테이징 영역
- 워킹 디렉토리에서 git add 명령을 실행하면 파일들은 Git의 스테이징 영역으로 이동하며 이를 통해 소스 코드의 상태 정보를 확인할 수 있다.
커밋을 하기 위해 $ git add 명령어로 추가한 파일들이 모여있는 공간

③ 저장소 영역
- 스테이징 영역에 있는 소스 코드에 git commit 명령을 실행하면 최종적으로 Git의 저장소에 반영된다.
커밋들이 모여있는 저장소
파일 관점에서 Git의 4가지 상태
① Untracked : 워킹 디렉토리에 추가되었지만 Git에서 관리하지 않는 상태
② Unmodified : 신규로 파일이 추가되었을 때의 상태로 new file 상태와 동일
③ Modified : 파일이 추가된 이후 해당 파일이 수정되었을 때의 상태
④ Staged : Git의 스테이징 영역에 반영된 상태

git status ) 상태 확인

git diff ) 달라진 것을 확인

git add ) 워킹 디렉토리에서 스테이징 영역으로

git status ) git의 상태확인

git commit ) 저장소 영역으로 보낸다

git log ) 지금까지 무엇을 했는지 보는 것

git remote add origin ) (긴~주소를 origin 이라고 부르겠다)


git push origin main )로컬저장소 안 main에 있는 모든 것을 원격으로 옮기기




수정하기
vi

cat, git status

git diff 어떻게 바뀌었는지 확인

현재 파일에 있는 모든 디렉토리들은 (. or *) 을 사용

commit~ (합이라는 이름으로)

git push origin main ) origin(주소)로 메인 안에 있는 것들 보내기

GitHub 확인하면 수정된 "합"이 올라가 있는 것을 볼 수 있음.

문제 스스로 해결하기!)
-
클래스 파일 작성해서 Git Hub에 올리기


-
1) 로컬 저장소 만들기 : git_exam
2) 파일 생성 : fruit.txt(과일명 5개 입력)
3) 원격 저장소 만들기 : git_exam
4) 올리기





Git으로 형상 관리하기
(1) 기본 용어
1 ) 스냅샷 (Snapshot)
- Git에서 커밋할 때마다 발생하며 커밋한 시점의 형상 관리 상태를 의미한다.
- 버전이라는 의미도 포함하고 있다.
2 ) 트리(tree)
- 파일과 디렉토리의 구조 정보를 저장하고 있다.
- 파일 시스템이 트리구조를 가지고 있기 때문에 형상 관리 역시 트리 형태로 스냅샷을 저장한다.
3 ) 저작자(Author)
- Git에서 관리하고 있는 파일 혹은 디렉토리를 최초로 생성한 사람의 정보이다.
- 일반적으로 사람을 식별할 수 있는 이름, 이메일 등의 정보를 저장한다.
4 ) 커미터(Committer)
- 파일을 변경한 사람
- 최초 파일이 저장소에 반영되면 저작자와 커미터가 동일하지만, 이후 해당 파일을 다른 사람이
수정하면 커미터가 변경된다.
- 저작자는 파일을 생성한 사람, 커미터는 파일을 변경한 사람
5 ) 커밋 메시지(Commit Message)
- Git은 커밋할 때 반드시 커밋에 대한 메시지를 저장하도록 되어있다.
- 명령어의 파라미터로 전달할 수도 있고, 에디터를 통해서 많은 내용의 메시지를 저장해서
전달할 수도 있다.
- 메시지는 되도록 상세히 작성해 두는 것이 좋다.
6 ) 부모 커밋(Parent Commit)
- 현재 커밋이 참조하고 있는 상위 커밋을 의미한다.
- 최초 커밋시에는 부모 커밋 객체가 없지만, 이후 다시 커밋을 하게 되면,
현재 커밋된 객체가 부모 커밋 객체가 되고 나중에 커밋한 객체가 커런트 객체가 된다.
Java 기초
- Java - 객체지향프로그램 이다
~oop(Object Oriented Programming)
- 자바의 파일명과 클래스명은 동일하다.(규칙)
- JDK(Java Developement Key) - 통역가 -> 컴파일 한다.
JDK 컴파일
00.java(사람이 읽는거)---------------------00.class(컴퓨터가 읽는거)
- 함수( ) - 명령어들의 집합체 (클래스에는 명령어 불가)
java가 알고있는 함수는 main 함수 뿐이라고 생각하면 된다.
- static이라는 것은 new를 안해도 된다. 즉, 만들 필요없이 있는 것이다.
예를 들어 ) 만들어진 음식으로 서비스로 준것 처럼 주문하거나 할 필요가 없는 것)
자바 안에 lang이라는 폴더 안에 class가 있다는 것임
java
lang
Math
System
String
Integer
util
Random
ArrayList
import java.util.ArraList;
/ 슬래쉬
\ 역스래쉬
: 콜론
; 세미콜론 (현재 문장의 마지막이다)
|| 파이프 라인 (or연산자)