今さら聞けないGit 2019年12月04日

今さら聞けないGit 2019年12月04日
目次

6歳娘「パパ、プロジェクトフォルダを見つけるのに何時間かけるの?」【ghq+fzf+zsh】

# はじめに

娘(6歳)「パパ、いま私のためのブログつくってるんでしょ?」
娘「ブログってどういうふうにつくるの?」

ワイ「コードっていうのを元に動くんや」
ワイ「ちょっと待ってな。いまホームディレクトリやから…」
ワイ「たしか `projects/myproject01` みたいな名前やったかな…」
ワイ「`cd projects/myproject01`…あれ、ないな」
ワイ「lsしてみよ。」 (ポチッ

“`bash
$ ls
. .. myproj
myproj1 myproj001 myproject1
myproj2 myproject2 myproject3
yabai-proj sugoi-project
“`

ワイ(…クソみたいな構造してるやん)
ワイ「ごめん。娘ちゃん、もうちょい待ってな」

娘「部屋も汚い上に、ディレクトリも整理されてないんだね」

# どうするか

ghq と fzf(Fuzzy Finder)を利用すると、必要なプロジェクトに一瞬で移動できるようになります。自分の環境だとこのように動作します。

![s_3896E6C037CE

元記事を表示

[Mac] HomebrewでGitアップデートできないエラー => Error: The `brew link` step did not complete successfully The formula built, but is not symlinked

# 副題: HomebrewでGitのバージョンをアップグレードしたのに `git –version` で確認するとバージョンが変わらない件

## 環境

– macOS 10.14.6
– git version 2.22.0
– Homebrew 2.2.0

(2019年12月3日時点)

## 結論

パスに問題がない場合、Homebrewで何らかのパッケージをインストール/アップデート/アップグレード時、シンボリックリンクが貼られなかったことが原因。以下のコマンドで解決。

“`shell:ターミナル
$ brew link –overwrite git
“`
(git以外のパッケージのsymlinksを解決したいときは `git` の部分を適宜変更して実行。)

## エラー発生までの流れと状況調査

そもそもはGitを最新版にアップグレードしたい!と思ったのが始まりでした。

### 現在のGitのバージョンを確認
“`shell:ターミナル
$ git –version
git version 2.22.0
# 最新版は 2.24.0
“`
###

元記事を表示

筋肉マージは辞めよう

追記 2019/12/04
1.本番環境でやらかしちゃった人 Advent Calendar 2019で本番環境でないのではないかということですが、私自身は
文章をpushしたら本(原稿)ができあがるって本番環境じゃないか?と考え、申し込みました。
しかし、皆さんが考える本番環境の認識とは違うのではないかと考えています。
今回の件は申し訳ありません。もし、取り消すもしくは差し替えをする場合は下記コメントに連絡のほどよろしくお願いします。

2.友達に手伝ってもらい調査をした結果をまとめましたので修正させていただきます。申し訳ございません。
しかし、1年前のことだったり、ローカルに作業していたディレクトリがなかったり確信は持てませんので予めご了承ください。

追記ここまで

こんにちは。ぽちゃまと申します。
皆さんが投稿しているような本番環境ではないのですが、技術書典で共同執筆していたときにやらかした話です。

# 筋肉マージとは
自分でPRを立てる -> 自分でPRを承認してマージする
のチーム管理なのに一連の流れを筋肉マージとしています。

# やらかしちゃった(*ノω・*)テヘ

元記事を表示

Git SubmoduleでのやらかしとGit Submoduleとうまく付き合うために

この記事は[Ateam Hikkoshi Samurai Inc. & Ateam Connect Inc.(エイチーム引越し侍、エイチームコネクト) Advent Calendar 2019](https://qiita.com/advent-calendar/2019/hikkoshi) 4日目の記事です。

[本番環境でやらかしちゃった人 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/yarakashi-production)が人気ですね。おはこんばんにちは。
?このカレンダー程ではないですが、私もやらかした事があります。`Git Submodule`で。
今回はそれについて何が起こったのか、どう対策したのかと簡単に説明した後、
`Git Submodule`を使う上でよく使うコマンドについて説明します。

## はじめに
Gitについて学びたい方には以下をお勧めします。
https://git-scm.com/book/ja/v2
上記のSubmoduleについてのページは以下です。(おそらくこの記事よ

元記事を表示

ターミナルのコマンドを実行してGithub Pagesでサイトを公開する方法

自分でちょっとつまづいて、忘れそうなので備忘録として書き残しておきます。

Github Pagesでサイトを公開する方法です。

Github Pagesでポートフォリオサイトを作成したけど、GithubDesktopでGitHubへプッシュするときに下記のエラーメッセージが出て、プッシュができないという状況になりました。

どうしようかと思って色々調べていると、ターミナルから下記のコマンドを実行したら、プッシュができました。

リポジトリにコミット
“`
$ git add –all
$ git commit -m “任意のメッセージ”
“`
GitHubへプッシュ
“`
$ git push -u origin master
“`
パスワードを入力して、実行できました。

元記事を表示

Debianでgit diff-highlightを使う

# 環境

* Debian 10
* Git
* “`apt-get install git“`でインストール済み

# 手順

※基本的には、[参考サイト](https://udomomo.hatenablog.com/entry/2019/12/01/181404)の手順と同じです。

diff-highlightディレクトリに移動します。
ディレクトリ内にMakefileがあるので、makeコマンドを叩いてdiff-highlightバイナリを生成します。

““
$ cd /usr/share/doc/git/contrib/diff-highlight
$ sudo make
““

次に、/usr/local/bin/diff-highlightに対して、シンボリックリンクを貼ります。

“`
$ sudo ln -s /usr/share/doc/git/contrib/diff-highlight/diff-highlight /usr/local/bin/diff-highlight
““

~/.gitconfigを編集し、以下を追加しま

元記事を表示

.gitignoreファイルを設定した

## きっかけ
ポートフォリオ作成中に、/vendor/bundle配下のファイルはgitの管理下から外すように教えてもらったため
## 方法
アプリのルートディレクトリ内に**“`.gitignore“`**ファイルを作成する

具体的なディレクトリは“`/app名/.gitignore“`

ファイル内に“`、/vendor/bundle“`と記述する
## 参考URL
https://wiseloan-cash.com/gitignore/

元記事を表示

引きこもり情報系専門生、ついにターミナルからも出なくなる ~TeraPadを添えて~

## 初投稿です。
タイトルが違うので初投稿です。
冗談はさておき[MakeIt AdventCalendar](https://qiita.com/advent-calendar/2019/make_it)三日目では引きこもりの僕がターミナルにも引きこもって出られなくなった話をしたいと思います。

**※結構ネタが含まれるのであまりそういうのが受け入れ難い人はそっとページを閉じてください**

## 本題
### エディタの話
僕は5月にプログラミングの勉強を始めたのですが、最初のエディタが学校のススメで使わされていた[TeraPad](https://tera-net.com/)だったんですね。
このエディタ、本当にシンプルで便利なので全世界のプログラマーにオススメしたいのですが、あまり長く使い続けると使い心地の良さに正気を保てなくなりそうなので気をつけてください。僕は三日で[VSCode](https://code.visualstudio.com/)に乗り換えました。こちらは[テラパ(TeraPadの愛称)](https://tera-net.com/)程は使い心地が良くないで

元記事を表示

ブランチを一括削除

# はじめに
リモートでマージ済のブランチがローカルに溜まってしまうと邪魔になるので一括で削除できるプログラムを作成しました.
面倒な設定なんて全く必要なく, ただインストールするだけで使用できるシンプルなヤツです.
`grep` して一括削除!!みたいなことなら以下の記事に書いてある方法で実現可能です.

– [gitの複数のブランチを一括で削除する](https://qiita.com/satoshi03/items/c53aab17f3270477e33a)
– [Gitでマージ済みブランチを一括削](https://qiita.com/hajimeni/items/73d2155fc59e152630c4)

# featureブランチを一括削除
[GitDetroit](https://github.com/dj-hirrot/git-detroit) を作りました.

“`console
$ gdes
do you remove feature/create_user-activate_logic ? (y/n)
“`

みたいな感じで, `feature/xxx_xx

元記事を表示

さくらVPSでCentOS7 11.RailsプロジェクトをGitで共同開発

#はじめに
自由にテスト出来るLinuxのサーバーがほしくて、さくらVPSで構築してみました。
順次手順をアップしていく予定です。

前回インストールしたRuby On Railsを共同開発できるようにGitで管理したいと思います。

#目次

1. [申し込み](https://qiita.com/Qsugi/items/9239f93f35967e567b5b)
2. [CentOS7インストール](https://qiita.com/Qsugi/items/4cc4ba9983191a306b19)
3. [SSH接続](https://qiita.com/Qsugi/items/45772c8a71a31bd0d3c8)
4. [Apache・PHPインストール](https://qiita.com/Qsugi/items/bf9740f31b4c42eaad91)
5. [MariaDBインストール](https://qiita.com/Qsugi/items/7798669338b555f4ea8d)
6. [FTP接続](https://qiita.com/Qsugi/i

元記事を表示

git add -pで分割コミットしようとするとlint-stagedでエラーになる

# 症状
git add -pなどして「partially staged」した状態からgit commit経由でlint-stagedをすると、エラーになった。lint-stagedのバージョンは9.2.3で確認

“`bash
$ git commit
husky > pre-commit (node v11.13.0)
Stashing changes… [started]
Stashing changes… [completed]
Running tasks… [started]
Running tasks for *.js [started]
eslint –fix [started]
eslint –fix [completed]
git add [started]
git add [completed]
Running tasks for *.js [completed]
Running tasks… [completed]
Updating stash… [started]
Updating stash… [completed]
Restor

元記事を表示

【Git】SourceTree嫌いがよく使うgitコマンド

#【Git】SourceTree嫌いがよく使うgitコマンド

この記事は「ちゅらっぷす Advent Calendar 2019」の3日目です。
https://qiita.com/advent-calendar/2019/churapps

##SourceTree嫌い

えー唐突ですが私、**SourceTree**が嫌いでして。
嫌いな理由はいくつかありますが、周りと同調できないダメな人間です。
そもそもGUIに苦手意識があって予告なくUIの変更などがあるともうキレそう。というかキレてます(苦笑)

基本的なコマンドばかりですが、SourceTreeを利用し続けていたら知らなかったかもしれないオプションも紹介しますので是非お付き合いください。

##clone

“`bash
## base branchを参照、フォルダ名はリポジトリ名依存
$ git clone リポジトリ名

## ブランチを指定、指定のフォルダ名でcloneする
$ git clone リポジトリ名 -b ブランチ名(省略時はbase_branch) フォルダ名
“`

ブランチ、フォルダ名指定オプシ

元記事を表示

git submoduleのinitとupdateは同時に実行できる

コマンド。

“`shell
$ git submodule update –init
“`

https://git-scm.com/docs/git-submodule#Documentation/git-submodule.txt-update–init–remote-N–no-fetch–no-recommend-shallow-f–force–checkout–rebase–merge–referenceltrepositorygt–depthltdepthgt–recursive–jobsltngt–ltpathgt82308203

(すごいURLだ。。)

元記事を表示

[バッチ/git] バッチをgitに上げてそれを他の人がクローンすると、なんか動きませんけどと言われる(gitにコミット時の改行の扱いについて)

**もくじ**
→https://qiita.com/tera1707/items/4fda73d86eded283ec4f

# やりたいこと
バッチを作成して、gitに上げて、他の人がそれをダウンロード(Cloneではなく)して使うとなんか文字化けしてうまく動かない、となってしまった。

ちょっと見ると、Gitにpushしてクローンしたときは、バッチファイル(に限らずテキストファイルすべて)の各行の改行コードはとくに変わらず元のままだが、zipでダウンロードすると、なぜか改行コードがunix形式(LF)になって帰ってくる。

そのバッチをダブルクリックして動かそうとしてもうまく動いてくれないので、「作ったときはうまくいったのに、他の人がダウンロードしたら動かない」ということなってしまっているっぽい。

# 対策
今回編み出した対策としては、下記を徹底すること。

– 日本語を使うバッチファイルは、下記で保存する
– SJIS
– 改行コード=CR+LF
– バッチファイルを使うときは、リポジトリをzipダウンロードして使わない。Cloneして使う。

**後日追記で

元記事を表示

GitリポジトリのライブラリをAndroidアプリから参照する

#Gitのリポジトリのライブラリを参照する方法

色々調べてトライしたけれど、ブランチ指定した場合にうまく動作するのがこの方法だったのでメモ
他の方法はmaster指定しかうまく動かなかった・・・

詳細は以下のソースコードをみてください。

[ライブラリのリポジトリ]
https://github.com/tokuyama-san/MyLibrary

“`ruby:build.gradle(Module)
apply plugin: ‘com.android.library’
apply plugin: ‘kotlin-android’
apply plugin: ‘kotlin-android-extensions’
apply from: ‘maven.gradle’ ←ここを追加

android {
compileSdkVersion 29

defaultConfig {
minSdkVersion 28
targetSdkVersion 29
versionCode 1
version

元記事を表示

今度こそ挫折しない git 入門 第1回

こんにちは、バカンのソフトウェアエンジニアの垣野内です。
この記事は[バカン Advent Calendar 2019](https://qiita.com/advent-calendar/2019/vacan)の2日目の投稿です。
プログラミング初心者向けの記事を1つお届けしようと思います。

# なぜ git の記事か
自分自身、初心者だった時に git がなかなか理解できなかった記憶があり、このような解説があればもう少し習得が簡単だったかもしれないなーと思ったからです。
なので、**git に入門したい・git に入門しようと思ったけど挫折したことがある**という方が想定読者です。
この記事を読んで git の基本的なことを理解できれば、適宜ググることができるかと思います。

類書にない点/工夫した点は、以下の3点です:

1. コマンドラインで git のコマンドを懇切丁寧に解説にした
2. git のコマンドの話と git の概念的な話を明確に分離しつつ、それらの対応を意識的に書いた
3. git の入門のゴールを2段階に分けた(個人で使うシーンとチー

元記事を表示

プルリクがどれくらい巨大になっているか知りながら仕事しよう

image.png

この記事は [ギフティ Advent Calendar 2019 – Qiita](https://qiita.com/advent-calendar/2019/giftee) 2日目の記事です。

# 背景

つい夢中になって開発していたら、変更箇所が多岐にわたってしまい、レビュワーを面食らわせた・・・こんな経験、誰もが一度はあるのではないでしょうか?プルリクの粒度については色々な意見があるかと思いますが、「巨大すぎるプルリクはレビューの精度を下げるのでよくない」という認識はそれなりに一般的なものだと思います。

とはいえ、「プルリクが大きくなりすぎないように常に **気をつけましょう** 」という改善ほど意味のないものはありません。改善は常に具体的なアクションであるべきです。どうすれば同じ

元記事を表示

初めてエイリアスを触った備忘録

この記事は[tomowarkar ひとりAdvent Calendar 2019](https://qiita.com/advent-calendar/2019/tomowarkar)の2日目の記事です。

今日は最近ようやく手を出したエイリアスについて書いていきます。

どうでもいい話ですが、よく`alias`を`alies`とtypoしてしまうのを治したいです。

# エイリアスとは
>エイリアスとは、偽名、別名、通称などの意味を持つ英単語。ITの分野では、ファイルなどの実体を別の名前で参照するためのシンボルといった意味で使われることが多い。[エイリアスとは – IT用語辞典 e-Words](http://e-words.jp/w/%E3%82%A8%E3%82%A4%E3%83%AA%E3%82%A2%E3%82%B9.html)

ということでよく使うコマンドや、いつまでたっても覚えられないコマンドを、自分好みの別名をつけることができます。

今回は僕が定義しているエイリアスの一部を載せていきたいと思います。
### エイリアスの設定場所

`.bashrc`というbashを

元記事を表示

【Git】ブランチを途中のコミットまでpushしたい

# はじめに
初めまして。半年ほど前に未経験からRails中心の開発にアサインされた新卒社員のyagaodekawasuです。

さて、Gitでコード管理をしながらチーム開発していたある日、作業途中のブランチについて先輩社員から**「現状把握したいから、取り敢えず今できてるとこまでpushして」**と言われました。

その時のブランチはHEADがスナップショットのための中途半端なコミットだったので、最新の一つ前までのコミットをpushしたい(下図参照)と思ったのですが、**「git push 途中まで」**とかのワードでググっても求めているソリューションにたどり着くことができませんでした。

先輩達の助言を得てなんとか目的を達成することができたものの、また同じようなことがあった時のことを考えて、忘れないうちにインターネッツに書き留めておこうと思います。

“`pushするブランチ
A–B–C–D
↑ ↑このコミットは作業途中でゴチャゴチャしてるから
└ A~Cをpushしたい
“`

# ゴール
ここでは便宜上”sample”という名前の適当なリポジ

元記事を表示

git cloneしてローカルにファイルを落としたが、該当のブランチが見当たらない

# はじめに
下記のような複数既にブランチが存在するGitHubレポジトリにおいて、ローカルに`git clone`したとします。
![スクリーンショット 2019-12-02 13.04.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/291139/b681f819-8c97-4e9d-5bc4-87fb9a09b471.png)

例えば上記ブランチの`feature/initialSetup`に切り替えたいとして`git branch`してみると、developブランチしか見当たりません。

“`
$ git branch
* develop
“`

このような場合の対処法を記します。

# コマンド
`git branch`に`-a`をつけて、remotes側(GitHub側)に隠れているブランチを確認します。

“`
$ git branch -a
* develop
remotes/origin/HEAD -> origin/develop
remotes/origin/d

元記事を表示

OTHERカテゴリの最新記事