ASAC-SK플래닛 T아카데미 데이터 엔지니어

25.11.06 21일차 [GIT,GITHUB , 취업특강 ]

Datadesigner 2025. 11. 6. 13:47

오늘은 특강의 개념으로 오전에는 git,github

오후에는 취업특강이 있었다.

 


git

깃은 '시간을 되돌릴 수 있는 저장소'이다.

어떤 파일이 마지막 파일인지, 여러명이 하나의 앱을 개발할 때 수정한 코드를 어떻게 합칠 지,

협업툴의 기능을 가지고 있다고 생각한다.

 

1. 설치, 구동

먼저 깃허브에 가입한다.그리고 cmd를 연다.

우리는 강사님이 만들어둔 깃허브 파일이 있어서 그것을 가져오는 형식으로 실습을 진행했다.

 

우리 컴퓨터 cmd 기본 경로
맨 위 코드로 git_practice 폴더를 만들고 cd 로 그 안에 들어간다.
그리고 git clone [강사님이 지정해준 사이트] 를 입력하면 git_practice 폴더 안에 저 내용들을 그대로 가져온다.


1. 폴더 생성 - md git_2
2. 폴더 진입 - cd

3. 깃 가져오기 = git clone [사이트명] . (띄어쓰기 한개 이후 콤마)
나는 한번 실수해서 파일 경로가 git_2이다. 
이름, 이메일 확인

이건 우리가 입력해줘야 한다. 그런데 문자열이기 때문에 맞지 않아도 상관없다, 그저 관리의 차원이기 때문에 이게 안 맞는다고 뭐 다른건 없다


이 이후 생성한 위치에 파일에 변경된 사항이 있는지, 그 파일을 저장해둘 것인지,  그 파일을 로컬 저장소에 올릴건지
이 세가지 행동들을 수행한다.

1. 파일이 변경, 수정, 추가된 사항 확인
-먼저 경로상에 txt파일 아무거나 만들어준다.
그리고 git status 명령어를 입력하면
이렇게 경로상에서 변경되고, 추가된 파일 이름이 빨간색으로 나온다. 파일 이름은 그냥 정한거다.

2. 파일을 추가할것인가?
git add . 명령어를 사용하면 파일을 추가하게 된다. 변경된 파일이 있으면 그 파일들을 스테이징 영역으로 모아둔다.
이는 commit 하기전에 잠시 모아두는 임시공간이다.
같은 파일이 초록색으로 나온다. 이게 스테이지 영역으로 들어간것이다.

3. 로컬 저장소에 저장
git commit -m "[주석, 새로 추가한 데이터의 변경 내용 등을 여기에 적는다]"

git commit 을 통해서 파일을 저장소에 확실하게 변경된 사항을 올렸다.
이제 git status를 해보면 변경된 파일 등이 아무것도 없는것을 볼 수 있다. 현재 파일 상태가 최신화된것이다.


git push origin main
이것이 서버에 이 내용을 업로드하는거다.
이를 서버상으로 하면 모두가 변경된 사항, 파일을 볼 수 있고 그런것을 공유하는게 깃의 목적이다.

gitreadme.txt가 생겼다

 

2. 기능 단위 branch 생성

branch는 쉽게 말해서 나뭇가지라고 생각하면 된다. 추후 기술하겠다.

cmd에서 git branch [브랜치명] 을 해주면 브랜치가 생성된다.

git branch 로 현재 branch를 확인 할 수 있고 뒤에 브랜치명을 붙이면 그 브랜치가 생성이 된다.

git checkout [브랜치명]으로 현재 브랜치를 전환한다.

브랜치는 가지, 평행세계 같은거다.
개발을 여러사람이 한다면 누구는 a기능, 누구는 b기능을 개발할 것이다.
마스터 앱 개발 메인 파일이 있고, 이것을 베이스로 다른 기능을 개발해서 덧붙여야 한다면
그 때 a 기능 개발하는 사람이 branch밑에서 개발하고, 그 개발한 내용을 마스터와 합치는게 merge이다.



git push origin [branch명]
이게 제일 중요한 개념인데 origin과 branch만 알면 된다.
우리는 로컬에서 개발을 하고 있다, 예를 들어 우리의 노트북, 컴퓨터 등등 
모두가 메인이 되는 웹에 올라간 파일로 개발하면 문제가 무조건 생길거 아니냐
이 메인이 되는 파일이 origin에 웹서버에 있는거다. 
그리고 우리가 branch로 가지를 타고 origin에서 나가서 로컬에서 개발을 하는거다.
그리고 그 기능이 개발이 완성이 되면 origin에 merge 하는것이다.

merge의 설명

비슷한 기능이지만 merge는 통으로 합쳐버리는거다, 예를 들어 3가지 기능을 개발했는데 두번째 기능만 가져오고 나머지는 필요 없을수도 있다, 이 때 사용하는것이 cherry pick이다.

필요한 기능만 가져옴으로써 오류를 최소화할 수 있다.

 

conflict

충돌은 파일을 합치다 보니 main 파일 기준으로 a와 b 파일을 동시에 합친다 가정하면 a와 b 값이 다른점이 있을것이다.
이 때 main은 어떤걸 합쳐야 할 지 모르니 오류가 나고 이게 conflict이다.
이는 merge, 혹은 cherrypick을 중단하는 명령어 abort로 다시 뒤로 돌아가서 수정하면 되니 큰 문제는 아니라고 한다.
저 사진은 참고하라고 보여주셨는데 아직 무슨소린지 잘 모르겠다.

 

