- 投稿日:2020-07-30T23:33:40+09:00
git-todosはいいぞ
みんなー!進行中のプロジェクトのTODOを管理するのに苦労してるー?
シンプルかつ合理的なツールを見つけたので紹介するよー!これ -> git-todos
last commitが3 years agoでスター数54なのでもう誰もメンテしてない感あるけど、そのシンプルさゆえか問題なく使えました。他にも見つかったものとして、ソース中の
TODO
FIXME
的な文字列を検索してリスト化してくれるやつ(git-todo)もあったけど、僕の場合は以下の理由でTODOはソースとは別に管理したかったのでgit-todosの方を選びました。
- TODOコメントを書く習慣がない
- TODOコメントを書く時に、ツールを通したときにどう見えるのかを気にしたくない
- TODOコメントをどのファイルのどの位置に置くのが適切かを考えたくない
- TODOの消化とcommitを明示的に結びつけたい
個人とか小人数の小規模プロジェクトだとgit-todosの方が良い気がしたけど、ある程度大規模だともしかしたらgit-todoの方がぴったりハマるのかもしれない。
(名前ややこしいな)以下git-todosの使い方紹介。
TODOの追加
git todos add
を叩くと対話的にTODOが作成される。
ここで設定するTitleとDescriptionはそのまま、TODOを消化する時のコミットコメントのデフォルト値として使える。$ git todos add ? Title (Required) create readme ? Description with very first greetings ✔ A Todo has been added ✔ You rock! ?TODOの管理
.todos.yml
というファイルが生成され、そこにTODOのリストが記入される。
手動で変更しても良い。todos: - title: create readme description: with very first greetings marked: false id: 0 todos: - title: add .gitignore description: to keep secrets secret marked: false id: 0CLIからは
git todos list
で表示できる。(なぜかアルファベット順になる。)$ git todos list 1) add .gitignore 2) create readme
git todos show
で個別のtodoを表示できる$ git todos show ? Select an item (Use arrow keys) create readme create readme with very first greetingsTODOの消化
git todos finish
を叩くと対話的にTODOを消化できる。
同時に、TODO追加時のtitle
とdescription
からメッセージを生成しつつgit commit
もしてくれる。
つまり そのTODOに関係する内容のファイルをgit add
したあとに、git commit
の代わりにgit todos finish
を叩くといい感じということ。
必要があればGitHubのIssueの解決もしてくれるっぽい。$ git todos finish ? Select an item (Use arrow keys) create readme ? Type of change that you're committing (Required) first import ? Denote the scope of this change readme ? Short description create readme ? Longer description of the change ? List any issues closed by this change ✔ Your work has been commited ✔ A Todo has been removed ✔ I see what you did there! ?ちなみにその後の
git log
はこんな感じcommit a2ae4aee207a3b82bbaa83e218204e054dbe46d6 (HEAD -> master) Author: nariakiiwatani <nariakiiwatani@annolab.com> Date: Thu Jul 30 23:19:49 2020 +0900 first import(readme): create readme
- 投稿日:2020-07-30T22:59:29+09:00
Gitで新規リポジトリを作成するあれこれ
概要
使い始めの頃と比較して少しずつ慣れてはきたが、毎回リモートリポジトリの作成とpushまでで手が止まるので自分なりのメモ。
毎度ググるの面倒くさいですからね。リモートリポジトリもローカルリポジトリも空の場合
①リモートリポジトリの作成
GitHub>New Repositories
- 新規でリモートリポジトリを作成。
- 作成したリポジトリからURL取得。
詳しくはこれ参照。
https://qiita.com/mst_141/items/23828bef5cf6fc68f50d②ローカルリポジトリの作成
$ git init③インデックスに追加
$ git add <ファイル/フォルダ>③ローカルリポジトリに登録
(個人的にターミナルからコメントできる方が早くて好き。)$ git commit -m "<メッセージ>"④リモートリポジトリにpush
次回以降「git push」だけで済むように「-u」オプション付き。$ git remote add origin <URL> $ git push -u origin masterリモートリポジトリを新たにローカルまで持ってくる場合
リモートリポジトリからURL取得してclone
$ git clone <リポジトリURL>まとめ
ブランチ切り替えやリベースなんかも使う機会が多発する頃に再度アウトプット予定。
言語も楽しいけどチーム開発ツールで知見増やすのも楽しい。
- 投稿日:2020-07-30T22:44:11+09:00
【Linux】CentOS7.5にGitBucketを構築してみる。
はじめ
CentOS7.5にGitBucketに構築する手順をアウトプットしたいと思います。
環境
項目 説明 Hypervisor Virtualbox OS CentOS7.5 /etc/redhat-release[root@tspweb02 ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [root@tspweb02 ~]#前提条件
- こちらの基本設定が完了していること
【Linux】CentOS7.3のOSインストール後の基本設定
※最低でもネットワーク設定&DNS設定が完了していること
- リポジトリが初期状態であること
/etc/yum.repos.d直下(初期状態)[root@tspweb02 yum.repos.d]# ls -la 合計 44 drwxr-xr-x. 2 root root 187 4月 13 2018 . drwxr-xr-x. 75 root root 8192 7月 30 20:05 .. -rw-r--r--. 1 root root 1664 4月 29 2018 CentOS-Base.repo -rw-r--r--. 1 root root 1309 4月 29 2018 CentOS-CR.repo -rw-r--r--. 1 root root 649 4月 29 2018 CentOS-Debuginfo.repo -rw-r--r--. 1 root root 630 4月 29 2018 CentOS-Media.repo -rw-r--r--. 1 root root 1331 4月 29 2018 CentOS-Sources.repo -rw-r--r--. 1 root root 4768 4月 29 2018 CentOS-Vault.repo -rw-r--r--. 1 root root 314 4月 29 2018 CentOS-fasttrack.repo [root@tspweb02 yum.repos.d]# [root@tspweb02 yum.repos.d]# pwd /etc/yum.repos.d [root@tspweb02 yum.repos.d]#※構築前にリポジトリの初期化をしておくことが望ましいです。
①yumのキャッシュクリア
yum clean all②yumのリポジトリを読み込む
yum repolist all構築手順
1.Javaインストール
Javaのバージョン確認
Javaの「java-1.8.0-openjdk」を探す。
javaのバージョン確認[root@tspweb02 yum.repos.d]# yum provides java 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile <中略> 1:java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64 : OpenJDK Runtime Environment 8 リポジトリー : updates 一致 : Provides : java = 1:1.8.0 [root@tspweb02 yum.repos.d]#Javaインストール
Javaの「1.8.0」をインストールする。
Javaインストールyum install -y java-1.8.0-openjdk2.wgetインストール
wget
のパッケージをインストールyum install -y wget
wget
がインストールされていることを確認[root@tspweb02 yum.repos.d]# rpm -qa | grep wget wget-1.14-18.el7_6.1.x86_64 [root@tspweb02 yum.repos.d]#3.GitBucketをwgetする
GitHubにて最新版のGitBucketを確認する。
Releases · gitbucket/gitbucket · GitHub
gitbucket.war
のURLをコピーする。※2020/07/30時点では、「4.34.0」です。
GibBucketをダウンロード
wget https://github.com/gitbucket/gitbucket/releases/download/4.34.0/gitbucket.war4. firewalld停止/自動起動停止
firewallサービスの停止と自動起動停止を行う。
firewalld停止
systemctl stop firewalldfirewalld自動起動停止
systemctl disable firewalld5.GitBucketの起動
GitBucket起動コマンド実行
java -jar gitbucket.war
起動後、こちらの一行が表示されることを確認。
2020-07-30 22:15:52.606:INFO:oejs.Server:main: Started @4054msブラウザにて下記URLを開く
①ブラウザにて下記URLを開く
http://***.***.***.***:8080/※「***」の部分は、サーバーのIPアドレスになります。
②GitBucketの画面が起動できることを確認
※root/rootでログイン可能
6.GitBucket自動起動設定
サービスファイル作成
/usr/lib/systemd/system/gitbucket.service
を作成する。vi /usr/lib/systemd/system/gitbucket.service/usr/lib/systemd/system/gitbucket.service[Unit] Description=Git hosting service [Service] User=root ExecStart=/usr/bin/java -jar /root/gitbucket.war [Install] WantedBy=multi-user.target設定ファイルの再読込
systemctl daemon-reloadGitBucket起動
systemctl start gitbucket.serviceGitBucket起動状態確認
systemctl status gitbucket.servicegitbucket.service[root@tspweb02 ~]# systemctl status gitbucket.service ● gitbucket.service - Git hosting service Loaded: loaded (/usr/lib/systemd/system/gitbucket.service; enabled; vendor preset: disabled) Active: active (running) since 木 2020-07-30 22:39:01 JST; 1min 33s ago Main PID: 644 (java) CGroup: /system.slice/gitbucket.service └─644 /usr/bin/java -jar /root/gitbucket.war 7月 30 22:39:07 tspweb02 java[644]: 22:39:07.934 [main] INFO gitbucket.core.plugin.Plugin....jar 7月 30 22:39:08 tspweb02 java[644]: 22:39:08.353 [main] INFO gitbucket.core.plugin.Plugin....jar 7月 30 22:39:08 tspweb02 java[644]: 22:39:08.357 [main] INFO gitbucket.core.plugin.Plugin....jar 7月 30 22:39:08 tspweb02 java[644]: 22:39:08.409 [main] INFO gitbucket.core.plugin.Plugin....jar 7月 30 22:39:08 tspweb02 java[644]: 22:39:08.456 [main] INFO o.scalatra.servlet.ScalatraL...trap 7月 30 22:39:08 tspweb02 java[644]: 22:39:08.458 [main] INFO o.scalatra.servlet.ScalatraL...trap 7月 30 22:39:08 tspweb02 java[644]: 22:39:08.567 [Thread-10] INFO g.core.plugin.PluginWat...gins 7月 30 22:39:09 tspweb02 java[644]: 2020-07-30 22:39:09.389:INFO:oejsh.ContextHandler:main...war} 7月 30 22:39:09 tspweb02 java[644]: 2020-07-30 22:39:09.431:INFO:oejs.AbstractConnector:ma...080} 7月 30 22:39:09 tspweb02 java[644]: 2020-07-30 22:39:09.435:INFO:oejs.Server:main: Started...19ms Hint: Some lines were ellipsized, use -l to show in full. [root@tspweb02 ~]#→
active
であることを確認自動起動設定
systemctl enable gitbucket.service
自動起動設定確認
systemctl is-enabled gitbucket.service→結果が
enable
であることを確認。7.再起動後にGitBucketが起動されることを確認
サーバ再起動
reboot→再起動されることを確認
GitBucketが起動していることを確認
gitbucket.service[root@tspweb02 ~]# systemctl status gitbucket.service ● gitbucket.service - Git hosting service Loaded: loaded (/usr/lib/systemd/system/gitbucket.service; enabled; vendor preset: disabled) Active: active (running) since 木 2020-07-30 22:39:01 JST; 1min 33s ago Main PID: 644 (java) CGroup: /system.slice/gitbucket.service └─644 /usr/bin/java -jar /root/gitbucket.war 7月 30 22:39:07 tspweb02 java[644]: 22:39:07.934 [main] INFO gitbucket.core.plugin.Plugin....jar 7月 30 22:39:08 tspweb02 java[644]: 22:39:08.353 [main] INFO gitbucket.core.plugin.Plugin....jar 7月 30 22:39:08 tspweb02 java[644]: 22:39:08.357 [main] INFO gitbucket.core.plugin.Plugin....jar 7月 30 22:39:08 tspweb02 java[644]: 22:39:08.409 [main] INFO gitbucket.core.plugin.Plugin....jar 7月 30 22:39:08 tspweb02 java[644]: 22:39:08.456 [main] INFO o.scalatra.servlet.ScalatraL...trap 7月 30 22:39:08 tspweb02 java[644]: 22:39:08.458 [main] INFO o.scalatra.servlet.ScalatraL...trap 7月 30 22:39:08 tspweb02 java[644]: 22:39:08.567 [Thread-10] INFO g.core.plugin.PluginWat...gins 7月 30 22:39:09 tspweb02 java[644]: 2020-07-30 22:39:09.389:INFO:oejsh.ContextHandler:main...war} 7月 30 22:39:09 tspweb02 java[644]: 2020-07-30 22:39:09.431:INFO:oejs.AbstractConnector:ma...080} 7月 30 22:39:09 tspweb02 java[644]: 2020-07-30 22:39:09.435:INFO:oejs.Server:main: Started...19ms Hint: Some lines were ellipsized, use -l to show in full. [root@tspweb02 ~]#→
active
であることを確認ブラウザにて接続できることを確認
参考サイト
- 投稿日:2020-07-30T19:44:25+09:00
Git 必要なディレクトリだけ checkoutする
環境
win10, git 2.28.0.windows.1
手順
①作業ディレクトリに checkoutするディレクトリを作成して そこに移動
②以下 git コマンド作業→ git初期化 必要なら git-config user.nameとか 設定しておく
> git init→ sparse-checkout を有効化
> git config core.sparsecheckout true→ sparse-checkoutファイル作る
$ touch .git/info/sparse-checkout (linux) > New-Item -Type File .git/info/sparse-checkout (win-PowerShell)→ <パターン>は checkoutしたい ディレクトリパス
> git sparse-checkout add <パターン> e.g.) git sparse-checkout add directory/path→ 指定パターン確認 <パターン>が表示されればおk
> git sparse-checkout list> git remote add origin <リポジトリのURL> > git pull origin <ブランチ名> > git pull origin master③pullしたら リポジトリの<パターン>(directory/path)だけcheckoutされる
参考)
git sparse checkout で clone せずに一部のサブディレクトリだけを pull/checkout する https://mseeeen.msen.jp/git-sparse-checkout/
リポジトリの一部だけcheckoutするGitコマンド:sparse-checkout - はんなりと、ゆるやかに https://iucstscui.hatenablog.com/entry/2020/05/21/090321
- 投稿日:2020-07-30T15:38:48+09:00
[PHPStorm]Shelfで並行開発を楽に管理する
はじめに
PHPStormのバージョン管理のヘルパー機能である、
Shelf
の使い方メモです。詳細は公式ドキュメントを参照してください。
→ Gitを使用して複数の機能を同時に処理するPHPStormの使い方シリーズ
作業用フォルダを用意する
まず、今回作業を行うフォルダを用意します。
この記事では、ローカルリポジトリ上で作業を行います。% cd ~/Desktop % mkdir shelf % cd shelfローカルリポジトリを作成します。
% git init % ls -la drwxr-xr-x@ 3 mitsuoka-takahiro staff 96 7 29 21:19 ./ drwx------@ 14 mitsuoka-takahiro staff 448 7 29 21:16 ../ drwxr-xr-x 9 mitsuoka-takahiro staff 288 7 29 21:19 .git/.gitフォルダがあればOK。
PHPStormでGitツールウィンドウを表示する
View > Tool Windows > Git
から開くことができます。
ショートカットはデフォルトで⌘9
に設定されています。このような感じのウィンドウが開きます。
Shelfで並行開発を楽に管理する
Shelfは
git stash
と似た機能で、ブランチをクリーンにすることができます。
変更リストとの親和性が高く、合わせて使うことで開発中のファイルをより便利に管理できます。準備
新しいファイルを3つ追加し、ステージングします。
ステージングするのは、バージョン管理対象ファイルでないとLocal Changesに表示されなからです。% echo hello > a1.txt % echo hello > a2.txt % echo hello > b2.txt % git add .Gitツールウィンドウはこのようになっていると思います。
さらに、変更リスト
add feature A
にa1.txt
とa2.txt
を入れておきます。ファイルをShelfにしまう
Gitツールウィンドウで
b2.txt
を右クリックし、Shelf Changes
を選択します。コミットメッセージを求められるので、
add feature B
と入力し、Shelve Changes
をクリックします。これでShelfに
b2.txt
をしまうことができました。
GitツールウィンドウにShelf
タブが表示され、内容を確認することができます。同時に、作業ブランチ上から
b2.txt
がなくなっていることが確認できます。% git status On branch master No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: a1.txt new file: a2.txtShelfからファイルを取り出す
Shelf
タブのadd feature B
を右クリック、Unshelve...
を選択します。ウィンドウが表示されるので、変更せず
Unshelve Changes
をクリックします。
Local Changes
タブに変更リストadd feature B
が追加され、b2.txt
の変更も適用されます。変更リストをShelfにしまう
ファイルだけでなく、既に作成している変更リストをShelfにしまうこともできます。
対象の変更リストを右クリック、Shelve Changes
を選択することで、Shelfに格納されます。まとめ
Shelfを使うことで、変更リストと親和性の高い
git stash
に似た機能を利用することができる。
Shelfにしまったファイルは、ワークツリーから削除されるので、作業ブランチをクリーンに保つことができる。PHPStormの使い方シリーズ
- 投稿日:2020-07-30T10:45:21+09:00
MACでGit周りの操作まとめ【メモ】
Gitっていろいろ操作ありますが、毎回忘れて都度ググっているので自分用のメモとしてよく使う操作とコマンドを記載していきたいと思います。
Gitlab使っているのでGitlabの操作基準で書いてます(最初のセットアップ以外はほぼ変わらないと思いますが)。
都度更新します。Git登録
Gitlabのアカウントはある状態でPCにGitが登録されていない場合の手順
gitあるかどうかの確認
バージョン返ってくればOK
ない場合はbrew install git とかインストールできるはず(ググって)terminal$ git --version git version 2.24.2 (Apple Git-127) $Git初設定
ユーザ名とメールアドレスを登録
terminal$ git config --global user.name "ユーザー名" $ git config --global user.email "メールアドレス"SSH Key発行&登録
GitlabにSSH Key情報を登録させる(これしないとクローンとかできない)
Gitlabの右上のアイコンから「Settings」→左ペインの「SSH keys」でkeyのところにid_rsa.pubの内容をペーストして「Add key」ボタン押下(GUI画面はめんどうなので省略)terminal$ cd ~/.ssh $ ssh-keygen -t rsa -C tk-shiina@kddi.com Generating public/private rsa key pair. Enter file in which to save the key (~/.ssh/id_rsa): (そのままEnter) Enter passphrase (empty for no passphrase): (自分で決めたパスワード入力) Enter same passphrase again: (パスワード確認にもう一度入力) Your identification has been saved in ~/.ssh/id_rsa. Your public key has been saved in ~/.ssh/id_rsa.pub. The key fingerprint is: ************************************************** your@email.com The key's randomart image is: +---[RSA 3072]----+ | | | | | | | | | | | | | | | | | | +----[SHA256]-----+ $ ls config id_rsa id_rsa.pub known_hosts (※id_rsaが秘密鍵なので管理注意) $ cat id_rsa.pub (中身をまるごとコピー)Gitクローン
既存のプロジェクトの内容をクローンするとき
GitlabのレポジトリでClone→「Clone with SSH」の右のクリップボードアイコンをクリックしてURLコピーterminal$ cd (クローンしたいディレクトリ) $ git clone (コピーしたURL)Gitブランチ
現在のブランチの確認(※がついているのが今いるブランチ)
リモート含めてすべてのブランチを確認したいときは-aオプションをつけるterminal$ git branch * master Develop $ git branch -a * master Develop remotes/origin/Develop remotes/origin/Developer/A remotes/origin/HEAD -> origin/master remotes/origin/Developer/B $git branchのあとに適当な名前をつけると新しいローカルブランチを作成できる
terminal$ git branch test(新規作成するローカルブランチ名) $ git branch * master Develop testローカルブランチの削除方法
terminal$ git branch -d test(削除するローカルブランチ名) Deleted branch test (was 679b53b). $ git branch * master DevelopGitチェックアウト
ブランチを切り替えたいとき
terminal$ git branch * master Develop $ git checkout Develop(チェックアウトするブランチ名) Updating files: 100% (1088/1088), done. Switched to branch 'Develop' Your branch is up to date with 'origin/Develop'. $ git branch master * Developローカルブランチない状態でリモートブランチ切り替えたいときは-bオプション
ローカルブランチを作成した上でチェックアウトしてくれるterminal$ git checkout Developer/A(作成するローカルブランチ名) origin/Developer/A(リモートブランチ名) Updating files: 100% (1088/1088), done. Branch 'Developer/A' set up to track remote branch 'Developer/A' from 'origin'. Switched to a new branch 'Develop/A' $ git branch master Develop * Developer/A
- 投稿日:2020-07-30T00:03:41+09:00
Bitbucketでread only modeになったときの対処
状況
Bitbucketでread only modeになってしまいました。容量が2GBを超えるとread only modeになるようです。さらに5GBを超えてしまうと
$ git push
しても受け付けず、以下が表示されます。$ git push --force Repository is in read only mode (over 2 GB size limit). Learn how to reduce your repository size: https://confluence.atlassian.com/x/xgMvEw. fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
ちなみに2GB以上,5GB以下なら…
以下のコードで対処できるはずです。$ git reset --hard HEAD~1 $ git push --force対処法
リポジトリを一旦削除して再度作り直します。(対処法と言えるかは微妙ですが。)
1. ローカルリポジトリにpull
$ git pull
作業中のローカルリポジトリを壊したくなければ…
PCの別の場所に$ git clone [URL]
しておきます。ちなみにURLはローカルリポジトリで$ git remote -v
とすると調べられます。
2. 容量を減らす
次に、Gitの容量を減らすために、ローカルリポジトリの容量の大きいファイルやフォルダを削除します。バックアップをとってから以下のコマンドで削除します。
$ git filter-branch --tree-filter "rm -f -r [消したいディレクトリパス] " HEAD $ git gc --aggressive --prune=now3. リモートリポジトリを削除
ブラウザでBitbucketにログイン → 左上のハンバーガメニュー → 「リポジトリ」 → 削除したいリポジトリに移動 → 左上のハンバーガメニュ → 「Repository settings」 → 一番下の「リポジトリの削除」
4. 同名のリポジトリを作成
左上のハンバーガメニュー → 「+」 → 「リポジトリ」
リポジトリ名を以前と同じにすると、同じURLになります。
5. リモートにpush
$ git pushおわりに
複数人で共有している場合はテストしていません。割と雑な対処法ですが、個人で使う分には問題ないと思います。
環境
Ubuntu 18.04.4 LTS
git version 2.17.1参考文献
How to push in read-only mode?
Git リポジトリに上がっているファイルを履歴ごと消すには?
Bitbucketのリポジトリを削除する5ステップ