Git을 이해해보자 - 프로젝트 생성부터 Push까지
다음과 같이 간단한 Hello World 프로젝트를 만들었다.
<br/>
<br/>
<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/QL7Q8L181224235503.PNG" style="border-style:solid; border-width:1px">
<br/>
<br/>
<br/>
public class Hello {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
<br/>
<br/>
<br/>
<br/>
Git의 로컬 영역을 살펴보자.
<br/>
<br/>
<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/ZJABS4181224235503.PNG">
<br/>
<br/>
Local저장소, Staging Area, Working Directory 세가지 영역으로 구성된다.
<br/>
<br/>
현재 작업중인 Working Directory를 가지고 있다.
<br/>
<br/>
다음으로는 Local Repo를 초기화 해보도록 하자.
<br/>
<br/>
<br/>
<br/>
해당 프로젝트로 이동하여 Git Bash를 켜보도록 하였다.
<br/>
<br/>
<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/VHHPMB181224235503.PNG">
<br/>
<br/>
<br/>
<br/>
해당 프로젝트에 Local 저장소를 생성하자. 다음명령어를 사용하자.
<br/>
<br/>
<br/>
git init
<br/>
<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/UIFGGR181224235503.PNG">
<br/>
<br/>
Local 저장소가 초기화(생성) 되었다.
<br/>
<br/>
<br/>
<br/>
그럼 이제 다시 GIT의 동작을 이해해보자
<br/>
<br/>
<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/SDBPTC181224235503.PNG">
<br/>
<br/>
Local 저장소를 구성하였다.
<br/>
<br/>
이제 Working Directory에서 Staging Area로 파일을 add하려고한다.
<br/>
<br/>
근데 Staging Area는 왜 있는 것일까?
<br/>
<br/>
Working Direcotry에서 바로 Local 저장소로 업로드하고, Local 저장소에서 바로 Remote 저장소로 Push하면 될것을..
<br/>
<br/>
Staging Area는 Commit 예정될 내용을 보관하는 임시저장소라고 생각하면 쉽다.
<br/>
<br/>
Staging Area가 없다고 가정하면, Commit 할 부분을 한번에 결정해야 할 것이다.
<br/>
<br/>
그러나 Staging Area가 있으므로, 여러여러 생각하여 Commit 할 부분을 Staging Area에 저장 한 후, 추후에 Commit 할 수 있다.
<br/>
<br/>
<br/>
<br/>
어떤 파일에 대하여, Staging Area에 올려졌는지에 대한 상태값을 가지는데, 다음의 그림을 보면 이해할 수 있다.
<br/>
<br/>
<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/NR6TTW181224235503.PNG">
<br/>
<br/>
새롭게 생성된파일은 Untrakced 상태이다. 이상태는 Git이 전혀 관여하지 않은 상태이다.
<br/>
<br/>
Unmodified는 기존에 있던 파일이, 수정되지 않은 파일이다.
<br/>
<br/>
이 파일이 수정되면 modified 상태가 된다.
<br/>
<br/>
modifed 파일이 Staging Area에 add되면, Staged 상태가 된다.
<br/>
<br/>
Staged 상태, 즉 Staging Area에 있는 파일이 Local 저장소로 Commit 된다면,
<br/>
<br/>
마지막 Commit에 대해 수정사항이 없으므로, 모두 Unmodified 상태가 된다.
<br/>
<br/>
<br/>
<br/>
그럼 이제 다음 명령어를 사용하여, Working Directory 파일을 Staging Area에 업로드 하자.
<br/>
<br/>
<br/>
git add [파일명]
git add -A //모든파일
<br/>
<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/7ZGFC8181224235503.PNG">
<br/>
<br/>
<br/>
<br/>
다음 명령어를 사용하면 Staging Area에 올라간 파일을 제거 할 수 있다. Untrakced 상태로 돌릴 수 있다.
<br/>
<br/>
<br/>
git rm --cached [파일명]
<br/>
<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/ZDAN1L181224235503.PNG">
<br/>
<br/>
<br/>
<br/>
다음 명령어를 사용하면, 파일들의 상태정보를 확인 할 수 있다.
<br/>
<br/>
<br/>
git status
<br/>
<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/XSRND4181224235504.PNG">
<br/>
<br/>
<br/>
<br/>
그럼 이제 Staging Area에 있는 파일을 Local 저장소로 Commit 해보자
<br/>
<br/>
다음 명령어를 사용한다.
<br/>
<br/>
<br/>
git commit -m "메세지내용"
<br/>
<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/SWFUKS181224235504.PNG">
<br/>
<br/>
<br/>
<br/>
파일 상태를 확인해보자
<br/>
<br/>
<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/GCECE3181224235504.PNG">
<br/>
<br/>
<br/>
<br/>
다음 명령어를 사용하면 Commit 내역을 확인 할 수 있다.
<br/>
<br/>
<br/>
git log
<br/>
<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/6ZIFBD181224235504.PNG">
<br/>
<br/>
<br/>
<br/>
그럼 여기서 hello.java 파일을 다음과 같이 수정해보았다.
<br/>
<br/>
<br/>
public class Hello {
public static void main(String[] args) {
System.out.println("Hello World!");
System.out.println("I'm modfied...!");
}
}
<br/>
<br/>
<br/>
다시 파일 상태를 확인해보자.
<br/>
<br/>
<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/IQ7YGJ181224235504.PNG">
<br/>
<br/>
상태가 modified로 변한 것을 확인 할 수 있다.
<br/>
<br/>
<br/>
<br/>
파일은 전부 Staging Area에 올리고, 두 번째 Commit을 진행해보자.
<br/>
<br/>
<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/LRUICQ181224235504.PNG">
<br/>
<br/>
<br/>
<br/>
다시한번 동작을 확인해보자.
<br/>
<br/>
<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/WZKQRE181224235504.PNG">
<br/>
<br/>
이제 Local 저장소에, 변경사항을 모두 반영하였다.
<br/>
<br/>
Remote 저장소로 Push하여 파일을 서버에 업로드 하도록 하자.
<br/>
<br/>
<br/>
<br/>
GIT사이트로 접속하여, 새로운 Remote저장소를 생성한다.
<br/>
<br/>
<img alt="" src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/CYTQEM181224235504.PNG" style="border-style:solid; border-width:1px; width:720px">
<br/>
<br/>
다음 Remote 저장소를 생성하였다. (https://github.com/cgLee079/EX_GIT)
<br/>
<br/>
Local 저장소의 파일을 Remote 저장소의 파일에 업로드하기 위해, Remote 저장소를 연결해주자.
<br/>
<br/>
<br/>
<br/>
다음 명령어를 사용하자
<br/>
<br/>
<br/>
git remote add [remote 이름] [URL] //추가
git remote rm [remote 이름] //삭제
<br/>
<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/ISEUDM181224235504.PNG">
<br/>
<br/>
<br/>
<br/>
연결된 Remote 저장소는 다음 명령어로 확인 할 수있다.
<br/>
<br/>
<br/>
git remote -v
<br/>
<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/7RP7KZ181224235504.PNG">
<br/>
<br/>
<br/>
<br/>
연결이 구성되었으므로, 다음 명령어로 Remote 저장소에 Local 저장소 파일을 Push 하자
<br/>
<br/>
<br/>
git push [remote 이름] [branch 이름] // [remote이름]에 [branch이름]을 PUSH 해
<br/>
<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/VC5SI7181224235505.PNG">
<br/>
<br/>
PUSH를 완료하였다.✌️
<br/>
<br/>
<br/>
<br/>
Remote 저장소에 내용이 반영되었음 확인 할 수 있다.
<br/>
<br/>
<img src="https://static.podo-dev.com/blogs/images/2019/07/10/origin/VPEJPC181224235505.PNG" style="border-style:solid; border-width:1px">
<br/>
<br/>
<br/>
<br/>
<br/>