今さら聞けないGit 2021年09月22日

今さら聞けないGit 2021年09月22日
目次

【GIT】差分ファイル一覧を作成

GITでコミットAからコミットBまでの間で、削除・追加・変更されたファイルについて、それぞれの一覧を取得する方法です。
`git diff` は `–name-only` を付けると、ファイルのパスを返してくれるのです。
`git diff` は `–name-status` を付けると、ファイルのパスとステータス(削除・追加・変更)を返してくれるのです。

# 差分ファイル一覧を出力
“`bash:git
$ git diff –name-status A..B
“`

“`bash:結果
D src/◯◯◯◯/◯◯◯.◯◯◯    D  =  削除ファイル
A src/◯◯◯◯/◯◯◯.◯◯◯     A = 追加ファイル
M src/◯◯◯◯/◯◯◯.◯◯◯     M = 変更ファイル
“`

# 差分ファイル一覧を別ファイルに保存
リスト一覧を出力してファイル保存したい場合
`> list.tsv` を追加すれば大丈夫。

“`bash:git
git diff –name-status 1a9c53a..0abd2d2 > list.tsv
“`
出力結

元記事を表示

fatal: ‘origin/元ブランチ’ is not a commit and a branch ‘新ブランチ’ cannot be created from itが出た時、最初にやるべきこと。

ローカルブランチを作成しようとして、gitで

“`
git checkout -b my_branch origin/branch
“`

を正しく入力したにも関わらず
`fatal: ‘origin/元ブランチ’ is not a commit and a branch ‘新ブランチ’ cannot be created from it`
のようなエラーが出た場合、最初にやるべきことは↓↓↓

“`
git fetch –all
“`

元記事を表示

Github で、異なるリポジトリの別のブランチに push する

# やりたいこと

