Git을 사용할 때, 주로 사용하는 용어들이 있습니다.

checkout, branch, commit 등등.

하지만 매번 일일히 풀네임으로 적어주기가 귀찮습니다.


Alias 설정하기

이런 경우 사용하는 기능이 git alias입니다.

$ git config --global alias.br branch

위는 branch 용어를 br로 줄여주는 코드입니다. 다른 용어들도 위처럼 똑같이 설정해주시면 됩니다. 

다음은 git을 사용하는 개발자들이 주로 사용하는 용어들을 나열한 것 입니다.

$ git config --global alias.co checkout
$ git config --global alias.rb 'rebase -i'
$ git config --global alias.st status
$ git config --global alias.ad add
$ git config --global alias.co commit
$ git config --global alias.br branch

또는 이와 다르게 자신이 편한 방식으로 설정하면 됩니다. 

저는 극단적으로 'push origin master'를 pom으로 줄여서 사용합니다.

 

Alias 목록 살펴보기

$ git config --get-regexp alias

위를 커맨드에 입력해보면 안에 기본적으로 alias.acm 등이 있습니다. 확인해보고 이를 사용하는 것도 매우 편합니다.

 

Alias 삭제하기

$ git config --global --unset alias.br

 

Alias 파일에 직접 추가하기 

$ vim(open) ~/.gitconfig

위를 커맨드에 입력하여 파일에 직접 들어가서 그림의 alias부분처럼 직접 수정해주셔도 됩니다. 

git을 활용하여 블로그를 만드는 경우는 직접 페이지를 꾸며줘야하는 매우 진입장벽이 높은 블로그입니다. 

대신, 한번 꾸며놓으면 다른 블로그에 비해 상당히 편리함을 제공해주기도 합니다.


jekyll 테마 사이트 : http://jekyllthemes.org

 

Jekyll Themes

 

jekyllthemes.org

이번 글에서는 Lanyon이라는 테마를 활용하도록 하겠습니다.

Lanyon github : https://github.com/poole/lanyon

 

poole/lanyon

A content-first, sliding sidebar theme for Jekyll. - poole/lanyon

github.com

다른 지킬 테마는 gemfile을 포함하고 있기 때문에, 저장소를 만들어서 username.github.io로 바꿔주기만 하면 됩니다.

하지만 Lanyon은 그렇지 않기때문에 별도의 추가 작업이 필요하게 됩니다. 이를 추가하여 다루겠습니다.

 

1. Lanyon을 fork합니다.

2. 오른쪽 상단의 초록색 버튼에서 git url을 복사하여 저장소를 clone해줍니다.

git clone 'copyurl'

이제 여러분의 임의의 경로에 git 저장소가 생겼음을 볼 수 있습니다.

(물론 당연히 저장소의 이름은 username.github.io로 되어 있어야 합니다.)

3. 테마 적용을 위한 파일을 가져오기 위해 새로운 지킬 테마를 만들겠습니다.

이를 위해 jekyll을 설치해야 합니다. --> (sudo) gem install jekyll

bundler도 설치해줍시다. --> (sudo) gem install bundler

임의의 경로에서 jekyll new test를 입력하면, 다시 새로운 테마를 위한 여러 파일이 생깁니다.

이 파일을 원래 우리의 저장소에 전부 붙여넣기 해줍니다.

4. jekyll serve 로 작업이 성공했는지 확인합니다.

http://localhost:4000로 들어가면 본인의 테마가 적용되었음을 확인할 수 있습니다.

5. git에 push하여 해당사항을 적용해줍니다.

git add --all

git commit -m "init blog"

git push origin master

마지막으로 username.github.io를 들어가서 배포된 것을 확인해봅시다.

 


Please append '--trace' to the 'serve' ~ 의 에러는 복붙이 잘못됫다거나 파일을 잘못만든 경우입니다.

사실 구체적으로 어떤 해결법이 있는지는 모르겠지만, 처음부터 다시 시도해보는게 가장 빠른 것 같습니다.

 

