[TIL 23.01.10] 새벽공부

이승렬·2023년 1월 10일
0

항해99

목록 보기
2/34
post-thumbnail


오늘도 3가지의 문제점을 가지고 오자 라는 마음가짐으로 TIL 시작하겠습니다.

오늘의 3줄요약

  1. GitHub의 마구마구 괴롭히기 (Fork 문제, pull 문제, pull reqeust 문제, 등등..)
  2. Javascript의 마구마구 괴롭히기 (동적 html에서 value 값 뽑기)
  3. GitHub의 끝난줄 알았는데, 괴롭히기 ( 계속해서 pull 할때 다 삭제를 해야 하는가?)

오늘은 큐엔에이 형식으로 바로바로 질러버리겠습니다.

Q1. [GitHub] Git Repo 를 Fork 해왔는데, venv가 보이지 않는다..이는 내 것에서만 안되고 다른 사람에 것만 되는 것인가?

  • A. 오늘 진행하면서 알게 된 점인데, 사실 이는 venv가 눈에만 안보였던 것이고,
    인터프린터를 설정에 들어가서 직접 시작만 해주면 된다.
  • 한번 설정만 제대로 해주면 (git clone url 만 해주면, 다시 venv와 인터프리터로 고생할 일이 없다.)

Q2. [Python] Python 에서 딕셔너리의 값을 빼오려면 어떻게 해야 할까?

def veggie_post():
    url_receive = request.form['url_give']
    comment_receive = request.form['comment_give']
    title_receive = request.form['title_give']
  • 다음과 같이 veggie_post 라는 함수를 정의하여, url,comment. title 값을 html 파일에서 가져온다고 했을때,
	veggie_list = list(db.veggie.find({}, {'_id': False}))
  • 다음과 같이 database (현재는 mongoDB를 사용하고 있다.) 에서 다음과 같은 조건이 있는 것들을 찾을때

  • 보통 이 경우는 veggie_list, 또한 어떠한 list 를 사용했을때, 중요한 list들 안에 어떠한 내용이 있을때 흔이 사용하는 경우이다.

 	for veggie in veggie_list:
          if (title_receive != veggie.get('title')):
              title_2 = title_receive
          else:
              return jsonify({'msg': '중복입니다!'})
  • 여기에서 중요한 것이 두번째 줄에 veggie.get('title') 이다.
    veggie 라는 리스트에서 title 을 가져오는 함수이다.
  • 딕셔너리에서 사용되는 함수는 여러가지가 있는데 이를 알아보자

<참고> https://bigdaheta.tistory.com/9#:~:text=value%EB%A5%BC%20%EC%B6%9C%EB%A0%A5%ED%95%98%EB%8A%94%20%EB%91%90,key%EB%A5%BC%20%EC%A0%81%EC%96%B4%EC%A3%BC%EB%A9%B4%20%EB%90%9C%EB%8B%A4.&text=.values

Q3.[Python] Python 에서 문자열 비교는 서로 어떻게 합니까?

  • 다음과 같이 합니다. 깔깔

Q4.[GitHub] .main 에서 불러올때는 왜 안되고.. 로컬 Repo에서는 branch를 만들어야만 pull을 할 수 있을까요..?

  • 이 문제의 해결은 아주 간단하게도
git pull origin " 내가 원하는 branch "

// 혹은

git pull origin main

// usually...?
  • 하지만 이 말썽쟁이 짱구 같은 녀석도 골칫 덩어리이다.
    이 짱구같은 놈의 말썽은 뒤에서 보도록 하자

Q5. [GitHub] Branch 삭제 도대체 어떻게 함?

  • A.
git branch -d < "local Branch 이름" >
  • 단, 현재 작업중인 브랜치는 삭제를 할 수 없다.
  • 브랜치 이름으로 전환하는 명령어는
git checkout < "branch 이름" >

만약 작업중인 branch를 강제 삭제하기 위한 명령어는 다음과 같다.

git branch -D <"local Branch 이름">

원격에 있는 브랜치도 삭제를 하고싶으면 다음과 같이 하자.

git push <원격 저장소 이름> -d <원격 브랜치 이름>

원격, 로컬 에 있는 브랜치 목록을 확인하기 위한 명령어는

git branch -a  // -a 플래그는 -all 의 줄임말이다. (로컬, 원격 브랜치 모두 확인가능)

원격에 있는 저장소만 확인을 하기 위해서는

git branch -r // -r 플래그는 --remote의 줄임말이다.

Q6.[GitHub] git에서 특정 브랜치만 Clone 하는 방법?

  • A. 일단 특정 Branch 만 Clone 할 수 있다고 하긴 하지만, 잘 하지는 않는 다고 한다.
    전체를 클론한 다음에, pull 로 긁어오는 방식을 택하고 있다.
git clone -b {branch_name} --single-branch {저장소 URL}

Q7.[GitHub] git_pull Error 잡아줘잉...

<참고>
https://goddaehee.tistory.com/253

결론적으로 이야기를 한다면 merge를 하거나, switch branch를 할때

