<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>git - shungo blog</title>
	<atom:link href="https://shungoblog.com/tag/git/feed" rel="self" type="application/rss+xml" />
	<link>https://shungoblog.com</link>
	<description>しゅんごブログ</description>
	<lastBuildDate>Fri, 02 May 2025 11:22:12 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://shungoblog.com/wp-content/uploads/2022/04/cropped-IMG_0718-32x32.jpg</url>
	<title>git - shungo blog</title>
	<link>https://shungoblog.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://shungoblog.com/tag/git/feed"/>
	<item>
		<title>【Git】Merge commitをrevertする方法 (error: commit xxx is a merge but no -m option was given.)</title>
		<link>https://shungoblog.com/programming/git-revert-merge-commit.html</link>
					<comments>https://shungoblog.com/programming/git-revert-merge-commit.html#respond</comments>
		
		<dc:creator><![CDATA[しゅんご]]></dc:creator>
		<pubDate>Mon, 29 May 2023 23:45:03 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[git]]></category>
		<guid isPermaLink="false">https://shungoblog.com/?p=3084</guid>

					<description><![CDATA[<p>merge commitをrevertで取り消す時に、下記のエラーが出たことがないでしょうか？ % git revert 504c0d33 error: commit 504c0d33e29dc4488bd1b4eb95 [&#8230;]</p>
<p>The post <a href="https://shungoblog.com/programming/git-revert-merge-commit.html">【Git】Merge commitをrevertする方法 (error: commit xxx is a merge but no -m option was given.)</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>merge commitをrevertで取り消す時に、下記のエラーが出たことがないでしょうか？</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code>% git revert 504c0d33
error: commit 504c0d33e29dc4488bd1b4eb95574cd1f211fbcc is a merge but no -m option was given.
fatal: revert failed</code></pre>
</div>
<p>&nbsp;</p>
<div class="speech-wrap sb-id-11 sbs-flat sbp-l sbis-cb cf">
<div class="speech-person">
<figure class="speech-icon"><img fetchpriority="high" decoding="async" src="https://shungoblog.com/wp-content/uploads/2022/04/cropped-IMG_0718.jpg" alt="しゅんご" class="speech-icon-image" width="512" height="512" /></figure>
<div class="speech-name">しゅんご</div>
</div>
<div class="speech-balloon">
<p>この記事では、merge commitを取り消す方法をご紹介します！</p>
</div>
</div>
<p>&nbsp;</p>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">そもそもRevertとは？</a><ol><li><a href="#toc2" tabindex="0">特定のcommitを打ち消すためのcommitを作成するコマンド</a></li><li><a href="#toc3" tabindex="0">オプション「-m」なしでmerge commitをrevertできない</a></li></ol></li><li><a href="#toc4" tabindex="0">Merge commitを取り消す方法 (オプション「-m」を指定する)</a><ol><li><a href="#toc5" tabindex="0">方法1. git revert -m 1 (基本的にこちらを使う)</a></li><li><a href="#toc6" tabindex="0">方法2. git revert -m 2</a></li></ol></li><li><a href="#toc7" tabindex="0">git revertの オプション「-m」について</a><ol><li><a href="#toc8" tabindex="0">「-m」はmainline(メインライン)を表す</a></li><li><a href="#toc9" tabindex="0">merge commitには2つの親commitがある</a></li></ol></li><li><a href="#toc10" tabindex="0">番外編: PRをGithubの画面から取り消す場合</a></li><li><a href="#toc11" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">そもそもRevertとは？</span></h2>
<h3><span id="toc2">特定のcommitを打ち消すためのcommitを作成するコマンド</span></h3>
<p>revertはcommitを打ち消すためのコマンドです。</p>
<p>revertすると、指定したcommitを取り消す、commitが作成されます。</p>
<p>&nbsp;</p>
<p>例えば下記のようなcommit(<code>47b4348</code>)があるとします。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code>% git log --oneline
47b4348 commit-1</code></pre>
</div>
<p>このcommitを取り消したいときには、commitを指定してrevertします。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash">% git revert 47b4348</pre>
</div>
<p>すると、commit(<code>47b4348)</code>は取り消すための、新しいcommit(<code>566fa3e</code>)が追加されます。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code>% git log --oneline
566fa3e Revert "commit-1"
47b4348 commit-1</code></pre>
</div>
<p>これが通常のcommitをrevertするときの流れです。</p>
<p>&nbsp;</p>
<h3><span id="toc3">オプション「-m」なしでmerge commitをrevertできない</span></h3>
<p>merge commitをrevertするときは、通常のcommitのrevertとは異なります。</p>
<p>&nbsp;</p>
<p>例えば、下記のようなPRのmerge commitを取り消す場合で考えてみます。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash">% git log --oneline
504c0d33 Merge pull request #123 from xxxxxx</pre>
</div>
<p>通常のcommitと同じようにmerge commitを指定してrevertしても、</p>
<p><span class="marker-under-red"><strong>「-m を指定していないのでrevertに失敗した」</strong></span>というエラーが出ます</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code>% git revert 504c0d33
error: commit 504c0d33e29dc4488bd1b4eb95574cd1f211fbcc is a merge but no -m option was given.
fatal: revert failed</code></pre>
</div>
<div class="speech-wrap sb-id-11 sbs-flat sbp-l sbis-cb cf">
<div class="speech-person">
<figure class="speech-icon"><img fetchpriority="high" decoding="async" src="https://shungoblog.com/wp-content/uploads/2022/04/cropped-IMG_0718.jpg" alt="しゅんご" class="speech-icon-image" width="512" height="512" /></figure>
<div class="speech-name">しゅんご</div>
</div>
<div class="speech-balloon">
<p>merge commitをrevertする時には、</p>
<p><strong>オプション「-m 」</strong>を付けないと取り消すことができません。</p>
</div>
</div>
<p>&nbsp;</p>
<h2><span id="toc4">Merge commitを取り消す方法 (オプション「-m」を指定する)</span></h2>
<p>merge commitをrevertするには2つの方法があります。</p>
<p>例として、mainブランチにdevelopブランチをmergeしたcommitがあるとします。</p>
<p>&nbsp;</p>
<h3><span id="toc5">方法1. git revert -m 1 (基本的にこちらを使う)</span></h3>
<p>オプションで「-m 1」を指定すると、「mergeされたブランチ」の状態になります。</p>
<p><span class="marker-under-red"><strong>merge commitでrevertするときは、基本的にこちらを使用することがほとんどです。</strong></span></p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code>% git revert -m 1 &lt;merge commit id&gt;</code></pre>
</div>
<p>例で説明すると、</p>
<p>mergeしたdevelopのcommitを削除して、developブランチをmerge前のmainブランチと同じ状態に戻ります。</p>
<p>&nbsp;</p>
<h3><span id="toc6">方法2. git revert -m 2</span></h3>
<p>オプションで「-m 2」を指定すると、「mergeしたブランチ」の状態になります。</p>
<p>こちらはほとんど使うことがないと思います。(私は使ったことがありません。。。)</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code>% git revert -m 2 &lt;merge commit id&gt;</code></pre>
</div>
<p>例で説明すると、mainブランチがdevelopブランチと同じ状態になります。</p>
<p>&nbsp;</p>
<h2><span id="toc7">git revertの オプション「-m」について</span></h2>
<h3><span id="toc8">「-m」はmainline(メインライン)を表す</span></h3>
<p>revertコマンドのヘルプを見ると、</p>
<p><strong>「-m」はmainlineの省略であり、mainlineのparentを指定してください</strong>と書かれています。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code>% git revert -h

<options><commit-ish>...<subcommand>
    --quit                end revert or cherry-pick sequence
    --continue            resume revert or cherry-pick sequence
    --abort               cancel revert or cherry-pick sequence
    --skip                skip current commit and continue
    --cleanup <mode>      how to strip spaces and #comments from message
    -n, --no-commit       don't automatically commit
    -e, --edit            edit the commit message
    -s, --signoff         add Signed-off-by:
    -m, --mainline <parent-number>
                          select mainline parent
    --rerere-autoupdate   update the index with reused conflict resolution if possible</parent-number></mode></subcommand></commit-ish></options></code></pre>
</div>
<p>参考: <a rel="nofollow noopener external" target="_blank" href="https://git-scm.com/docs/git-revert.html">revert | Git</a></p>
<p>&nbsp;</p>
<h3><span id="toc9">merge commitには2つの親commitがある</span></h3>
<p>merge commitの詳細を見てみると、</p>
<p>「<code>Merge: e41ec146 7f0af4ef</code>」とあり、commitが2つあることがわかります。</p>
<p>「mergeされたブランチのcommit」と「mergeしたブランチのcommit」です。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-bash" data-lang="Bash"><code>% git show 504c0d33
commit 504c0d33e29dc4488bd1b4eb95574cd1f211fbcc (HEAD -&gt; main, origin/main)
Merge: e41ec146 7f0af4ef
Author: xxxxxxxxx
Date:   xxxxxxxxx</code></pre>
</div>
<p>左側のcommit(<code>e41ec146</code>)が「1」、右側のcommit(<code>7f0af4ef</code>)が「2」となっています。</p>
<p>&nbsp;</p>
<p>「-m」オプションでは「1」か「2」のどちらかを指定して、</p>
<p>どちらのブランチを正とするかを選択する必要があります。</p>
<p>&nbsp;</p>
<h2><span id="toc10">番外編: PRをGithubの画面から取り消す場合</span></h2>
<p>これまではコマンドでPRのmerge commitをrevertする方法を説明してきましたが、</p>
<p>Githubの画面からPRを取り消すことで、merge commitをrevertすることもできます。</p>
<p>参考までに添付しておきます！</p>
<p><a rel="nofollow noopener external" target="_blank" href="https://docs.github.com/ja/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/reverting-a-pull-request">Pull Request を打ち消す | Github</a></p>
<p>&nbsp;</p>
<h2><span id="toc11">まとめ</span></h2>
<p>下記のように、merge commitをrevertする方法は2つありますが、</p>
<p>「git revert -m 1」を使うことがほとんどだと思います。</p>
<p>&nbsp;</p>
<div class="scrollable-table"><table style="border-collapse: collapse; width: 100%; height: 123px;">
<tbody>
<tr style="height: 41px;">
<td style="width: 29.0598%; height: 41px;"><strong>コマンド</strong></td>
<td style="width: 37.6068%; height: 41px;"><strong>revert後</strong></td>
<td style="width: 33.3333%; height: 41px;"><strong>備考</strong></td>
</tr>
<tr style="height: 41px;">
<td style="width: 29.0598%; height: 41px;">git revert -m 1</td>
<td style="width: 37.6068%; height: 41px;">mergeされたブランチになる</td>
<td style="width: 33.3333%; height: 41px;">よく使用するのはこっち</td>
</tr>
<tr style="height: 41px;">
<td style="width: 29.0598%; height: 41px;">git revert -m 2</td>
<td style="width: 37.6068%; height: 41px;">mergeしたブランチになる</td>
<td style="width: 33.3333%; height: 41px;"></td>
</tr>
</tbody>
</table></div>
<p>&nbsp;</p>
<div class="speech-wrap sb-id-11 sbs-flat sbp-l sbis-cb cf">
<div class="speech-person">
<figure class="speech-icon"><img fetchpriority="high" decoding="async" src="https://shungoblog.com/wp-content/uploads/2022/04/cropped-IMG_0718.jpg" alt="しゅんご" class="speech-icon-image" width="512" height="512" /></figure>
<div class="speech-name">しゅんご</div>
</div>
<div class="speech-balloon">
<p>merge commitをrevertする方法がわからない方の</p>
<p>参考になれば幸いです！</p>
</div>
</div><p>The post <a href="https://shungoblog.com/programming/git-revert-merge-commit.html">【Git】Merge commitをrevertする方法 (error: commit xxx is a merge but no -m option was given.)</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://shungoblog.com/programming/git-revert-merge-commit.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Git】PRでスカッシュマージ(squash merge)する方法</title>
		<link>https://shungoblog.com/programming/git-squash-merge.html</link>
					<comments>https://shungoblog.com/programming/git-squash-merge.html#respond</comments>
		
		<dc:creator><![CDATA[しゅんご]]></dc:creator>
		<pubDate>Thu, 11 Aug 2022 07:46:23 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[git]]></category>
		<guid isPermaLink="false">https://shungoblog.com/?p=1458</guid>

					<description><![CDATA[<p>GithubのPRをマージする際には、「Create a merge commit」「Squash and merge」「Rebase and merge」の3つのオプションを選択できます。 この記事では複数コミットをま [&#8230;]</p>
<p>The post <a href="https://shungoblog.com/programming/git-squash-merge.html">【Git】PRでスカッシュマージ(squash merge)する方法</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>GithubのPRをマージする際には、「Create a merge commit」「Squash and merge」「Rebase and merge」の3つのオプションを選択できます。</p>
<p>この記事では複数コミットをまとめてコミットする「Squash merge」についてご紹介します。</p>
<p>&nbsp;</p>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スカッシュマージ(squash merge)とは</a></li><li><a href="#toc2" tabindex="0">PRをスカッシュマージ(squash merge)する方法</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">スカッシュマージ(squash merge)とは</span></h2>
<p>マージする際に複数あるコミットをまとめてコミットすることををスカッシュマージと言います。</p>
<p>作業ブランチでは差分を見やすいように、細かくコミットすることが多いですが、</p>
<p>mainブランチにマージする時には、まとめてコミットしたい！という際によく使用します。</p>
<p>&nbsp;</p>
<p>チーム開発をしていると<strong>各エンジニアがそれぞれがブランチ切ってマージしてmasterブランチがかなり見づらくなります。</strong></p>
<p>これを防ぐために、チームによってはPRのマージは「Squash Merge」を採用しているところもあります。</p>
<h2><span id="toc2">PRをスカッシュマージ(squash merge)する方法</span></h2>
<p>GithubでPRをスカッシュマージする方法をご紹介します。</p>
<p>例として、下記のように2コミット(squash merge1, squash merge2)の差分があるPRを作成しております。</p>
<p>&nbsp;</p>
<p><img decoding="async" src="https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.07.31-300x243.jpg" alt="squash-merge-1" width="717" height="580" class=" wp-image-1459 aligncenter" srcset="https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.07.31-300x243.jpg 300w, https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.07.31-1024x830.jpg 1024w, https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.07.31.jpg 1672w" sizes="(max-width: 717px) 100vw, 717px" /></p>
<p>マージする際にオプションが選択でき、ここでスカッシュマージ(Squash and Merge)を選択します。</p>
<p><img decoding="async" src="https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.26.47-300x255.png" alt="squash-merge-2" width="433" height="368" class="wp-image-1463 aligncenter" srcset="https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.26.47-300x255.png 300w, https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.26.47.png 592w" sizes="(max-width: 433px) 100vw, 433px" /></p>
<p>スカッシュマージのオプションを選択した状態で、「Merge pull request」を押します。</p>
<p>するとコミットメッセージを編集する画面になります。</p>
<p>デフォルトでは、コミット数分のコミットメッセージが入力されています。</p>
<p>(今回の例でいうとsquash merge1, squash merge2)</p>
<p><img loading="lazy" decoding="async" src="https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.27.42-300x76.png" alt="squash-merge-3" width="588" height="149" class="wp-image-1464 aligncenter" srcset="https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.27.42-300x76.png 300w, https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.27.42-1024x259.png 1024w, https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.27.42-768x195.png 768w, https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.27.42.png 1532w" sizes="(max-width: 588px) 100vw, 588px" /></p>
<p>コミットメッセージを変更したい場合は、上の欄のテキストを変更します。(squash mergeに変更)</p>
<p><img loading="lazy" decoding="async" src="https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.38.02-300x76.png" alt="squash-merge-4" width="556" height="141" class="wp-image-1467 aligncenter" srcset="https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.38.02-300x76.png 300w, https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.38.02-1024x261.png 1024w, https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.38.02-768x196.png 768w, https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.38.02.png 1532w" sizes="(max-width: 556px) 100vw, 556px" /></p>
<p>マージされたmasterブランチのコミットを見ると、一つにコミットがまとまっていることが確認できます。</p>
<p><img loading="lazy" decoding="async" src="https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.39.56-300x41.png" alt="squash-merge-5" width="783" height="107" class="wp-image-1468 aligncenter" srcset="https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.39.56-300x41.png 300w, https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.39.56-1024x141.png 1024w, https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.39.56-768x106.png 768w, https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.39.56-1536x212.png 1536w, https://shungoblog.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-11-16.39.56.png 1920w" sizes="(max-width: 783px) 100vw, 783px" /></p><p>The post <a href="https://shungoblog.com/programming/git-squash-merge.html">【Git】PRでスカッシュマージ(squash merge)する方法</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://shungoblog.com/programming/git-squash-merge.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Git】リモートブランチをローカルにcheckoutする方法</title>
		<link>https://shungoblog.com/programming/git-remote-branch-checkout.html</link>
					<comments>https://shungoblog.com/programming/git-remote-branch-checkout.html#respond</comments>
		
		<dc:creator><![CDATA[しゅんご]]></dc:creator>
		<pubDate>Sun, 31 Jul 2022 00:58:17 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[エンジニア]]></category>
		<guid isPermaLink="false">https://shungoblog.com/?p=1453</guid>

					<description><![CDATA[<p>チーム開発していると、ローカルにないリモートブランチにcheckoutするときが多くあります。 そのときの手順をご紹介します。 目次 リモートブランチをローカルにcheckoutする方法リモートからfetchするローカル [&#8230;]</p>
<p>The post <a href="https://shungoblog.com/programming/git-remote-branch-checkout.html">【Git】リモートブランチをローカルにcheckoutする方法</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>チーム開発していると、ローカルにないリモートブランチにcheckoutするときが多くあります。</p>
<p>そのときの手順をご紹介します。</p>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">リモートブランチをローカルにcheckoutする方法</a><ol><li><a href="#toc2" tabindex="0">リモートからfetchする</a></li><li><a href="#toc3" tabindex="0">ローカルにcheckoutする</a></li></ol></li></ol>
    </div>
  </div>

<h2><span id="toc1">リモートブランチをローカルにcheckoutする方法</span></h2>
<h3><span id="toc2">リモートからfetchする</span></h3>
<p><span>まずはfetchして、最新の状態を取得します。</span></p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-git" data-lang="Git"><code>% git fetch</code></pre>
</div>
<p>※ 下記コマンドでリモートブランチ一覧を確認できます。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-git" data-lang="Git"><code>% git branch -r</code></pre>
</div>
<p>&nbsp;</p>
<h3><span id="toc3">ローカルにcheckoutする</span></h3>
<p>下記コマンドでリモートのブランチをローカルにcheckoutできます。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-git" data-lang="Git"><code>% git checkout -b &lt;<span>ローカルでの表示ブランチ名</span>&gt; origin/&lt;リモートの<span>ブランチ名</span>&gt;</code></pre>
</div>
<p>ローカルでのブランチ名は任意ですが、リモートと同じ名前にするのが自然です。</p>
<p>例えば、リモートにあるdevelopブランチをローカルにcheckoutする場合は、下記のコマンドになります。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-git" data-lang="Git"><code>% git checkout -b develop origin/develop</code></pre>
</div><p>The post <a href="https://shungoblog.com/programming/git-remote-branch-checkout.html">【Git】リモートブランチをローカルにcheckoutする方法</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://shungoblog.com/programming/git-remote-branch-checkout.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Gitで作業ブランチの派生元を確認する方法</title>
		<link>https://shungoblog.com/engineer/git-show-branch.html</link>
					<comments>https://shungoblog.com/engineer/git-show-branch.html#respond</comments>
		
		<dc:creator><![CDATA[しゅんご]]></dc:creator>
		<pubDate>Thu, 28 Jul 2022 05:56:14 +0000</pubDate>
				<category><![CDATA[エンジニア]]></category>
		<category><![CDATA[git]]></category>
		<guid isPermaLink="false">https://shungoblog.com/?p=1438</guid>

					<description><![CDATA[<p>派生元を確認するコマンド 下記のコマンドをターミナルで実行すると派生元ブランチが表示されます。 git show-branch \ &#124; grep '*' \ &#124; grep -v "$(git rev-parse --ab [&#8230;]</p>
<p>The post <a href="https://shungoblog.com/engineer/git-show-branch.html">Gitで作業ブランチの派生元を確認する方法</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2>派生元を確認するコマンド</h2>
<p>下記のコマンドをターミナルで実行すると派生元ブランチが表示されます。</p>
<pre><span>git show-branch \<span class="s1">
</span>| <span class="nb">grep</span> <span class="s1">'*' \
</span>| <span class="nb">grep</span> <span class="nt">-v</span> <span class="s2">"</span><span class="si">$(</span>git rev-parse <span class="nt">--abbrev-ref</span> HEAD<span class="si">)</span><span class="s2">" \
</span>| <span class="nb">head</span> <span class="nt">-1 \
</span>| <span class="nb">awk</span> <span class="nt">-F</span><span class="s1">'[]~^[]'</span> <span class="s1">'{print $2}'</span></span></pre><p>The post <a href="https://shungoblog.com/engineer/git-show-branch.html">Gitで作業ブランチの派生元を確認する方法</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://shungoblog.com/engineer/git-show-branch.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Gitエイリアスのおすすめ設定</title>
		<link>https://shungoblog.com/programming/git-alias.html</link>
					<comments>https://shungoblog.com/programming/git-alias.html#respond</comments>
		
		<dc:creator><![CDATA[しゅんご]]></dc:creator>
		<pubDate>Mon, 25 Jul 2022 01:08:54 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[エンジニア]]></category>
		<guid isPermaLink="false">https://shungoblog.com/?p=307</guid>

					<description><![CDATA[<p>エイリアスとはコマンドのショートカットのことを意味します。 例えば、git addというコマンドをエイリアスにすることで、gaと短くすることができます。 省略するコマンドは自由に設定できるので、よく使うコマンドを設定して [&#8230;]</p>
<p>The post <a href="https://shungoblog.com/programming/git-alias.html">Gitエイリアスのおすすめ設定</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>エイリアスとはコマンドのショートカットのことを意味します。</p>
<p>例えば、<code>git add</code>というコマンドをエイリアスにすることで、<code>ga</code>と短くすることができます。</p>
<p>省略するコマンドは自由に設定できるので、よく使うコマンドを設定しておくと開発速度がかなり上がります。</p>
<p>この記事ではエイリアスの設定方法とおすすめの設定をご紹介します。</p>
<p>&nbsp;</p>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">.zshrcの編集方法</a><ol><li><a href="#toc2" tabindex="0">Finderからファイルを開く</a></li><li><a href="#toc3" tabindex="0">vimで編集する</a></li></ol></li><li><a href="#toc4" tabindex="0">おすすめのGitエイリアス設定</a><ol><li><a href="#toc5" tabindex="0">エイリアス設定 (コピペOK!)</a></li><li><a href="#toc6" tabindex="0">エイリアスに設定すべきでないコマンド</a></li></ol></li></ol>
    </div>
  </div>

<h2><span id="toc1">.zshrcの編集方法</span></h2>
<p>エイリアスの設定はホームディレクトリにある<code>~/.zshrc</code>記載します。</p>
<p>.zshrcの編集方法は2つあります。</p>
<h3><span id="toc2">Finderからファイルを開く</span></h3>
<p>まずはFinderを開きます。</p>
<p>~/.zshrcは隠しファイルなので、表示されていない場合は<b>「command」＋「shift」＋「.」</b>のコマンドで表示することができます。</p>
<div class="scrollable-table"><table style="border-collapse: collapse; width: 100%; height: 382px;">
<tbody>
<tr style="height: 41px;">
<td style="width: 50%; height: 41px;">隠しファイルの表示なし</td>
<td style="width: 50%; height: 41px;">隠しファイルの表示あり</td>
</tr>
<tr style="height: 341px;">
<td style="width: 50%; height: 341px;"><img loading="lazy" decoding="async" src="https://shungoblog.com/wp-content/uploads/2022/07/スクリーンショット-2022-07-25-9.46.32-248x300.png" alt="alias_2" width="248" height="300" class="size-medium wp-image-1380 aligncenter" srcset="https://shungoblog.com/wp-content/uploads/2022/07/スクリーンショット-2022-07-25-9.46.32-248x300.png 248w, https://shungoblog.com/wp-content/uploads/2022/07/スクリーンショット-2022-07-25-9.46.32-768x929.png 768w, https://shungoblog.com/wp-content/uploads/2022/07/スクリーンショット-2022-07-25-9.46.32.png 818w" sizes="(max-width: 248px) 100vw, 248px" /></td>
<td style="width: 50%; height: 341px;"><img loading="lazy" decoding="async" src="https://shungoblog.com/wp-content/uploads/2022/07/スクリーンショット-2022-07-25-9.48.09-248x300.png" alt="alias_1" width="248" height="300" class="size-medium wp-image-1381 aligncenter" srcset="https://shungoblog.com/wp-content/uploads/2022/07/スクリーンショット-2022-07-25-9.48.09-248x300.png 248w, https://shungoblog.com/wp-content/uploads/2022/07/スクリーンショット-2022-07-25-9.48.09-768x929.png 768w, https://shungoblog.com/wp-content/uploads/2022/07/スクリーンショット-2022-07-25-9.48.09.png 818w" sizes="(max-width: 248px) 100vw, 248px" /></td>
</tr>
</tbody>
</table></div>
<p>&nbsp;</p>
<p>.zshrcをクリックすることでファイルが開き編集できるようになります。</p>
<p><img loading="lazy" decoding="async" src="https://shungoblog.com/wp-content/uploads/2022/07/スクリーンショット-2022-07-25-9.54.09-300x163.png" alt="alias_3" width="429" height="233" class="wp-image-1383 aligncenter" srcset="https://shungoblog.com/wp-content/uploads/2022/07/スクリーンショット-2022-07-25-9.54.09-300x163.png 300w, https://shungoblog.com/wp-content/uploads/2022/07/スクリーンショット-2022-07-25-9.54.09-768x417.png 768w, https://shungoblog.com/wp-content/uploads/2022/07/スクリーンショット-2022-07-25-9.54.09.png 892w" sizes="(max-width: 429px) 100vw, 429px" /></p>
<h3><span id="toc3">vimで編集する</span></h3>
<p>ターミナルからvimで編集することもできます。</p>
<p>下記のコマンドで.zshrcを編集できるようになります。</p>
<pre>$ vim .zshrc</pre>
<p>編集したら<code>:wq</code>でファイルを保存してからvimを抜けるましょう。</p>
<p>&nbsp;</p>
<h2><span id="toc4">おすすめのGitエイリアス設定</span></h2>
<h3><span id="toc5">エイリアス設定 (コピペOK!)</span></h3>
<p>以下は私が実際に使用しているエイリアス一覧です。</p>
<p>zshrcにコピペで使用できます。</p>
<pre>alias his='history -100'
alias hisg='history -1000 | grep'
alias ga='git add'
alias gd='git diff'
alias gs='git status'
alias gb='git branch'
alias gch='git checkout'
alias gco='git commit -m'
alias greco='git commit --amend --no-edit'
alias gsu='git stash -u'
alias gsp='git stash pop'
alias glog='git log --oneline'
alias greset='git reset --soft HEAD\^'
alias gcp='git cherry-pick'</pre>
<p>&nbsp;</p>
<h3><span id="toc6">エイリアスに設定すべきでないコマンド</span></h3>
<p>リモートリポジトリが絡むコマンドは、安全重視でエイリアスは使わないことをおすすめします。</p>
<p>例えば<code>git push</code>を<code>gp</code>と設定していて、他のコマンドと間違えて<code>gp</code>とすると意図せずpushすることになってしまいます。</p>
<ul>
<li>git push</li>
<li>git pull</li>
<li>git fetch</li>
</ul><p>The post <a href="https://shungoblog.com/programming/git-alias.html">Gitエイリアスのおすすめ設定</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://shungoblog.com/programming/git-alias.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Git】マージ済のローカルブランチを一掃するコマンド</title>
		<link>https://shungoblog.com/programming/git-branch-delete.html</link>
					<comments>https://shungoblog.com/programming/git-branch-delete.html#respond</comments>
		
		<dc:creator><![CDATA[しゅんご]]></dc:creator>
		<pubDate>Wed, 20 Jul 2022 23:29:11 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[エンジニア]]></category>
		<guid isPermaLink="false">https://shungoblog.com/?p=766</guid>

					<description><![CDATA[<p>マージ済のローカルブランチを一掃するgitのコマンドについてご紹介します。 流れとしては大きく3つあります。 マージ済ブランチ一覧表示 特定のブランチを除外 ブランチ削除 それぞれ順番に説明しながら、ローカルブランチを一 [&#8230;]</p>
<p>The post <a href="https://shungoblog.com/programming/git-branch-delete.html">【Git】マージ済のローカルブランチを一掃するコマンド</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>マージ済のローカルブランチを一掃するgitのコマンドについてご紹介します。</p>
<p>流れとしては大きく3つあります。</p>
<ul>
<li>マージ済ブランチ一覧表示</li>
<li>特定のブランチを除外</li>
<li>ブランチ削除</li>
</ul>
<p>それぞれ順番に説明しながら、ローカルブランチを一掃するコマンドをご紹介します。</p>

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-12" checked><label class="toc-title" for="toc-checkbox-12">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">マージ済のローカルブランチを一掃するコマンド</a></li><li><a href="#toc2" tabindex="0">各コマンドの解説</a><ol><li><a href="#toc3" tabindex="0">git branch</a></li><li><a href="#toc4" tabindex="0">git branch &#8211;merged</a></li><li><a href="#toc5" tabindex="0">git branch &#8211;merged | grep -v &#8220;master&#8221;</a></li><li><a href="#toc6" tabindex="0">git branch &#8211;merged | grep -v &#8220;master\|develop&#8221;</a></li><li><a href="#toc7" tabindex="0">git branch &#8211;merged | grep -v &#8220;master\|develop&#8221; | xargs git branch -d</a></li></ol></li></ol>
    </div>
  </div>

<h2><span id="toc1">マージ済のローカルブランチを一掃するコマンド</span></h2>
<p>※最初にmasterブランチにcheckoutしてpullしておきましょう。</p>
<p>マージ済のローカルブランチを一掃するコマンド</p>
<pre>git branch --merged | xargs git branch -d</pre>
<p>&nbsp;</p>
<p>特定ブランチ(master)以外のマージ済のローカルブランチを一掃するコマンド</p>
<pre>git branch --merged | grep -v "master" | xargs git branch -d</pre>
<p>&nbsp;</p>
<p>複数の特定ブランチ(master/develop)以外のマージ済のローカルブランチを一掃するコマンド</p>
<pre>git branch --merged | grep -v "main\|develop" | xargs git branch -d</pre>
<p>&nbsp;</p>
<h2><span id="toc2">各コマンドの解説</span></h2>
<p>確認用として下記のブランチを用意しています。</p>
<pre>master
develop
test1 -&gt; マージ済
test2 -&gt; マージ済
test3 -&gt; マージしていない</pre>
<h3><span id="toc3">git branch</span></h3>
<p>ローカルのブランチ一覧を表示します。</p>
<pre>% git branch master
* master
develop
test1
test2
test3</pre>
<p>&nbsp;</p>
<h3><span id="toc4">git branch &#8211;merged</span></h3>
<p><span class="marker-under-red"><strong>マージ済</strong></span>のローカルのブランチ一覧を表示します。</p>
<pre>% git branch --merged
* master
develop
test1
test2</pre>
<p>&nbsp;</p>
<h3><span id="toc5">git branch &#8211;merged | grep -v &#8220;master&#8221;</span></h3>
<p><span class="marker-under-red"><strong>「master」ブランチ以外</strong></span>の<span class="marker-under-red"><strong>マージ済</strong></span>のローカルのブランチ一覧を表示します。</p>
<pre>% git branch --merged | grep -v "master"
develop
test1
test2</pre>
<p>&nbsp;</p>
<h3><span id="toc6">git branch &#8211;merged | grep -v &#8220;master\|develop&#8221;</span></h3>
<p>複数の特定ブランチを除外する場合です。</p>
<p><span class="marker-under-red"><strong>「master/develop」ブランチ以外</strong></span>の<span class="marker-under-red"><strong>マージ済</strong></span>のローカルのブランチ一覧を表示します。</p>
<pre>% git branch --merged | grep -v "master\|develop"
test1
test2</pre>
<p>&nbsp;</p>
<h3><span id="toc7">git branch &#8211;merged | grep -v &#8220;master\|develop&#8221; | xargs git branch -d</span></h3>
<p>これまで表示していたブランチを削除します。</p>
<p>つまり、<span class="marker-under-red"><strong>「master/develop」ブランチ以外</strong></span>の<span class="marker-under-red"><strong>マージ済</strong></span>のローカルのブランチである<strong>「test1」「test2」</strong>を削除します。</p>
<pre>% git branch --merged | grep -v "master\|develop" | xargs git branch -d master
Deleted branch test1 (was bdbca5c).
Deleted branch test2 (was 1bd56a9).</pre>
<p>&nbsp;</p>
<p>ブランチ一覧を表示すると<strong>「test1」「test2」</strong>が削除されていることが確認できます。</p>
<pre>% git branch
* master
develop
test3</pre><p>The post <a href="https://shungoblog.com/programming/git-branch-delete.html">【Git】マージ済のローカルブランチを一掃するコマンド</a> first appeared on <a href="https://shungoblog.com">shungo blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://shungoblog.com/programming/git-branch-delete.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
