- 投稿日:2020-07-01T23:24:28+09:00
過去のコミットにタグを付けてgithubに反映させる
アプリのリリースのたびにリリースタグを付けています.
タグをつけ忘れたんですが, 過去のコミットIDに対してタグを付けて, タグ情報だけPUSHできるそうなので方法をまとめます.
1. コミットに対してタグを付ける
タグを付けるコマンドはこちら
git tag tab_name commit_idgithubからタグをつけたいコミットを探して, コミットIDをコピーしましょう〜
2. タグをPUSHしてgithubにも反映させる
タグつけただけだとgithubでは見れないので, タグをPUSHする必要がある模様です.
以下でできるそうです.
git push origin tag__nameめちゃ簡単でした.
- 投稿日:2020-07-01T21:32:26+09:00
【Git】cherry-pickで解決?
cherry-pick とは
ブランチ間で特定のコミットをマージしたいが、全部はマージしたくない場合
git cherry-pick
が役に立ちます。
このコマンドはコミットをつまみ食いして現在のブランチに追加します。例えば上図のような場面でブランチaにブランチbのコミットA,Bのみを取り込みたいとします。
この時、git checkout a git merge bとしてしまうと、ブランチbの全てのコミットを取り込むことになります。
cherry-pickを使えば、以下のようにしてブランチbの特定のコミットをブランチaに取り込むことができます。git checkout a git cherry-pick Aのコミットid Bのコミットid実際に使用した場面
cherry-pickを使用した具体的な場面について参考程度に話します。
開発の際に以下のようなフローを取っていました。
ことの発端は、開発を終えたブランチをpushしてstagingにプルリクエストを作成した際にコンフリクトを起こしたことです。
GitHub上で該当箇所を確認すると、1行修正すれば解消されるものであったため、GitHub上で直接コンフリクトを解消して、プルリクエストを送り直すことができる機能を使用しました。
その後、検証でバグが見つかったため、再度開発環境でコードを修正し、pushしたところリモートとローカルでコミットに差異があるためpullしてからpushするよう怒られます。
コンフリクトした際にGitHub上でコードを修正したことが原因なので、ここは指示に従いpullしてmergeしました。しかし、ここでmergeした内容を確認してみると、自分がGitHub上で修正したファイル以外のファイルに関する変更が大量に含まれていることが発覚しました。
コミットログを辿ってみると、どうやらGitHub上でコンフリクトを修正した際に、一度stagingをmergeして、競合箇所を編集しプルリクエストを作成する
という処理が行われていたようです。
GitHub上ではGUIで操作を行っていたため不注意な私はポチポチ押してしまい気づかない間にstagingをmergeしてしまっていました。stagingをmergeすると何が困るかというと、stagingで検証中であった別のブランチでの変更を大量に取り込んでしまい、開発の際に思わぬバグが発生する可能性があります。
この時、開発をしていたブランチのコミットログは自分のコミットと他人のコミットが混在して以下の図のようになっていました。
git revert
やら何やらをして元の状態に戻すことも考えたのですが、コミットログが荒れそうだったため(実際にはもっと混在していました)必要なコミットだけピックアップしてしまいたい...
ここでcherry-pickの出番です。まずは開発環境でmasterからブランチを切り直します。
git checkout master git checkout -b develop-hoge-new次に問題のブランチ(ここではdevelop-hogeとします。)に移動してコミットログを確認します。
git checkout develop-hoge git log必要なコミットのidを確認して、新しいブランチでcherry-pickします。
git checkout develop-hoge-new git cherry-pick Aのコミットid Bのコミットid Eのコミットidとするとdevelop-hoge-newブランチに必要なコミットのみを取り込むことができます。
あとはpushし直すだけです。
コンフリクトした箇所については競合した相手のブランチがリリースされた後にローカルのmasterブランチにてmasterをpullしてdevelop-hoge-newにmergeして解消しましょう。
参考文献
- 投稿日:2020-07-01T21:23:58+09:00
WSL2を使ってWindows10Homeでも快適なDocker環境を構築(Git・エディタも)
概要
wsl2というwindows上でLinux動作できる環境を利用してwin10Homeでも楽にdocker環境の構築を行いました。
IPアドレスなどVirtualBox+Vagrantで環境構築する場合は別途設定が必要だったのですが
wsl2はホストマシンと同じなので楽でした手順
OSのアップデート
wsl2は下記の要件を満たしていないと利用できないのでアップデートを行います。
バージョン 2004、ビルド 19041 以上に更新された Windows 10 を実行している。
バージョン確認は
windowsロゴ + R
でプログラム実行画面 →winver
で実行
自動更新だと最新の状態とでてしまうので手動での更新が必要です!wslの有効化 & アップデート
いきなりwsl2を入れるということではなく
wslを有効化してwsl2にバージョンアップするということみたいです管理者としてPowerShell起動
"Linux 用 Windows サブシステム" オプション機能を有効化 → wsl有効化
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart"仮想マシン プラットフォーム" オプション機能 → wsl2で使用する機能の有効化
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestartここで再起動をします
再度PowerShellを管理者で開いてwslの既定バージョンを2にする
wsl --set-default-version 2WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。詳細については https://aka.ms/wsl2kernel を参照してください
このメッセージがでる場合は https://aka.ms/wsl2kernel からダウンロードしてインストールしてください
再度上記のバージョン設定コマンド実行
WSL2との主な違いは~
と出たら大丈夫です!
wsl -l -vでバージョン確認できます
Linuxディストリビューションのインストール
自分はubuntuにしたので以下はubuntu入れた場合です!
Microsoft Storeを開いてubuntuをインストール
Microsoftアカウントが必要です!インストール後起動すると初回のみユーザー名とパスワード求められるので設定
これでwsl2の基本設定は完了
mkdir workspace
でworkspaceフォルダ作成しておく
pwd
実行で下記のパスになってることを確認
/home/{ユーザー名}/workspaceここの中でGitのリポジトリなど管理します!
エディタ
他のエディタは不明ですがvscodeで作業するものと想定します!
- windowsにvscodeインストール(普段エディタがvscodeの場合はスキップ)
- 拡張機能「Remote-WSL」を入れる
- windowsからubuntu起動、作業ディレクトリで
code .
を実行するとubuntu用のエディタが起動されるGitLab(GitHubもほぼ同様だと思います)
cd ~/.ssh
鍵発行(パスワード不要の場合は3回enter)
ssh-keygen -t rsa -b 4096 -C {ユーザー名}@example.comクリップボードに公開鍵の内容をコピー
clip < ~/.ssh/id_rsa.pubGitLabログイン
1. 右上のアカウント → settings → SSH Keys
2. クリップボードの内容貼り付け、タイトルはwsl2とかで大丈夫だと思います
3. Add keyubuntuのコンソールに戻って
cd ~/.ssh
vi config
で設定ファイル作成接続情報記載する
~/.ssh/configHost gitlab HostName {Host名} User {ユーザー名} IdentityFile ~/.ssh/id_rsa Port 22 TCPKeepAlive yes IdentitiesOnly yesこれでGitLabのリポジトリをssh接続でcloneできると思います!
Docker
公式サイトからインストール
※インストール途中の Configuration は Enable WSL 2 Windows Features のチェックを外さないようにしてください。これでubuntuでdockerが(docker-composeも)使えるようになりました!
- 投稿日:2020-07-01T18:14:49+09:00
Gitとは?GitHubとは?さらっとイメージを理解するためのまとめ
Gitとは?
gitとは、ソースコードを始めとするファイルの変更履歴を管理するためのシステム。
変更履歴を記録するシステムのことをバージョン管理システムと言う。フォルダに日付をつけて管理してったりすると訳わかんなくなったりするので、gitを使って管理してくのが良いみたい。
なぜGitを使うの?
ファイルの変更履歴を管理するため
何か問題があったときに過去のファイルに戻れるようにしておくため。GitHubとは?
- gitの仕組みを利用したwebサービスのこと。
- gitの機能に対してチーム開発に便利な機能と付け加え、gitにおけるリモートリポジトリの役割も担っている。
- github上にチームで共有のプロダクト(ソースコード)を配置し、開発者はgithub上からソースコードをコピーしたり、ソースコードをgithub上のリポジトリに反映させることが出来る
世界中にコードを公開することでいろいろな方からレビューもいただけることもメリット
GitHub Desktopとは?
github desktopとは、gitを扱うためのGUIツールの一つ
github desktopは、githubが提供しているGUIツール本来ターミナルで実施するGitの作業をGUIを用いて直感的に操作できる
リポジトリとは?
リポジトリとは、Gitで変更履歴を管理しておくための入れ物。
このリポジトリにファイルやディレクトリの変更履歴を記録しておく。ローカルリポジトリとは?
自分のPC上(ローカル環境)に置くリポジトリのこと。
自分のPC上にあるファイルやディレクトリのバージョン管理を行いたいときに使う。リモートリポジトリとは?
外部のサーバーなどのネットワーク上に置くリポジトリのこと。GitHubはこちらのイメージ。
リモートリポジトリのメリットは?
ネットワーク上に置くことで、複数人で管理下のファイルやディレクトリを共有することが出来る。
ローカル環境下で問題が起こったとしても、またリモートリポジトリからダウンロードを行うことで元に戻すことが出来るクローンとは?
リモートリポジトリの内容をまるまる複製して別のマシンのローカルリポジトリを作成すること。
コミットとは?
ディレクトリやファイルの状態を記録するための操作。
コミットすることで現在の状態が、日時や変更を加えた人の情報を含めて一緒に保存することが出来る。インデックスとは?
バージョンを記録するためにファイルを一時的に登録する場所。同じバージョンとして記録したい編集についてはまとめてインデックスに追加し、このタイミングでは記録したくない編集についてはインデックスに追加しない。
インデックスに追加したものをコミットすることで変更が保存される。変更してはコミットして、変更してはコミットしてだと何度もGitの操作が必要となり非効率ということで生まれた考え方。コミットメッセージって何故書くの?
コミットする際に添えるメッセージのことをコミットメッセージという。
そのコミットでどのような作業をしたのかということを記録しておくために記述する。コミット時に注意すべきこと
なるべく細かく行う。1機能1コミットがベター。ファイルをもとに戻すことになった場合、コミットごとでしか戻せないから。
プッシュとは?
ローカルリポジトリで加えた変更とリモートリポジトリに同期させること。
ローカルでコミットが終わり、リモートに変更を同期させたい場合には必ずプッシュを行う必要がある。ブランチとは?
- リポジトリで管理をしているプロジェクトの履歴の1つ。
- 自分の作業をしている場所のこと。
- ブランチ同士は独立しているため、それぞれのブランチが干渉していない。
- 開発者ごとに担当する機能を明確に分けることが出来る
- 完成途中や問題のあるソースコードをリリースしないで済む。
- 複数人で開発する時にメインのアプリを枝分かれ(複製)させてそれぞれで開発し、終わったらメインへ結合(マージ)する。
プルとは?
リモートリポジトリの変更履歴をローカルリポジトリに反映させる操作のこと。
プルリクエスト(プルリク)とは?
作成したブランチをmasterブランチにマージをするときの確認作業のこと。
1つのブランチ作業においてコミュニケーションが取れる掲示板のようなもの
そのコードに問題が無いかどうかを他の開発者や上司に確認を行うためにプルリクエストを見て貰う。マージとは?
ブランチとブランチを結合すること。
LGTMとは?
「コードに問題が無いので、マージをして大丈夫ですよ!」ということ
デプロイとは?
ソースコードを本番環境に設置し、稼働させること
コンフリクトとは?
複数の人が同じ箇所を編集してしまい、変更箇所を自動では判断できすにマージできなくなること。
Github Flowとは?
開発フローのルール的なもの
- masterブランチは常にデプロイ可能である
- 作業用ブランチをmasterから作成する
- 作業用ブランチを定期的にプッシュする
- プルリクエストを活用する
- プルリクエストが承認されたらmasterへマージする
- masterへのマージが完了したら直ちにデプロイを行う
- 投稿日:2020-07-01T15:42:09+09:00
Git config
同じサーバでほかの開発者が別ディレクトリで開発をしている場合のgitの設定についてまとめる。
global
はhome
ディレクトリ内にあるユーザディレクトリ全体に反映させる対象リポジトリだけに設定を反映させたい場合は、以下の通り。
git config --local user.name git config --local user.email以上
- 投稿日:2020-07-01T15:42:09+09:00
チームで同じサーバーを使っているときにGit configで気を付けること。
同じサーバでほかの開発者が別ディレクトリで開発をしている場合のgitの設定についてまとめる。
global
はhome
ディレクトリ内にあるユーザディレクトリ全体に反映させる対象リポジトリだけに設定を反映させたい場合は、以下の通り。
git config --local user.name git config --local user.email以上
- 投稿日:2020-07-01T14:44:21+09:00
【1ヶ月で学ぶ!】Back-end Developperへの道 #05日目 : Version Control Systemsとは
下記の企画の4日目です。
【1ヶ月で学ぶ!】Back-end Developperへの道 #0:導入下記を参考に項目を作成しました。
Roadmap to becoming a web developer in 2020Version Control Systemsとは
Basic Usage of Git
- プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システム
- 2005年に公開され、現在はGoogle所属の日本人濱野純によってメンテナンスされている。
- 動作速度に重点が置かれており、主にC言語で作成されている。
Repo hosting services
GitHub
- ソフトウェア開発のプラットフォームであり、ソースコードをホスティングする
- ソースコードをホスティングすることで複数人のソフトウエア開発者と協働してコードをレビューしたり、プロジェクトを管理しつつ開発を行うことができる。
- SNS機能をもち、feeds、followersとして提供されている
GitLab
- CI/CDやdockerへの対応など、Githubを先に行くような機能追加が積極的
- GitLab CI/CDでは、テスト・ビルド・デプロイを自動化することができる
- DockerコンテナイメージをGitLabの継続的統合ツールに統合することができる
Bitbucket
- プライベートリポジトリを無制限に持てる無料アカウントを提供している
- Djangoを用いて開発されている
参照
Git - ウィキペディア
GitHub - ウィキペディア
GitLab - ウィキペディア
Bitbucket - ウィキペディア
- 投稿日:2020-07-01T14:24:29+09:00
Git コマンド一覧
リポジトリ
リモートリポジトリを登録
git remote add origin URLリモートリポジトリURL確認
git remote -vブランチ
ローカルブランチの一覧
git branchリモートブランチ一覧
git branch --remoteローカル・リモートブランチ一覧
git branch --allブランチ作成
git branch ブランチ名ブランチを新規作成&チェックアウト
git checkout -b ブランチ名リモートにブランチを登録
git push -u origin ブランチ名対象ブランチにチェックアウト
git checkout ブランチ名マージしたブランチ削除
git branch --deleteマージしたかどうかに関わらず削除
git branch -D ブランチ名リモートブランチ削除
git push --delete origin ブランチ名ワーキングツリーの状態確認
普通に表示
git status短く表示
git status -sステージング(インデックスにコミットするファイルを登録)
指定したファイルを登録
git add ファイル名現在のディレクトリのファイルすべてを登録
git add .スタッシュ
待避にコメントをつける
git stash save コメント退避させた変更の一覧
git stash list退避させた最新の変更を戻す
git stash apply指定する退避させた変更を戻す
git stash apply 番号(git stash list の番号)コミット
コミット
git commit -m コメント(-m コメント) * -m 2つで2行にできる前回コミットした時点に戻す
git reset --hard HEAD特定のコミット時点に戻す
git reset --hard ハッシュ値(git logで確認できる)一つ前のコミットメッセージを修正する
git --amend -m コメントプッシュしたコミットメッセージをリモートリポジトリに再プッシュする
git push -f origin ブランチ名プッシュ
リモートリポジトリにプッシュ
git push origin ブランチ名強制的にプッシュ
git push -f origin ブランチ名マージ
ローカルでマージ済ブランチ一覧表示
git branch --merged対象ブランチをチェックアウト中のブランチへマージ
git merge ブランチ名新しくマージコミットを作成してマージ
git merge --no-ff ブランチ名プル
リモートの変更を取得
git pull origin ブランチ名その他
.gitignore作成
touch .gitignore
- 投稿日:2020-07-01T14:20:14+09:00
Git初心者によるGit備忘録
個人的に、エンジニアたるものgitぐらいは使えないとな〜と思っていたのですが、自分の周りにGitをちゃんと使える人も少なくてなかなか手が出ませんでした。
しかし、最近kindle UnlimitedでサルでもわかるGit入門という本を見つけたので、読んで触ってみてGitの素晴らしさに気付きました。
Git初心者がGitを触ったことがない人に伝えられることも多いとおもいますので、備忘録として書いていきます。
こういう使い方がただしいよ〜とか便利だよ~みたいなのがあれば教えていただけるとありがたいです!Gitとは
gitとは、バージョン管理システムのことでファイル単位でバージョンの管理を行なっていくことができます。
今までの自分もそうだったのですが、バージョン管理システムを使わないと、ファイル名にver1とかをつけていくのですが、最終的にどれが最新版だったかわかりにくくなったり、ファイル数が増えすぎてよくわからなくなってしまいます。
そこで、gitを使うと簡単にバージョン管理を行なっていくことができます。
gitを使って「コミット」をするとセーブポイントをたくさん作っていくことができ、簡単にセーブポイントに戻ることができます。
また、誰がいつなぜそうしたのかをメモしておくことができるので、グループの開発等にも多く使われています。Gitを使い始めてからは、どのファイルだったっけと思うことも少なくなり、管理楽になりました。
今は、作業がひと段落するとコミットをしてセーブポイントを作っておくことが習慣化してきて、本当に最高です。
では、実際にgitの使い方をみていきましょう。Gitの基本的な使い方
まずはgitで管理したいディレクトリに行って最初の初期設定を行う必要があります。
ターミナルで、管理したいディレクトリで以下を実行します。ターミナル$ git init
これで、自動的に初期設定を行なってくれます。
これをすると、ディレクトリ内に.gitフォルダが作成されているハズです。
この中にconfigファイルとかの設定ファイルがまとめられています。簡単ですね!次は、セーブポイントを作っていくのですが、まずどのファイルにセーブポイントを作るかを選択します。
変更をしていなければ、そのファイルのセーブポイントを作る必要はないためです。ターミナル$ git add hogehoge
こんな風に一つずつやっても良いのですが、gitは全てを選択すると、変更があったファイルだけ勝手にセーブしてくれます。すごい!
以下のコマンドで全てを選択してくれますターミナル$ git add -Aここまでは、セーブポイントを作るまでの前段階です。
セーブするために教会に向かいました!って感じです。
次にちゃんと神父さんに話しかけて、セーブします。ターミナル$ git commit -m "ここになんでセーブしたかのコメントをかく"これでセーブポイント作ってくれます。
思ったよりも簡単ですね。commitするタイミングっていつ?
初めて触る人にとって、知りたいのはどういうときにコミットするの?というところですよね。
僕自身まだまだ初心者なので、手探り状態ですが作業が一段落ついたらコミットをすればよいと思います。
何かしらの機能を実装した、関数を新しく作成した、ええ感じになった、みたいなときにコミットすれば大丈夫だと思います。
gitの利点の一つは、しっかりとコメントを残せるというところです。
正直、一か月前に書いたコードはほぼ他人が書いたコードです。
どういう目的で実装したとかも残せるので、非常に良いですね。個人で使うのであれば、ここまでできれば正直十分だと思います。
しかし、これだけではgitを使いきれていません。
いままでやっていたのはセーブの一つのスロットにセーブしている感じです。
ちゃんと履歴は残っていて良いんですが、何かあった時のために別のセーブスロットでいろいろチャレンジして、いつでも大元に戻れるようにしておきたいですよね!
複数のセーブスロットを用意できるのがbranchというものになります。
ブランチを切るみたいな言葉を聞いた方も多いのではないでしょうか。
次にブランチについてまとめていきます。Branchとは?
ブランチとは枝という意味で、もともとのコミットの道筋から分岐を行ったもので、ブランチ毎に目的を分けるなどを行うことで、それぞれの作業に影響を与えることなく、別々の作業を行うことが可能になっています。
もちろん、ブランチ毎にコミットを行うことができてブランチ毎にセーブポイントが作れます(すごい!)。
正直、一人で作業しているときに使うものか?と言われれば疑問は残りますが、グループでのコーディングでは非常に重要になってくるので覚えておいて損はないと思います!(ちゃんとグループで使ったことはないんですけどね!)
まずは、ブランチをを作成してみましょう。ブランチを作るのは非常に簡単です。
まずは、hogehogeというブランチを作ってみましょう!ターミナル$ git branch hogehoge
これでhogehogeブランチが作成されています。
実際に作成されているか確認してみましょう!
git branchと入力すると現在自分がいるブランチとほかのブランチの一覧が出てきます。*がついているのが現在のブランチです。ターミナル$ git branch hogehoge * master新しく、hogehogeが作成されていますが、自分がいるのがmasterブランチになっています。
なので、hogehogeで作業をするには、切り替える必要があります。
切り替えると、hogehoge上で作業をすることができます。ターミナル$ git checkout hogehoge Switched to branch 'hogehoge' $ git branch * hogehoge masterこれで切り替えることができました!
後は、今までと同様にコミットをしていけば大丈夫です!
ここで、気を付けないといけないのはブランチは分岐点を作っていくので、分岐点を作る場所っていうのが重要になっていきます。
ちゃんとした場所でブランチを使わないとマージをするときに影響が出るかもしれないので、大変ですね。
ここで、新しくマージという言葉が出てきましたが、マージは作成した分岐をもとのブランチに融合するためのモノです。
では適当にいろいろ変更をコミットした後にマージをしてみましょう。
マージは分岐元でする作業なので、まずはmasterブランチに移動しましょう。
checkoutで移動できるんでしたね。ターミナル$ git checkout master Switched to branch 'master' $ git branch hogehoge * masterちゃんと移動できましたね。
では、次にマージをしてみましょう。
コマンドで、マージしたいブランチを入力しましょう!ターミナル$ git merge hogehoge Updating 9f0fc05..8070d7e Fast-forward README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)これで、masterブランチにhogehogeブランチ上での作業が反映されました!
そんなに難しくはないですね。
ブランチは大きな作業毎とか、Issue事にbranchを作成すると管理がしやすいと思います。
こういうブランチ管理の考え方というのも複数あって、git-flowとgithub-flowという考えかたがあるので、調べると情報が出てくるのでそれをよく読んでみると良いと思います。
個人的には、github-flowから始めるとわかりやすくて良いと思います!最後に
僕自身完全に独学でやっているので、間違えもあると思います。
そこらへんはコメントで指摘いただけるとありがたいです。
個人で使うときでも便利ですが、多くの人と作業するときにより強みを感じると思います。
次は、リモートリポジトリの使い方でもまとめてみようと思います。
- 投稿日:2020-07-01T12:32:07+09:00
gitのローカルでステージ前の新規追加ファイルを削除する場合
- 投稿日:2020-07-01T10:48:28+09:00
git clone 前にリモート先の HEAD を取得して確認したい
git clone
を実行する前に、リモート先(リポジトリ URL 先)のHEAD
(現在の最新コミット・ハッシュ値)を取得したい。「git clone リモート先の HEAD 取得 確認」でググってもドンピシャのタイトルの記事がなかったので、自分のググラビリティとして。
TL; DR
git
のls-remote
コマンドで、リモート先の諸情報を得られます。例えば、ヘッダー情報は--heads
オプション。ロング・オプションgit ls-remote --heads [ リポジトリのURL ]ショート・オプションgit ls-remote -h [ リポジトリのURL ] # URLが指定されていない場合はヘルプ表示になるので注意使用例$ git ls-remote --heads https://github.com/KEINOS/TPL-PHP-HelloWorld.git b05c14a0ee5651990eec41e6bd397a19726d9440 refs/heads/masterTS; DR
Travis CI/Circle CI/GitHub Actions といった CI の実行処理で、いくつかのリポジトリを
git clone
する必要がありました。ローカルではなく、CI の処理上で各々のリポジトリを
clone
し、必要なデータをコピー&マージしてからデプロイ(リリース)する必要があったからです。特にcron
などでスケジュール実行される自動化されたデプロイです。しかし、各々のリポジトリのサイズが大きいため、対象のリポジトリに変更があった場合のみ
clone
するように限定したいのです。そのため、最終コミットのハッシュ値(HEAD
)を比較するのが合理的です。
git pull
などclone
済みの場合のヘッダを確認する記事は多いのですが、git clone
前にヘッダを取得する記事がなかなか見つからず。git
の公式ドキュメントを読み漁ってたらドンピシャの情報がありました。NAME
git-ls-remote - List references in a remote repository
(git-ls-remote - リモートリポジトリの参照情報を表示する)SIMPSONS
構文git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>] [-q | --quiet] [--exit-code] [--get-url] [--sort=<key> ] [--symref] [<repository>[<refs>…] ]DESCRIPTION
Displays references available in a remote repository along with the associated commit IDs.
(関連するコミットIDとともに、リモートリポジトリで利用可能な参照情報を表示します)
- git-ls-remote | Document @ Git
- 投稿日:2020-07-01T00:10:49+09:00
コミットする時に現在のブランチと変更ファイルの状態を確認できるスクリプト
昨日、作業ブランチにpushする時の入力は面倒だけど、pushするブランチは確認したいを書きましたが、
よくよく考えてみたらコミットの段階で確認出来た方が良い事に気が付いたので、そのシェルスクリプトを作ってみました。作ったもの
- commit時に現在ブランチ、入力したコメントが出力される
y
orY
の入力でコミットされる- 修正されたファイルの一覧が見れる
addしないままコミットしてしまうこともあったので、修正ファイルも表示されるようにしました。
~/.bashrcgitcommit(){ branch=`git rev-parse --abbrev-ref HEAD` if [ -z $branch ]; then return fi git status comment=$1 if [ -z $comment ]; then echo '>> Comment is Required.' return fi echo "[branch] $branch" echo "[comment] $comment" read input if [ -z $input ]; then return fi if [ $input = 'y' ] || [ $input = 'Y' ]; then git commit -m $comment else return fi }
gitcommt <COMMENT>
で実行します。Ariel:bash gatapon$ gitcommit On branch gt.test Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: first.txt Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: test2.txt >> Comment is Required.コメントがなければ終了する。
Ariel:bash gatapon$ gitcommit コミットしてみる On branch gt.test Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: first.txt Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: test2.txt [branch] gt.test [comment] コミットしてみる現在のワークスペースとステージの状況が表示され、現在のブランチとコメントが確認できる。
y
orY
を入力すると実行[branch] gt.test [comment] コミットしてみる y [gt.test 6d163de] コミットしてみる 1 file changed, 1 insertion(+)