Could not find gem '~~~' 의 에러는 해당 모듈이 없음을 의미합니다.

(sudo) gem install 모듈로 설치해주면 됩니다.

Learn Git Branching이라는 사이트를 들어가면

다음과 같은 창이 뜨게 됩니다. 기초부터 레벨업을 해가는 방식입니다.

위의 그림과 같은 단계가 있는데, 종합선물세트부터는 조금 어렵습니다. 그 위에 기본적인 것만해도 개인적인 깃허브를 다루는데는 문제가 없을 겁니다.

 

Reference

https://learngitbranching.js.org
 

Learn Git Branching

An interactive Git visualization tool to educate and challenge!

learngitbranching.js.org

 

먼저 깃허브 저장소를 가장 따라하기 쉽게 설명해놓은 것은 이미 git에서 만들어 놓았다.

깃허브에서 new repogitory를 만들고 README를 initialize하지 않은채로 생성하면,

다음과 같이 페이지가 뜨게되는데, 회색 코드블럭에 있는 것을 따라하면 생성할 수 있다.

깃 저장소를 remote한 상태라면 파일을 업데이트하기 위해서는 대부분 다음과 같은 순서를 따른다.

1. git add *.py (파이썬 파일만 업데이트 할 경우)

2. git status
- add에서 추가한 파일의 상태가 나오게 된다. 만약 status에 원하는 파일이름이 없다면 다시 add를 해주어야한다.
- 또한, git을 commit하기 전에 파일을 수정했다면, 다시 add해주어야 한다.

3. git commit -m message
- add한 파일들에 대해 commit을 진행하여 본격적으로 깃 저장소에 업데이트할 수 있는 상태가 됩니다.
- message는 해당 commit에 대한 설명을 적어줍니다.

4. git push -u origin master
- push는 마지막으로 commit한 파일들을 깃 저장소에 업데이트 하겠다는 의미입니다. 

5. git pull
- 저장소의 내용을 전부 받아옵니다.


6. git clone git주소
- 해당 git 주소를 복제합니다.

7. git branch [브랜치 이름]
- 새로운 브랜치를 만듭니다.

8. git checkout [브랜치 이름]
- 해당 브랜치로 이동합니다.

등등...

python을 사용하여 디렉토리 안의 특정 확장자 또는 모든 파일을 찾을 수 있습니다.

--> import glob

을 통해 쉽게 접근할 수 있습니다.


1. 폴더 안의 모든 디렉토리 찾기

all_dir = glob.glob('./my_dir/*')

위와 같이 *을 사용하면 확장자 상관없이 모든 파일을 가져오겠다는 의미입니다.


2. 폴더 안의 폴더 안의 폴더 안의 파일 찾기

폴더 안에 또 디렉토리가 있는 경우가 있습니다. 

그럴때는 glob 함수에서 제공하는 파라미터인 recursive를 활성화시켜주면 됩니다.

# 디렉토리 안의 모든 파일을 찾고 싶은 경우(sub directory도 포함)
all_dir = glob.glob('./my_dir/*', recursive = True)

3. 특정 확장자만 찾기

이 또한, recursive를 활성화시켜주면 내부 폴더안의 폴더까지 뒤져서 전부 찾아줍니다.

all_dir = glob.glob('./my_dir/*.jpg')

all_dir = glob.glob('./my_dir/*.jpg', recursive = True)

 


4. glob을 이용하여 파일 생성일, 사이즈 등을 기준으로 정렬하고 싶은 경우

편리하게 쓸 수 있는 order는 여러가지가 있지만 대표적으로 다음과 같습니다.

  • os.path.getctime # 파일 생성일
  • os.path.getmtime # 파일 최근 수정일
  • os.path.getatime # 파일 접근일
  • os.path.getsize # 파일 사이즈
sorted_all_dir = sorted(glob.glob('./my_dir/*'), key = order)