20200730のGitに関する記事は7件です。

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: 0

CLIからは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 greetings

TODOの消化

git todos finishを叩くと対話的にTODOを消化できる。
同時に、TODO追加時のtitledescriptionからメッセージを生成しつつ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
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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>

まとめ

ブランチ切り替えやリベースなんかも使う機会が多発する頃に再度アウトプット予定。
言語も楽しいけどチーム開発ツールで知見増やすのも楽しい。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【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-openjdk

2.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 21.22.56.png

※2020/07/30時点では、「4.34.0」です。

GibBucketをダウンロード

wget https://github.com/gitbucket/gitbucket/releases/download/4.34.0/gitbucket.war

4. firewalld停止/自動起動停止

firewallサービスの停止と自動起動停止を行う。

firewalld停止

systemctl stop firewalld

firewalld自動起動停止

systemctl disable firewalld

5.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の画面が起動できることを確認

スクリーンショット 2020-07-30 22.23.38.png

※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-reload

GitBucket起動

systemctl start gitbucket.service

GitBucket起動状態確認

systemctl status gitbucket.service
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であることを確認

自動起動設定

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-30 22.23.38.png

参考サイト

CentOS 7にGitBucketをインストール

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[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 Aa1.txta2.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.txt

Shelfからファイルを取り出す

Shelfタブのadd feature Bを右クリック、Unshelve...を選択します。

ウィンドウが表示されるので、変更せずUnshelve Changesをクリックします。

Local Changesタブに変更リストadd feature Bが追加され、b2.txtの変更も適用されます。

変更リストをShelfにしまう

ファイルだけでなく、既に作成している変更リストをShelfにしまうこともできます。
対象の変更リストを右クリック、Shelve Changesを選択することで、Shelfに格納されます。

まとめ

Shelfを使うことで、変更リストと親和性の高いgit stashに似た機能を利用することができる。
Shelfにしまったファイルは、ワークツリーから削除されるので、作業ブランチをクリーンに保つことができる。

PHPStormの使い方シリーズ

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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
  Develop

Gitチェックアウト

ブランチを切り替えたいとき

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
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Bitbucketでread only modeになったときの対処

状況

Bitbucketread 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=now

3. リモートリポジトリを削除

ブラウザで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ステップ

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む