* リポジトリ A (例 https://github.com/example-a/a.git)
* リポジトリ B (例 https://github.com/example-b/b.git)

(注意: リポジトリは適当な例です)

リポジトリ A にある branch-a ブランチの内容を、
リポジトリ B にある branch-b ブランチに push したい。

# やりかた

1. push 元のリポジトリ A を clone し、そこに cd する

“`
git clone git@github.com:example-a/a.git
cd a
“`

2. push 先のリポジトリ B をリモートリポジトリに追加する

“`
git remote add b git@github.com:example-b/b.git
“`

3. push 元のブランチ名と、push先のリモートリポジトリ名・ブランチ名を指定して push する

“`
git push b

元記事を表示

パスワード認証廃止の解決(アクセストークン生成)

コマンドラインでgit pushしようとしたらいつもは入力しないユーザーネームを求められたので入力し、パスワードを入力したらエラーになりました。要約すると、

パスワード認証のサポートは2021年8月13日に削除されました。
代わりに個人用アクセストークンを使用してください。
https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ を参照してね。

ユーザ名とパスワードではなくアクセストークンを使用してね。
とのことでした。

“`
$ git push origin ブランチ名
Username for ‘https://github.com’: ユーザー名記入
Password for ‘https://ユーザー名@github.com’: パスワード記入
↓ここからエラー
remote: Support for password authentication was removed on August 13, 2021. Please use a personal

元記事を表示

【Git】pushしたら『error: src refspec master does not match any』が発生

##事例
・git hubにてリモートリポジトリ作成済み。
・ローカル環境で`git add`、`git commit`等使用しながらバージョン管理。
・一通り完了したので`git push origin master`を実行したところ下記エラーが発生。

“`
% git push origin master
error: src refspec master does not match any
error: failed to push some refs to ‘リポジトリパス’
“`

##解決法
`git push origin master`を下記に変更

“`
git push origin main
“`

##原因
・以前は「master」ブランチが自動作成されていたが、2020/10以降新規レポジトリを作成すると「main」ブランチが作成されるため。

→作成しているレポジトリが`git push origin master`なのか、`git push origin main`なのか気をつける必要あり。

##ところで「ブランチ」とは
履歴の流れを分岐して

元記事を表示

Gitのコマンド基礎

## ローカルリポジトリの作成

“`
$ git init
“`

※.gitディレクトリ = ローカルリポジトリ

## Git Hub上にあるプロジェクトから始める方法

“`
$ git clone <リポジトリ名>
“`

Gitリポジトリのコピーを作成する(リモートリポジトリのファイルとレポジトリ(.gitディレクトリ)がコピーされる)

## 変更をステージに追加する

“`
$ git add ファイル名
“`

“`
$ git add ディレクトリ名
“`

“`
$ git add .
“`

## 変更を記録する(コミット)

“`
$ git commit
“`

“`
$ git commit -m “メッセージ”
“`

gitエディターを立ち上げずにコミットメッセージを入力

“`
$ git commit -v
“`

ファイルの変更内容をgitエディターで確認することができる(通常はファイル名しか確認できないが、-vでそのファイルに対してどのような変更をしたのかという変更内容を確認できる)

## 現在の変更

元記事を表示

【Git】リベースの使い方と注意点

##リベースとは
ブランチの基点となるコミット(親コミット)を、別のコミットに移動すること。
コミットの履歴を一直線にしつつ、他のブランチの変更分を取り込む。

##リベースの使い方
【例】masterブランチにfeatureブランチを取り込みたい場合。

* 通常のmergeならば

“`
//masterブランチにいる状態でmergeする
$ git merge feature
“`

* rebaseを使ってからmergeするならば

“`
//まずはfeatureブランチに移動する
$ git checkout feature

//featureブランチにいる状態でrebaseする
$ git rebase master

//ここでmasterブランチに切り替えて
$ git checkout master

//masterブランチにいる状態でmergeする
$ git merge feature
“`

rebaseを行ってからmergeを行うとファストフォワードが起こり、mergeコミットは発生しない。

##リベースでのNG
`GitHubにプッシュしたコミ

元記事を表示

【Git】GitHubの草が生えないときにチェックするべきこと

![スクリーンショット 2021-09-20 7.56.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1681213/f180baf2-63dd-0414-24a8-f10c279c4869.png)

#対象者

* GitHubの草を毎日生やそうとしている人
* GitHub初心者

#目的

* 毎日草を生やして、継続力の指標にする

#実際の手順と実例
##1.コントリビューション(草)とは

![スクリーンショット 2021-09-20 7.56.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1681213/0392799b-1e67-d96a-566e-83334928ef31.png)

* GitHubのマイページで閲覧できる上記の図のこと
* GitHubにどれだけ貢献したかという指標
* 就職活動時に見られることがある

##2.コントリビューションにカウントされる条件

###1.コ

元記事を表示

ユースケースで理解するgit rebase コマンドの基本

## はじめに

エンジニアになって1年ちょっと。流石にGitにも慣れてきた!と思ってました。
つい2週間前までは・・・

これまでコミットは少ないよりも多い方がリバートしやすくて良い、と思っていたのですが
**どれがあなたが対応した内容なのかわからない**、**細かすぎて見づらい**、と言われました。 😥

わかりづらいので、`rebase`してからプッシュしてくださいと言われたのですが
なんだそれ、の状態・・・

`rebase`する際に使うコマンドは調べればたくさんヒットするのですが、
どういうコマンドで、なぜこれを使って、使うとどうなるのかがいまいち理解できませんでした。
rebaseは今までコミットしてきた内容を改変することができ、初心者が使うにはハードルが高いコマンドの印象だったのでよくわからないのに使いたくありませんでした。

そんなとき、最近とある本を読んでやっと理解した気になったので、それについて書きます。

## 説明しないこと

この記事では、rebaseコマンドのユースケースについて説明することが目的のため、
コマンドのオプションなどはあまり説明致しま

元記事を表示

既存のGitHubPagesリモートリポジトリと新たなローカルリポジトリを結びつけた際の死闘まとめ

## あらまし
予めGitHub上で作成しておいたGitHubPagesのリポジトリに対して、新たなローカルリポジトリ(今回の場合全く別の場所にあるディレクトリ)を結びつけた際に、大変な苦労と一部ファイルの損失(バックアップのおかげで全損は免れました)があったので、解決に向けて行った過程を残しておこうと思います。
動作環境は、MacOS 10.15.7 です。
ちなみに自分はGit初心者です。よろしくお願いします。

## 最初にやりたかったこと(思い描いていた理想の動作)
remoteコマンドでリモートとローカルを結びつけた後、add→commit→pushと行きたかった。。

~~~
# 1. 結びつけたいディレクトリをgit配下に置く
$ git init

# 2. リモートに結びつける(ssh接続)
$ git remote add origin git@github.com:ユーザ名/リポジトリ名.git
# 私の場合
$git remote origin git@github.com:sts11142/sts11142.github.io.git

# 3. ステージ

元記事を表示

fatal: remote origin already exists.

1. Githubコンソールからリポジトリを削除
2. Github CLIでリポジトリを作り直してpush

“`zsh
repo % git remote rm origin
repo % gh repo create
repo % git push
“`

元記事を表示

ローカルリポジトリの作成

#目次
- 目次
- ローカルリポジトリを作成する

#ローカルリポジトリを作成する
※gitのインストール済みを前提とする。

##ローカルリポジトリの作成

“`
git init
“`

上記コマンドをターミナルに記入し、実行。

結果↓

“`
Initialized empty Git repository in /Users/ユーザー名/作業ディレクトリ/.git/
“`

カレントディレクトリに.gitディレクトリが作成されます。

確認してみましょう。

“`
$ ls -la
total 0
drwxr-xr-x 3 inumaru staff 96 9 19 13:59 .
drwxr-xr-x 5 inumaru staff 160 9 19 13:58 ..
drwxr-xr-x 9 inumaru staff 288 9 19 13:59 .git
“`

この.gitの中に入っているものの中にローカルリポジトリが入っています。

確認してみましょう。

“`
cd .git
“`
“`
$ ls -la
tot

元記事を表示

Git用語集

# ブランチ(branch)

枝。ワーキングツリー。

複数の機能を同時開発、修正するのに向いている。

例:ログイン機能を実装中に、レイアウトの修正依頼が来たとする。

ブランチを用意してないと、あー今ログイン機能実装中だから、レイアウトの修正と合わせてやらなきゃってなる。

“`ruby
git swith -c ブランチ名 #ブランチ作成、作成したブランチに移動
“`

-cを大文字にしちゃうと、既にそのブランチあった場合に元のブランチ消失するから注意。

ブランチ移動だけなら-cは抜く。

# fetchとpullの違い

fetch + merge = pull

①リモートリポジトリからローカルリポジドリに引っ張るのがfetch

②ローカルリポジドリからブランチに引っ張るのがmerge

①、②をまとめてやるのがpull

pullは便利だけど、コンフリクトが起きた時に大変らしい(?)

よってfetch + mergeが無難。

使い分けは、

 ・メインブランチで作業中ならpull

・派生ブランチならfetch

# diff

変更内容を確認する

#

元記事を表示

ローカルファイルをGithubにアップロードする手順

ローカルファイルをGithubにアップロードする手順

【手順1】 Githubにリモートリポジトリを作成

![スクリーンショット 2021-09-19 3.44.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1159193/9d3e1712-93d3-9631-53a0-d523bfd63736.png)

この段階ではInitialize this repository with: はスルー

【手順2】 ローカルリポジトリ を作成

①アップロードしたいフォルダに移動

コマンド–>“`cd フォルダのパス“`

Macならフォルダをそのままドラッグ&ドロップすると自動でパスが入力できる

②ローカルリポジトリを作成

コマンド–>“`git init“`

Initialized empty Git repository・・・と出ればOK

③ステージング

コマンド–>“`gi

元記事を表示

github actionsを使って特定のディレクトリに差分があるときにテストを行う

# github actionsを使って特定のディレクトリに差分があるときにテストを行う

## はじめに
こんにちは。webエンジニア社会人をしている [ningenMe](https://twitter.com/ningenMe) です。

タイトル通り、特定のディレクトリのみの差分を検知して、それに応じてciでテストを回します。
下記のことを行います。

– 指定したディレクトリに差分があるときにのみ、ciでテストを行う
– 逆に、指定されたディレクトリに差分がないときは、ciでテストをスキップする
– ciでテストをスキップしてもマージ可否には影響させないようにする
– github actionsで処理を行う

ユースケースとしては、フロントとバックエンドが共存してるようなwebのモノレポを想定しています。

## GitHub
実際に動くソースはこちら

– [ningenMe/github-actions-diff-test-sample](https://github.com/ningenMe/github-actions-diff-test-sample)

例として

元記事を表示

Git入門にオススメのUdemy講座5選。今さら聞けないことは動画で学習せよ

この記事ではgitの操作方法をイチから学べるUdemy講座を紹介します。
gitやgithubは最早開発現場では必須とも言える存在になっていますが、意外と知らないことも多いはずです。

– add,commit,push以外のコマンドを実はよく理解していない
– そもそもgitで集団開発をしたことがない
– githubで出来ることを一度体系的に学びたい

こういった思いを持つ方に参考になる評価の高い動画を厳選しました。

## Git: もう怖くないGit!チーム開発で必要なGitを完全マスター
おすすめ度:★★★★★
・[Git: もう怖くないGit!チーム開発で必要なGitを完全マスター](https://px.a8.net/svt/ejp?a8mat=3BBPJR+AVRCOQ+3L4M+BW8O2&a8ejpredirect=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Funscared_git%2F)
### この講座で学べる内容
・Gitの根幹をなしている概念の理解 (Gitのデータ構造から仕組みを理解する)
・Gitでのチーム開発の

元記事を表示

長い命名規則に則った Git ブランチを楽に作成して切り替えるコマンド作った

## 作成するコマンド

下記で `///` ブランチ(例えば `feature/20210918/yamada/create-something`)を作成して、そのブランチに切り替えるコマンド

“`
$ gcb
“`

## 背景

少々長いブランチ命名規則に則っているプロジェクトがある。例えば下記ブランチ命名規則など。

`///`

上記ブランチ命名規則に則るブランチの例は下記。

`feature/20210918/yamada/create-something`

素直にこのブランチを作成して切り替えるには、下記の git コマンドを実行する。

“`
$ git checkout -b feature/20210918/yamada/create-something
“`

・・・ちょっと長い。

この長いブランチ名をタイピングすることを避けるために、今回コマンドを作成した。

## ディレクトリ構成

“`
~
└──cmd
└──

元記事を表示

Git LFS 利用時の Push で HTTP 413 エラーが出た時の対応

# はじめに
どうも、「バーチャルためにならない改変お姉さん」の水無月せきなです。
VRChat のために使っている Unity プロジェクトのバージョン管理を Git でしていて、合わせて Git LFS も利用しているのですが、これでたまにエラーが起きます。
フレンドさん[^1]に対応方法の1つを教えていただいたのですが忘れかけていたので、備忘録として残します。

# 環境
Windows 10 Home( 20H2 )
Git version 2.32.0.windows.2
Git-LFS /2.13.3 (GitHub; windows amd64; go 1.16.2; git a5e65851)
Sourcetree 3.4.6
リモートリポジトリ:Azure DevOps

# Push 時に LFS で HTTP 413 エラー
ローカルでのコミットはうまくいきますが、リモートへのプッシュ時に HTTP 413 のエラーが出ることがあります。
原因としては、Azure と LFS 絡みでファイルサイズの制限に引っかかているらしいです。

対応として、当該の LFS が

元記事を表示

(WSL2の)debian busterでgitのより新しいバージョンをインストールする

# 実行するコマンド

“`shell
# buster-backportsを使えるようにする
# WSL2のdebianなら最初から使えるのでやらなくて良いはず
sudo apt edit-sources # ‘deb http://ftp.debian.org/debian buster-backports main’ という行がなければ追加する
sudo apt update

# buster-backportsを指定してgitをインストールする
sudo apt -t buster-backports install git
“`

これで2021/09/18時点ではgit 2.20から2.30に上げることができました(`git restore`できるようになる)。

# backports

https://wiki.debian.org/Backports#Adding_the_repository

安定バージョンに各種パッケージの新しいバージョンを取り込むために用意されているレポジトリのようです。
手順は上記ページの内容を参考にしています。

元記事を表示

GitHubにpushできなくなった ~トークン生成で解決~

#はじめに
久しぶりにローカルからGitHubにpushしたらエラーが吐かれた。
その際の解決方法について今回まとめることにしました。

#エラー
“`git:ターミナル
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
fatal: Authentication failed for ‘https://github.com/リポジトリ名.git/’
“`

エラー文を見ると、2021年8月13日にパスワード認証が廃止されたと記載されていた。
言われてみれば、1ヶ月前くらいにGitHubにアクセスするにパスワード認証が変更あったなと思い出した:sw

元記事を表示

OTHERカテゴリの最新記事