본문으로 바로가기

.git 폴더 옮기기 | Timeattack | Til 특강 |

category TIL 2022. 10. 14. 23:56
  • 그래도 .git 폴더를 옮기면 거기에있는 파일들을 올려야 하지 않을까?
  • 왜 로그아웃 함수에 render를 사용하면 에러가 뜰까

 

.git 폴더 옮기기

코딩을 배우고 처음부터 생각했던것이 폴더를 깔끔하게 정리하고 github의 레포지토리를 관리하는 작업을 오늘 해보기로 했다. .git 폴더를 상위폴더에 옮겨서 한번에 여러가지 프로젝트를 관리 해보려고 했다.

 

우선은 경로만 바꾸는건 .git 숨겨진 폴더를 옮기면 될 것 같아서 상위폴더에 옮기고 진행 했는데 아래와 같은 에러가 떴다.

 ! [rejected]        main -> main (non-fast-forward)
error: failed to push some refs to 'github.com:tikitaka205/Timeattack.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

이때 까지만 해도 pull 이나 fetch를 이용해서 원격과 같이 만들어주고 하면 되겠지 라고 생각했다. 

계속 반복하면서 에러가 계속 나길래 생각을 해봤는데 폴더 하나에 프로젝트를 여러개 둘 수 있나? 라는 의문이 들었고 git에 대한 이해도 없이 깔끔하게 폴더를 정리해보겠다는 생각이 잘못된 걸 깨달았다.

오히려 중간에 폴더가 생겨서 경로가 바뀌거나 폴더 이름을 변경하는건 어떻게 되는지 공부해보기로 했다. 중간에 어떤 폴더를 넣어주는것과 폴더의 이름을 바꾸는건 오히려 git에서 자동으로 인식을하고 바꿔주는 걸 확인할 수 있었다.

폴더 이름을 바꾸면 vscode에서 폴더를 인식하지못하고 파일들이 사라지지만 다시 폴더를 열고 add commit push를 하면 변경되는 것을 알 수 있었다.

TIL특강 요약

내가 직접 코드를 짜고 내 코드에 애착을 가지자

내가 좋아하는 기술을 사용하고 내가 성장 할 수 있는 곳이 가장 좋은 직장이다.

Til 채용과도 연결된다

채용은 앎의 증명이다

아는것, 아는것을 증명하는것

프로젝트 달랑 보여주는거 그걸로 끝?? nope

성장, 성실함, 흡수력을 보여줘야함

먼 훗날 내가 까먹지 말아야한다

 

결국 til 내가 이걸 안다 증명하는 방법이다.

나의 커밋로그이자 버전이다. 김민수.ver3

 

TIL은 문몰해알 꼭 적어야한다.

어떤문제가 있었나

무엇을 몰랐나 (자세히)

어떻게 해결했나

무엇을 알았나(자세히)

 

나는 처음보는 사람도 따라할 수 있는 친절한 til을 적고싶다. 실력이 되면 도전해보자

 

Timeattack

login_required 개념, logout 개념, render, redirect 개념을 정확히 알지못해서 찾아봤다.

로그인을 하지않고는 접속하지 못하게 하고싶을때는 @login_required 를 함수 바로윗줄에 적어주고 (login_url='login') 코드를 입력해줘서 로그인을 할 수 있게끔 화면에 로그인창을 띄워준다

#login_required

from django.contrib.auth.decorators import login_required

@login_required(login_url='login')

render, redirect 활용시

#render redirect

from django.shortcuts import render, redirect

return render(request, 'home.html')

#이건 끝에 login 붙여주는거
return redirect('login/')
#이건 다시 처음부터 login만 붙여주는거
return redirect('/login/')

로그아웃은 반드시 redirect로 해야한다. render 사용시 오류가 뜬다.

CSRF token from POST incorrect.

토큰에 의한 오류인 것 같다.

#로그아웃
@login_required
def logout(request):
    auth.logout(request)
    return redirect('/login/')

render는 특정 html 파일을 불러와서 페이지를 새로고침시켜주는 기능을 한다 또한 파라미터에 데이터를 담아 보낼 수 있다

redirect 역시 페이지를 새로고침해주는 기능을 하는데 render와의 차이점은 html파일이 아닌 url 경로를 기준으로 페이지를 로드하며, 다른 데이터를 함께 보낼 수 없다.