今さら聞けないGit 2020年10月14日

今さら聞けないGit 2020年10月14日

リモートリポジトリのブランチをローカルに取り込む

## リモートリポジトリのブランチをローカルに取り込む

リモートリポジトリのブランチ(origin/[ブランチ名])を
ローカルに同じブランチ名で作成する

“`powershell:terminal
git checkout -b [ブランチ名] origin/[ブランチ名]
“`

元記事を表示

Gitで.onionなリモートリポジトリを扱う

gitで.onionドメインのような通常の方法で解決できないドメインを使うときは、sock5プロキシを使います。
sock5プロキシで利用するポートは9050ですが、9051の場合もあります。

“`bash
git -c http.proxy=socks5h://127.0.0.1:9050 clone http://hoge.onion/foo.git
“`

元記事を表示

CI/CDをkatacodaで体験(初心者向け) – Part4(Undoing Changes)

# CI/CD入門
このぺーじでは、[katacoda](https://www.katacoda.com/)と呼ばれる「ブラウザから無料で勉強用のインスタンスを起動できるWebサービス」を利用してCI/CDを実践します
内容は上記リンクに沿うので、不明点があればそちらへどうぞ

## Gitのバージョン管理について – Scenario4 – Undoing Changes
ここでは、CI/CDとして欠かせないGitによるバージョン管理について学習します
このシナリオで学習することをさっと確認する場合は**概要**を確認
**理解に間違い等がございましたら、ぜひご指摘ください**

### 概要
>- “`git checkout“`でワーキングディレクトリの状態を前回コミット時(変更前)に戻す
– “`git reset“`でステージングの状態をワーキングディレクトリの状態(“`git add“`する前)に戻す
– “`git reset“`時にオプションとして“`–hard“`を利用することで、ステージングの

元記事を表示

windowsのssh-agentが動かないときの対処法

# 環境

– Windows10(64bit)
– [git for windows](https://gitforwindows.org/index.html)

なお、`git`コマンドがPowerShellから使えるようにgit for windowsで設定してある。

# 問題となった事象

`ssh`コマンドのみの使用では問題なかったが、`ssh-agent`コマンドを使用した場合にいずれも発生した。

1. `ssh-add`を使って確かに秘密鍵をパスワードを登録したはずなのに、`git`コマンドを使うとでパスワードを相変わらず聞かれる。
2. “warning agent returned different signature type ssh-rsa”という警告が出る。

# 1つ目の問題への対処

原因は、**`git`コマンドはgit for windowsに付属しているsshバイナリを使用するため**。

gitに使用するssh.exeのパスを教えてやればいい。

以下手順

1. 環境変数`GIT_SSH`を定義して、値をgitに使用するssh.exeのパス

元記事を表示

Git 超基本コマンドの学習。。。

git init
Gitリポジトリの作成

ディレクトリの作成

“`
$ mkdir git-tutorial
$ cd git-tutorial
“`

リポジトリの作成

“`
$ git init
Initialized empty Git repository in /home/user/work/git-tutorial/.git/
“`

これで git-tutorialディレクトリがGitリポジトリとして管理されるようになる。

git status
Git リポジトリの状態の確認

ファイルの作成

“`
$ echo ‘Hello,git!!’ > README.md
$ cat README.md
Hello,git!!
“`

Gitステータスの確認コマンド

“`
$git status
“`

ステータスの確認

“`
On branch master

No commits yet

Untracked files:
(use “git add …” to inc

元記事を表示

Gitのブランチを頑張って解説する

構成管理のツールにはかかせないブランチという機能。Gitのブランチってどんな仕組みなの?というところを書いていきます。

## ブランチ is 何?
まずは構成管理ツールにおける、ブランチってなんなの?というところから。
ブランチを一言で表すと、
ほかの人の開発の邪魔をせず、自由に開発するための機能
って感じです。一言でって難しいよね。。。

### というわけで例え話
自動車を生産する工場をイメージしてください。
ブランチなしで自動車工場
一か所の作業場で、板金、組み立て、塗装などすべての作業をしようとしているようなイメージです。
エンジンもタイヤもシートもすべてその場で作っている状態です。わちゃわちゃしてそうでしょ。
シートの革を一枚一枚丁寧に縫製している横から、塗装のスプレーの流れ弾が飛んできて、革の質感が台無しに、、なんて悲劇が起こるかもしれません。

ブランチありで自動車工場
パーツ、工程ごとに専用の工場があるイメージです。
エンジンはエンジン工場、タイヤはタイヤ

元記事を表示

Gitのローカルブランチを一括削除

master, develop 以外のローカルブランチを一括削除するワンライナー。

“`sh
git branch | grep -v master | grep -v develop | xargs git branch -D
“`

元記事を表示

ローカルブランチを新規ブランチとしてプッシュしたいとき

## やりたいこと
ローカルにあるブランチを、新規ブランチとしてリモートにプッシュしたい。

## 手順
大元にしたいブランチをチェックアウト
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/243523/dbaffc25-6eab-1d03-31db-9f88d7334f69.png)

チェックアウトするときに名前を変えておく
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/243523/0ac34f47-3abe-e425-a904-04c3789ecd15.png)

SourceTree上のUI操作では新規ブランチとしてプッシュできないので
ターミナルを起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/243523/d37bb1ef-99eb-328b-1e37-5bb38d132

元記事を表示

vagrant環境でGitHubの草が生えない(Contributionできない)時の対処方法

せっかく日々のGitHubへのPushを頑張っているのに、草が生えないとがっかりします。
私もVagrant環境で何回か草が生えないが状況に陥ったので、参考になればと思います。

##草の生える条件

以下の3点が全て満たされていないと草が生えません。

①コミットに使用されるメールアドレスがGitHubアカウントと連携されていること
②フォークされたリポジトリではなく、独立したリポジトリでコミットされること
③デフォルトブランチもしくはProject Pages sitesでのコミットであること

私は初期の段階でメールアドレスの設定ができていなかったので、ターミナルで設定しました。
ローカルでのメールアドレスは以下で確認する事ができます。

“`
$ git config user.email
“`

GitHubに登録してあるメールアドレスは、Profileのsetting内のEmailsで確認する事ができます。

メールアドレスが合致していない場合は、ターミナルから以下の通りで設定を行います。

“`
git config –global user.email “emai

元記事を表示

git add できないときの対応方法

自分用のメモ書きです:fist:
間違っている等ありましたらコメントください!!

ことの発端として、、、
デザイナーさん「git add style.ccsできない…:frowning2:」
ということがありました。

## ☆対応方法
まず、プロジェクトのトップにある.gitignoreを確認
→同じファイル名や拡張子がないか確認しましょう。
→ない場合は下の解決策を試してみて下さい!

## .DS_Storeが悪さしている
Mac用に.DS_Store.gitignoreに記述してあることがあります。
![スクリーンショット 2020-10-13 12.58.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429019/65440280-d4fb-b172-1eaa-a6b5b3c100b4.png)

### 解決策
.gitignore

macいろいろ設定メモ

諸事情でmacにまたゼロからいろいろ設定せなあかんくなったんで今後のことを考えてのメモです.同じような設定やツールを利用する方が多いと思うので参考になるものがあれば嬉しいです.

###lsの色と太さを変更する
自分はlsしたときディレクトリがグリーンの太文字じゃないと落ち着かないので.

```:~/.bashrc
export LSCOLORS=Cxfxcxdxbxegedabagacad
alias ls='ls -G'
```
一番左のC(太字のグリーン)がlsしたときのディレクトリの色付けとなる.太字が嫌なら小文字にすればいい.詳細は[こちら](https://qiita.com/PinkPhayate/items/a670e7e7935baea988f2)と[こちら](https://nemoplus.hateblo.jp/entry/20090119/1232373540)

###ログインシェル(~/.zsh)の編集
OSがCatalinaになってデフォルトシェルが.bashから.zshになったので今までbashに施していた上記のような設定をzshに施す.

```

【Shell】Gitでリモートのデフォルトブランチを取得する方法

- 普段Gitを用いた開発の際に、shellやCIでデフォルトブランチ名を取得した処理を記述する場合がある。
- ただ、最近諸事情でデフォルト名が**master**から**main**へ変更されたため、汎用的に取得する必要がある。
- そのため、Gitソースのリモートデフォルトブランチ名を取得する2つの方法を記録する。

## 結果
- `git remote`コマンドを利用した主に2つのやり方は下記。
- 環境に合わせて選択

```bash
# awkの場合
# 出力 : master(or main)
git remote show origin | awk '/HEAD/ {print $NF}'

# grep / cutの場合
# 出力 : master(or main)
git remote show origin | grep 'HEAD branch' | cut -d' ' -f5
```

## 参考
- https://git-scm.com/docs/git-remote
- https://davidwalsh.name/get-default-b

[VScode] git/ GitHub を管理する方法

# 概要
Visual Studio Code を利用して、git で作業ディレクトリ(ローカルディレクトリ/リモートディレクトリ)を管理する方法についてまとめる。

# 前提知識
[ターミナルで git/github を管理する方法](https://qiita.com/ub0t0/items/04b67ac95a1adb8cbe3c)

# 環境
- Visual studio Code 1.47.2
- git 2.17.2 (ユーザー名、メールアドレスなどの初期設定済み)

# 事前準備
作業フォルダとして事前に「gitVScode」を作成し、「hogehoge.md」 を格納
![スクリーンショット_2020-09-29_14_30_24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663833/db167318-03bc-c9d6-0258-025ea13ec432.png)

# ローカルディレクトリの管理

### git init //フォルダをバージョン管理の対象にする
[In

不要なリモートブランチ削除

覚書です:+1:
※"GitFlow"の場合であればプルリク→マージし、Github/GitLab側でブランチ削除するので不要です。

プルリクでの開発現場でない際に使いました。参考になれば幸いです。
間違っている点がありましたらご指摘ください!!

[手順]
リモートブランチ削除

ローカルブランチ削除

どちらが先でも良いですが、自分のわかりやすい手順で行ってください。
もし誤って他人のリモートブランチを削除した場合は、削除してしまったブランチの人に伝えてください!
ローカルのブランチ情報が残っているので問題ありませんがびっくりすることでしょう...

## リモートブランチの削除
```
git push --delete origin ブランチ名
```

もしくは

```
git push origin :ブランチ名
```

例) git push --delete origin feature/#0001

最初は--deleteをつけて削除するのがおすすめです。
理由として、コードやオプションが間違っていたら

Git コミットを一部削除する方法

#GitHubでコミットを一部のみ削除する方法
##結論
```java:ターミナル
git reset <コミットID>
```
#コミットID?????
##commit IDの出し方
```java:ターミナル
git log
```
#git logでブワーッと下記のようになる
![git07_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/725167/27e1a404-c9fb-ce5e-f095-4d4e10591c80.png)
#上記のcommit 5daf90338461・・・5から5までのランダムな英数字混合がコミットIDです!
#削除したい該当のコミットのIDをresetすれば・・・
```java:ターミナル

あんまりターミナル好きじゃない人がGitHub CLIでどう快適になるのか検証してみた

gitの操作はSourcetreeで行うぐらい、そんなにターミナル好きじゃない自分がGitHub CLIを使ってみたら、何が快適になったか、快適にならなったのか紹介します。

[v1.1.0](https://github.com/cli/cli/releases/tag/v1.1.0)の情報です。

# 実際に使ってみて
## もともとめんどくさかったこと
- マイクロサービスで開発していて、チーム全員がほぼ全てのリポジトリをいじるスタイルなので、めっちゃいっぱいリポジトリをいじらないといけない
- 開発した内容によっては、複数のリポジトリにわたる変更があるので、プルリクをいっぱい作らないといけない
- GitFeatureFlowを採用してるので、プルリクを作る時にmaster向けのプルリクと環境ごとのプルリクを作る必要がある
- 大きな変更をした場合、作るプルリクが10を超えることもよくある
- どのリポジトリのどのプルリクがどんな状態なのか把握しづらい

## 何が快適になったの?

1. リポジトリのページを開くのが楽になった
- もともとブラウザで新しいタブ作ってu

Gitログを整形して、コミットしたファイル名をcsv形式で取得する

### 目的
gitのコミット情報をcsv形式で取得したかったが
git logの--pretty=formatのオプションでは、私が欲しかったフォーマットで取得できなかったため、 一度ログを出力した上でログの整形を行うようにした。

### 環境
OS Mac Catalina
Pycharm CE
python 3.7

### 準備
#### gitログの取得
GitBashなどのコンソールで叩くとログファイルが出力される。
```git --no-pager log --name-status --no-merges --all \
--date-order --date=format:'%Y/%m/%d %H:%M:%S' > git.log```

##### 取り込む想定のgitログ

``` git.log
commit f36da445d06d2db7b4f08a508be835f5464ded
Author: nomori
Date: 2020/10/10 23:50:29
first commit.
A .giti

git revert を git revertした

#git revert とは

一言で言えば「**既存のコミットを取り消す**」コマンドです。

似たコマンドで**git reset**がありますが、
・git reset: そのまま過去に戻す
・git revert: 「コミットを打ち消したよ」というコミットを新たに追加して、状況を戻す
という違いがあります。

両方とも、できればあまり使いたくないですね。

# revertをrevertの経緯

では、なんでrevertをrevertしたのか、ですが、

①**最新コミットが不要だったので、revertした**
②**やっぱりそのコミットは必要だった**
③**revertしたことをrevertしたい**

という経緯です。

一から書き直してもいいですが、
やっぱりまるまる一気に元に戻したい。。。

#revertをrevertする

それでは実際にどんな感じだったか、可能な範囲で晒していきます。

※ ブランチ名を仮に`fix_user_images`とします。

###1、最初のrevert

```
# "git revert [コミット番号]"で、そのコミットを無かっ

iterm を格好良くした

# itermの画面
![terminal.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610591/67f0be66-e4d0-6a0b-8dfb-9cad5529a378.png)
# やったこと
* itermのテーマをjapanesequeにした
* 背景を半透明にした
* 「コンピュータ名:」を緑色にした(詳細は後述)
* 全部白いままだとコマンドをどこで打ったのかわかりづらいので。
* 黒地に緑が個人的に格好良いと思うので
* ステータスバーでgitとファイルパスをつけた。
* 参考:[iTerm2 にステータスバーが付いた - Qiita]( https://qiita.com/delphinus/items/1748937aefeb241bdcee)
* 画像ではgitのブランチとファイルパスを設定した(他にもCPUやメモリの使用率、現在のユーザー名などを入れられるらしい)

## 「コンピュータ名:」を緑色にする方法
Preferences > Profile > Advan

peco を使ってブランチのチェックアウトを行う (リモートブランチ と ローカルブランチ)

# peco を使ってブランチのチェックアウトを行う (リモートブランチ と ローカルブランチ)

https://qiita.com/m-tmatma/items/6bb6b7c8a515a5424843 の改良版。

## gist

https://gist.github.com/m-tmatma/05b9573ad64ef67eb3662d62bb6d0a20

## リモートブランチ

### スクリプト

```
coremote () {
remotename=`echo $1 | sed -r "s#([^/]+)/.*#\1#"`
branchname=`echo $1 | sed -r "s#[^/]+/##"`

git branch | grep "..$branchname$"
if [ $? = 0 ]; then
git checkout $branchname
else
git checkout -b $branchname $remotename/$branchn