rebase, squash

작업 시에 conflict를 줄이기 위한 기법이 바로 rebase이다.

내가 어떠한 부분에서 브랜치를 꺼내서 작업하고 있는데, 이후 붙이려는 과정에서 master가 수정되었을수도 있잖아?

그러면 내가 작업한 브랜치의 master부분을 최신화 한 이후에 작업을 merge, 혹은 cherry pick 하는거다.

이 명령어가 rebase이다.
내가 작업한 branch = Feature 브랜치

 

reset, revert

실수로 올린 커밋을 되돌리고 싶을때 사용하는 명령어다,

reset.
내가 작업하던 브랜치의 뒤로 돌아가는것이고 
revert.
a, b, c 의 feature를 만들었는데 이중에 오류가 있다면 하나씩 revert 해보며 오류가 어디서 났는지 등을 체크하는 기능이다
예를 들면 b의 기능을 반대로 하는 b? 들었는데 잘 이해가 안된다
아무튼 5명이 개발했을 때 각자 개발한거 하나씩 꺼보는거라고 하셨

 

깃에 대해 더 궁금하신 분들은 강의 보길

 

깃은 너무 짧게 들어가서 진짜 요약정리만 배웟다

 

추후 훨씬 더 많이 들어가겠지

 


오후

 

취업특강

 

오후의 취업특강은 sk플래닛에 3년차 재직중이신 매니저님이 오셔서 취업특강을 진행해주셨다.

 

원래는 흔한 일반적인 강연을 하시려 했는데 본인이 취업 준비할때 제일 듣고싶었던, 제일 필요하다고 생각했던 것들을 더 진실하게 알려주고 싶어서 내용 다 갈아엎고 전날 다시 준비했다고 하셨다.

 

그리고 정말 알찼다 ㅎ


  • 목차
    • 코딩테스트
    • 서류
    • 면접
  • 1. 코딩테스트
    • 코딩 테스트는 기본이다, 어느정도 수준있는 회사를 위해서는 무조건 준비해야 할 내용.
    • 학창시절 수학공부할때 처럼 기본문제를 풀며 개념을 익히고 점점 상위문제로 나아가는 과정이 필요하다.
    • 그리고 그 과정을 위해서 양으로 밀어붙여야 한다, 본인은 정말 많이 푸셨다고 한다.
    • 백준허브로 깃허브에 푼 문제를 연동시켜서 바로 업로드되게 표현하고
    • '본인의 꾸준함 또한 사측에 어필할 수 있는 또 하나의 수단으로 삼을 수 있다.
  • 2. 서류
    • 본인은 개인적으로 노션 이력서, 포트폴리오는 비추천한다고 하셨다.
      • 인사 담당자가 노션링크를 눌러야 되면, 수동적으로 느껴지고 한 눈에 들어오지도 않을 뿐 더러
      • 접혀서 정리되어있는게 이뻐보여도 자칫 자신이 보여주고 싶은 내용을 담당자가 펼치지 않으면 보지도 못한다.
      • 더욱 깔끔하고, 정리되고, 확실하게 시선을 끌 수 있는 서류가 훨씬 더 매력적이다.
      • 취업시장 지원자가 너무 많으니 그 사람들보다 시선을 끌어야 한다.
    • 그 과정에서 서류를 다른 디자인 툴을 사용하거나, ai디자인 툴 등으로 만드는 것 또한
    • 새로운 툴을 익히고, 사용하는데 거부감이 없다는 또 하나의 어필이 될 수 있다.
    • 첫 페이지에 담을 정보의 순서 또한 이곳 저곳을 보다가 소중한 면접 시간을 30초라도 더 벌수 있게
    • 체계적으로 구성해야 하는데 이 때 링크드인, 원티드를 참고하며 유니콘기업에서 사용하는 순서를 가져와라
    • 척척박사들이 만든 순서에는 이유가 있을거다
    • 글자 크기 또한 작게 해도 괜찮다, 필요한 정보를 담고 필요없는 내용은 날려라
      • 포트폴리오
        • 깃허브또한 작업물을 전부 그냥 넣어버리기보다 체계적으로 구성하여
        • 문제에 이슈를 느낀 점, 해결하기 위해 노력한 점, 그 이슈를 해결하려고 직면하는 태도 등등을 담아서
        • 더욱 다채롭게 구성이 가능하다.
  • 3. 면접
    • 컴퓨터사이언스는 면접과 실력향상에서 큰 도움이 된다.
    • 면접관이 뽑고싶어하는 신입이 되어라.
    • 면접관들은 개발을 좋아하는 사람들이다 당신도 개발을 좋아하는사람이 되어라
  • 4. Tip
    • 개발 동아리, 사이드 프로젝트 등 협업 경험이 있으면 이 또한 어필할 수 있다.
    • 최근에는 개발자도 기획, 디자인 등 다양한 직무와 연관이 되고 커뮤니케이션이 필요한데
    • 이러한 상황에서 간접적으로 커뮤니케이션 능력을 증명할 수 있는 좋은 어필이 될 수 있다.

그 외 디테일한 내용은 나만 보게 비공개처리했다 ㅋㅋ

 

아주 유익한 특강이었다, 그저 취업만을 위한 것이 아닌 삶을 살아가는 태도 또한 배운것 같아 만족스러운 특강이었