해결방법1.

  • Staging 영역에 있는 파일의 변경사항은 Stack 에 넣어둔다.
  • 그 이후에 내가 가지고 있는 로컬 브랜치로 받아온다.
git stash (작업하고 있는 것을 뒤로 숨겨주는 것)
git pull origin main
git stash pop (임시저장되어 있는 것을 불러오는 것)
  • 이 세가지를 한꺼번에 묶어서 가는것으로 생각하자.

해결방법2.

  • 다른 곳에 add를 해준다.

Q8.[GitHub] github Pull Request를 Terminal에서 하고싶다...

  • A. 이는 hub를 통해서 할 수 있는데, hub는 github에서 관리를 하는 Project로
    우리가 필요한 명령어를 git 에 추가를 해서 사용할 수 있게 한다고 한다.

다음과 같이 명령어가 대표적으로 있다.

  • hub-create: github Repo를 생성
  • hub-delete: github Repo를 지우기
  • hub-fork: github Repo 를 fork
  • hub-pull-request: github pull request
$ brew install hub
  • 다음과 같이 brew 를 통해서 hub를 설치한다.
$ alias git = hub
  • 다음과 같이 hub 명령어를 git 명령어에 추가하기 위해서 별칭을 만드는 작업을 한다.
$ git --version
  • 다음 명령어를 입력해서 확인 할 수 있다.

결론적으로 다음과 같은 명령어가 먹히면 pull request 를 할 수 있다.

$ git pull -request -b [OWNER:] BRANCH
  • 이 명령어를 입력한 후에 나오는 화면에서 첫번째 줄은 full-request의 제목
    그 다음줄부터는 내용을 작성할 수 있고 이후에 :wq 를 타이핑하면 Github에 Full-request가 된것을 확인할 수 있다.

Q9. git add . 가 뭐임?

아직 까지는 왕초보라고 나도 생각을 하기 때문에 다음 사이트를 자주 보면서 익숙해지는 시간을 가져보자... (아직 2일차 이니까..?)
<출처> https://sin0824.tistory.com/8#:~:text=1%EF%B8%8F%E2%83%A3%20command%20%2B%20%EC%8A%A4%ED%8E%98%EC%9D%B4%EC%8A%A4%EB%B0%94%EB%A5%BC%20%EB%88%8C%EB%9F%AC,%E2%80%94version%22%20%EC%9D%84%20%EC%9E%85%EB%A0%A5%ED%95%9C%EB%8B%A4.

  • A. git add . 는 local 저장소의 파일을 1차로 가상공간에 추가하는 명령어이다.
    쉽게 생각을 하자면, "예비저장" 같은 느낌이다.
  • 이 부분이 나왔으므로 그냥 습관처럼 해야하는 순서들을 생각해보자.
  1. git 초기설정
    • 계정 초기설정하기
    • github 로컬 저장소 지정 (git init으로 -> 해당 폴더를 git local 저장소로 사용하겠습니다.)
  2. 파일 올리기
    • git add . (가상 공간에 예비저장)
    • git commit -m "메세지" (가상 공간에 최종 저장)
    • git push origin master (원격 저장소에 파일을 업로드)
    • git remote -v (로컬 저장소와 원격저장소가 연결이 되어있는지 확인하는 명령어)
      - 만약 존재하지 않는다면 git remote add origin "github 주소"

Q10. untracked file 들 지우기

A. 어려운 부분이다. 만약에 git으로 프로젝트를 관리하다보면 untracked 파일이 쌓이는 경우가 많다고 한다.
이때 저장소에 넣을 파일은 아니지만, 테스트용으로 local 에서 임의로 만들었다가 하는 경우이다.
이러한 파일들을 .gitignore 안에 넣어도 되지만, 빌드파일처럼 프로젝트 내에 원래 생기는 파일들이 아니라 그냥 임시용으로 만들 것이라면 딱히 패턴이 없는 경우가 많고 ignore 안해줘도 된다고 한다.
modified 파일을 한번에 취소하려면

git co -- . 

와 같은 명령어로 지울 수 있다고 한다.
하지만 untracked 파일은 git이 관여를 하지 않아서 한곳에 모여있지 않는다면, 즉 .gitignore에다가 때려박지 않는 다면 어렵다.

본인도 이것때문에 애를 많이 먹었었고
실제로 질문한 결과 시작부터 file 생성을 해서
.gitignore 파일을 생성한뒤에
이 안에 .idea 를 넣어준 결과 잘 실행 (즉 다른 사람들이 pull 을 할때 자동으로 내 pycharm ver. 에 맞아지는 결과를 볼 수 있었다.)

하지만 여기에서는 강제적으로 지우는 과정을 알아보았다.

  1. untracked file 만 지우기
git clean -f

2.디렉토리까지 모두다 지우기

git clean -fd

마치며...

오늘 정말 많은 것을 배운것 같다.
특히나 깃에 대해서 많이 배운 것 같은데, 아직도 헷갈리는 부분이 많다.
이를 지금 막 해결한다기 보다는 나중에도 계속 고쳐나가면서 해결해야 할 부분이 많을 것같다.
아 손아파.

profile
Backend_Developer

0개의 댓글