<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>one_by_one.io</title>
        <link>https://velog.io/</link>
        <description>알고보니 재미있는 개발 💻</description>
        <lastBuildDate>Wed, 26 Jan 2022 13:40:59 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>one_by_one.io</title>
            <url>https://velog.velcdn.com/images/somy-john/profile/618d3e1a-d94e-48f1-b556-81da1b27ca4c/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. one_by_one.io. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/somy-john" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Git Alias 설정하기 ( mac os )]]></title>
            <link>https://velog.io/@somy-john/Git-Alias-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0-mac-os</link>
            <guid>https://velog.io/@somy-john/Git-Alias-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0-mac-os</guid>
            <pubDate>Wed, 26 Jan 2022 13:40:59 GMT</pubDate>
            <description><![CDATA[<h2 id="🙌🏻-intro">🙌🏻&nbsp; Intro</h2>
<p>안녕하세요 😃
이번 글에서는 git을 조금 더 편하고 빠르게 쓸 수 있는 &nbsp;<code>alias</code> 에 대해서 알아볼거에요!
<code>alias</code> 는 &nbsp;<code>별명</code> 이라는 뜻을 가지고 있는 단어인데, git 명령어에 별명을 지어준 후 그 별명으로 명령하는 방식이에요. <code>C언어</code> 의 &nbsp;<code>메크로</code> 와 같은 느낌이라고 보시면 편해요!</p>
<p>🧑🏻‍💻&nbsp;&nbsp;이 글은 mac os 기준으로 작성되었어요. windows os 에서는 &nbsp;<code>alias</code>&nbsp;설정 방법이 상이할 수 있습니다.</p>
<hr>
<h2 id="🛠-alias-설정-하기">🛠&nbsp; Alias 설정 하기</h2>
<p>👉🏻 &nbsp;Finder 에서 직접 들어가서 편집해주어도 되지만, 저는 편의를 위해 터미널로 진행할게요!</p>
<p>💡&nbsp; Finder 에서 작업할 때에 <code>~/</code> 경로에서 <code>cmd + shift + .</code> 을 입력하시면, 숨겨져있던 파일이 나옵니다. 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;만약 해당 파일이 없다면, 새로 만드시면 됩니다.</p>
<p>👉🏻 &nbsp;<code>bash</code>를 사용하시는 경우, <code>zsh</code> 에 그대로 <code>bash</code> 를 대입하시고 진행하시면 됩니다!
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>.zsh_profile  👉🏻 .bash_profile</code></p>
<hr>
<h3 id="🌘zsh_profile-수정">🌘&nbsp;&nbsp;<code>.zsh_profile</code> 수정</h3>
<pre><code class="language-bash">$ echo &quot;\nalias g=\&quot;git\&quot;&quot; &gt;&gt; ~/.zsh_profile</code></pre>
<p>&nbsp; <code>vim</code> 을 사용하여 입력할 수도 있으나, 편의를 위해 <code>echo</code> 를 사용하였어요.
&nbsp;&nbsp; echo 명령어를 사용하면, 해당 파일이 없을 때는 자동으로 파일을 생성하고 입력을 해줘요.</p>
<pre><code class="language-bash">$ g --version
git version 2.33.0</code></pre>
<p>&nbsp; 터미널을 종료 후 다시 열어준 후, 위 명령어를 입력하였을 때 git 버전이 제대로 나온다면 성공!</p>
<hr>
<h3 id="🌗-gitconfig-수정">🌗&nbsp;&nbsp; .gitconfig 수정</h3>
<pre><code class="language-bash">$ vim ~/.gitconfig</code></pre>
<p>&nbsp; 입력할 내용이 많기 때문에 이번에는 <code>echo</code> 대신 <code>vim</code> 을 이용했어요.
&nbsp;&nbsp; 이제 <code>.gitconfig</code> 의 <code>alias</code> 섹션을 추가해주면 되는데, 아래는 제가 사용하는 <code>alias</code> 들이에요. </p>
<pre><code>[user]
        name = username
        email = useremail@email.com
[alias]
        i = init
        sb = status -s -b
        cm = commit -m
        c = commit
        cam = commit -am
        s = status -s
        a = &quot;!git add $(git status -s | fzf -m | awk &#39;{print $2}&#39;)&quot;
        aa = add --all
        l = log --oneline
        lgc = log --color --graph --pretty=format:&#39;%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%C(bold blue)&lt;%an&gt;%Creset&#39; --abbrev-commit
        rao = remote add origin
        cl = clone
        ps = push
        pl = pull
        psom = push origin master
        plom = pull origin master
        b = branch
        bd = branch -d
        m = merge
        co = checkout
        ch = &quot;!git checkout $(git branch -vv | grep -v &#39;^\\*&#39; | fzf | awk &#39;{print $1}&#39;)&quot;
        cob = checkout -b 
        b0 = &quot;!git branch | awk &#39;/^\\*/{print $2}&#39;&quot;
        back = &quot;!git branch backup-`git b0`&quot;
        cleanbranch = &quot;!git branch -d $(git branch --merged | grep -v &#39;^\\*\\|\\&lt;master$&#39;)&quot;
[color]
        ui = auto
        branch = auto</code></pre><p>&nbsp; <code>ESC</code> 를 누른 후, <code>shift + Z + Z</code> 나 <code>:wq</code> 를 입력해 저장 후 종료하실 수 있어요.</p>
<p>&nbsp; 💡&nbsp; 하나의 <code>alias</code> 를 추가하실 때에는 아래의 명령어를 입력하셔도 돼요.</p>
<pre><code class="language-bash">$ g config --global alias.[별명] &quot;[본명]&quot; 
# 이해가 쉽도록 별명과 본명이라고 적었어요.
# 아래 명령어를 입력하시면, g cm 을 입력하였을 때 g commit -m 이 작동합니다!
$ g config --global alias.cm &quot;commit -m&quot;</code></pre>
<hr>
<h3 id="🌕-alias-섹션-다루기">🌕&nbsp;&nbsp; alias 섹션 다루기</h3>
<p>👉🏻 &nbsp;제가 사용하는 <code>alias</code> 섹션에서 <code>&quot;!블라블라&quot;</code> 를 보실 수 있을거에요.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;느낌표(!)로 시작하는 <code>alias</code> 는 셸 스크립트로 작동하게 돼요. </p>
<pre><code class="language-bash">[alias]
    sayhi = &quot;!echo hi&quot;</code></pre>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;위와같이 작성을 해 줬다고 하면,</p>
<pre><code class="language-bash">$ g sayhi
hi</code></pre>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;이렇게 작동이 됩니다...!  재미있지 않나요?? 😏
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 이를 이용해 여러 유용하고 재미있는 <code>alias</code> 들을 만들어 사용해보면 좋을것 같아요.</p>
<hr>
<h2 id="👋🏻-outro">👋🏻&nbsp; Outro</h2>
<p>&nbsp;이번 글에서는 <code>git</code>을 더 쉽고 빠르고 간지나게 사용할 수 있는 <code>alias</code>에 대해서 알아보았어요!
조금 더 알아보시고 싶으시거나, 더 유용한 <code>alias</code> 를 보시고 싶으시다면, 아래에 남겨드린 링크로 들어가셔서 둘러보아도 좋을 것 같아요 🙌🏻</p>
<p><a href="https://johngrib.github.io/wiki/git-alias/">https://johngrib.github.io/wiki/git-alias/</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Git 기본 명령어 정리 1]]></title>
            <link>https://velog.io/@somy-john/Git-%EA%B8%B0%EB%B3%B8-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC-1</link>
            <guid>https://velog.io/@somy-john/Git-%EA%B8%B0%EB%B3%B8-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC-1</guid>
            <pubDate>Mon, 24 Jan 2022 12:29:08 GMT</pubDate>
            <description><![CDATA[<h2 id="🙌🏻-intro">🙌🏻 Intro</h2>
<p>안녕하세요 😃
이번 글은 git 에서 자주 쓰이는 명령어들에 대해 알아보는 첫 번째 글이에요!</p>
<p>💡  <code>ctrl + f</code> 혹은 <code>cmd + f</code> 를 이용하시면 찾으시는 명령어를 빠르게 보실 수 있어요.</p>
<h2 id="📇-init">📇 init</h2>
<p>👉🏻  init은 &#39;초기화&#39; 라는 뜻인데요, git과 상관없던 디렉토리를 git으로 관리할 수 있게 해주는 명령어입니다.</p>
<pre><code>git init
</code></pre><p>git이 관리하는 로컬 저장소로 만들 경로에서 위 명령어를 인자 없이 입력하면 됩니다. 만약 <code>/Users/username/Desktop</code> 경로에서 <code>git init</code>을 하게 되면, Desktop을 git에서 관리하게 됩니다.</p>
<hr>
<h2 id="🔗-remote">🔗 remote</h2>
<p>👉🏻  remote를 설정하는 것은 원격 저장소와 로컬 저장소를 연결 시켜주는 일입니다.
       remote를 설정해주면, 로컬 저장소에서 원격 저장소로 변경 사항을 보낼 수 있게 됩니다.</p>
<p>💡  처음에 많이 들 헷갈려하시는 부분이 로컬 저장소와 원격 저장소의 관계입니다.
       구글 드라이브를 생각하시면 쉽게 이해할 수 있습니다.
       로컬 저장소는 컴퓨터의 저장 공간이고, 원격 저장소는 구글 드라이브 같은 저장소입니다.
       구글 드라이브에 a라는 폴더를 올려두었다고 해봅시다.
       내 컴퓨터에서 아무리 a폴더를 수정해도 구글 드라이브의 a폴더는 변하지 않습니다.
       구글 드라이브에 변경된 a폴더를 다시 올렸을 때 구글 드라이브의 a폴더가 변경됩니다.</p>
<p>🙌🏻&amp;nbsp  git에서 로컬 저장소와 원격 저장소도 같은 개념입니다.
       로컬 저장소에서 아무리 파일을 변경하여도 원격 저장소는 변하지 않습니다.
       로컬 저장소에서 원격 저장소로 변경 사항을 전달해주어야만 원격 저장소의 내용이 변경되는 것입니다.</p>
<pre><code>git remote
</code></pre><p>등록된 원격 저장소의 별명을 보여줍니다.</p>
<pre><code>git remote -v
</code></pre><p>등록된 원격 저장소의 별명과 URL을 보여줍니다.</p>
<pre><code>git remote add origin &quot;URL&quot;
</code></pre><p>URL이 가리키는 원격 저장소를 origin이라는 별명을 부여하고 등록합니다.
    이 때 origin을 많이 쓰지만, 다른 별명을 부여하셔도 상관없습니다.</p>
<pre><code>git remote remove origin
</code></pre><p>origin이라는 별명을 remote에서 삭제합니다.
    만약 URL을 잘못 적으셨다면, 이 명령어를 통해 삭제 후 다시 등록해주시면 됩니다.</p>
<hr>
<h2 id="👥-clone">👥 clone</h2>
<p>👉🏻  clone은 &#39;복제&#39;라는 뜻인데요, 말 그대로 원격 저장소를 그대로 로컬 저장소에 복제하는 것입니다.</p>
<pre><code>git clone [URL]
</code></pre><p>URL이 가리키는 원격 저장소를 현재 경로에 복제합니다.
    이 때, init을 해줄 필요도, remote를 설정해줄 필요도 없습니다.
    받아온 원격 저장소의 URL은 origin 이라는 별명으로 remote에 저장됩니다.</p>
<pre><code>git clone [URL] [복제할 경로 혹은 디렉토리 이름]
</code></pre><p>위와 같이 clone을 하면, URL 뒤에 지정해준 경로 혹은 이름에 복제할 수 있습니다.</p>
<hr>
<h2 id="📩-add">📩 add</h2>
<p>👉🏻   <code>git add</code>는 working directory 상의 변경된 내용을 staging area에 추가(add) 하기 위해서 사용하는 명령어입니다. 뒤에서 알아볼 <code>git commit</code>과는 다르게, <code>git add</code>명령어는 아무리 많이 입력해도 변경 이력에는 영향을 주지 않습니다.</p>
<pre><code>git add [파일이름 혹은 경로]
</code></pre><p>파일이름을 입력할 경우 현재 디렉토리의 해당 파일을 staging 영역에 추가합니다.
    경로를 입력하여 상위나 하위 디렉토리의 파일을 staging 영역에 추가할 수도 있습니다.</p>
<pre><code>git add [파일이름 혹은 경로] [파일이름 혹은 경로]
</code></pre><p>위와 같이 띄어쓰기로 구분하면, 한번에 여러 파일을 지정하여 staging 영역에 추가할 수 있습니다.</p>
<pre><code>git add *.html
</code></pre><p>html 형태의 모든 파일을 staged 상태로 만듭니다.</p>
<pre><code>git add .
</code></pre><p>현재 디렉토리의 모든 파일을 staging 영역에 추가합니다.</p>
<pre><code>git add -A
</code></pre><p>작업 디렉토리의 모든 파일을 staging 영역에 추가합니다.
   현재 디렉토리의 하위 디렉토리의 파일만 staging 영역에 추가하는 <code>git add .</code>와는 다르게,
   <code>git add -A</code>는 프로젝트의 어느 디렉토리에 있든 모든 파일을 staging 영역에 추가해줍니다.</p>
<hr>
<h2 id="📨-commit">📨 commit</h2>
<p>👉🏻   <code>git commit</code>은 지금까지 staging 영역에 모아둔 변경사항들을 기록하는 명령어입니다.</p>
<pre><code>git commit
</code></pre><p>위 명령어를 입력하면, 커밋 메세지를 입력하는 창으로 넘어갑니다.
   한 줄로 커밋 메세지를 입력하기 힘들 경우 사용합니다.
   <code>i</code>를 눌러 insert 모드로 변경한 후, 커밋 메세지를 입력합니다.
   메세지를 다 쓴 후에는 <code>esc</code>를 누른 후<code>shift + Z + Z</code>를 눌러 저장 후 텍스트 편집기에서 나갈 수 있습니다.
   만약 커밋 메세지를 입력하지 않는다면, 커밋이 중단됩니다.</p>
<pre><code>git commit –m &quot;커밋 메세지&quot;
</code></pre><p>-m 옵션을 사용하면, 커밋 메세지를 바로 적어 커밋 할 수 있습니다.</p>
<p>-m 옵션을 써서 커밋 메세지를 입력하는 편이 빠르고 간단하기 때문에,
   긴 커밋 메세지를 쓸 경우를 제외하고는 -m 옵션을 사용하는 것을 추천합니다.</p>
<pre><code>git commit --amend
</code></pre><p>이 명령어는 바로 앞 커밋에 이번 커밋을 덮어쓰는 명령어입니다.
   이미 커밋을 했는데, 추가할 사항이 있을 때 혹은 커밋 메세지를 수정할 때 쓰입니다.</p>
<p>인덱스에 파일을 등록하지 않은 상태(staging 을 안한 상태, add를 안 한 상태)에서
   --amend 옵션을 지정하고 다시 커밋 하면, 커밋 메세지를 수정할 수 있습니다.</p>
<hr>
<h2 id="📤-push">📤 push</h2>
<p>👉🏻   push는 로컬 저장소에서 commit한 내역 들을 원격 저장소에 보내는 작업입니다.
      아무리 commit을 많이 해주어도 push를 하지 않으면,
      원격 저장소에서는 로컬 저장소에서 어떤 변경 사항이 있는지 알 수 없습니다.</p>
<pre><code>git push [remote 별명] [branch 명]
</code></pre><p>push를 할 때에는 원격 저장소와 브렌치를 지정해주어야 합니다.
   <code>git push origin main</code> 명령어를 입력하면,
   origin이 가리키는 원격 저장소의 main 브렌치에 변경 사항을 보내주는 것이 됩니다.</p>
<p>💡   push를 할 때에는 신중해야 합니다.
       만약 브렌치를 새로 파서 작업하지 않고, main 브렌치에 push를 할 때에는 되돌리기 힘드니 더욱 신중해야 합니다.</p>
<hr>
<h2 id="📥-pull">📥 pull</h2>
<p>👉🏻   pull은 원격 저장소의 변경 사항을 가져오는 것입니다. push와는 반대의 개념입니다.
👉🏻   팀원과 협업을 하는 상황을 생각해봅시다.
       팀원이 push를 하여 변경 사항이 원격 저장소에 저장되었을 경우에
       나의 로컬 저장소는 원격 저장소의 변경 사항이 적용되지 않습니다.
       이 때 원격 저장소의 변경 사항을 받지 않고 push를 하게 되면, 충돌이 일어나게 됩니다.</p>
<pre><code>git pull [remote 별명] [branch 명]
</code></pre><p>지정한 원격 저장소와 브렌치의 변경 사항을 가져와 로컬 저장소에 저장합니다.</p>
<hr>
<h2 id="👋🏻-outro">👋🏻 Outro</h2>
<p>이번 글에서는 git을 사용할 때 가장 많이 사용하고, 기본적인 명령어들을 다루어 보았어요. 다음 글에서는 git 명령어들을 빠르고 편리하게 입력할 수 있는 <code>alias</code>에 대해 알아볼게요!</p>
]]></description>
        </item>
    </channel>
</rss>