今さら聞けないGit 2022年06月22日

今さら聞けないGit 2022年06月22日

🔰【Win/Mac】Gitコミットに署名を付けよう!✍

Gitのコミットに署名をつけるための手順です✍🥒

:::note
署名付きコミットは、ログ上にバッジが付きます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142709/255c1504-41a9-7d08-dec1-1c123f0e91c0.png)

– Unverified – 何かが間違っていて認証に失敗したコミット
– Verified – 本人確認に成功したコミット(あるいはブラウザからGitHub上で行われたコミット)
– バッジなし – 署名がついていないコミット

署名付きコミットの検証について
[About commit signature verification – GitHub Docs](https://docs.github.com/ja/authentication/managing-commit-signature-verification/about-commit-signature-verification)(English)
:::

## 前提

– Wi

元記事を表示

【Golang】Gitコミットのrevision番号(commit id)を取得するには

# Go 1.18以降でBuildInfoを使う場合
[BuildInfo](https://github.com/golang/go/blob/9cec77ac11b012283e654b423cf85cf9976bedd9/src/runtime/debug/mod.go#L40-L47)のSettingsにある”vcs.revision”を取得。

“`go:main.go
package main

import (
“fmt”
“runtime/debug”
)

func main() {
var rev string
info, _ := debug.ReadBuildInfo()
for _, s := range info.Settings {
if s.Key == “vcs.revision” {
rev = s.Value
}
}
fmt.Printf(“revision: %s\n”, rev)
}
“`

“`sh
$ go mod init sample
$ git init && git add . && git c

元記事を表示

入社3ヶ月目の僕が、実務で使用したGitコマンドの流れ

フロントエンドエンジニアとして入社し、働くこと3ヶ月。
主に、実務(サイトの修正案件)で実際に使用したGitコマンドたちをまとめました。

### ローカルの作業ディレクトリに移動
~~~
cd project/released/general/
~~~

### リモートリポジトリをローカルにクローン
(GitLabの対象ディレクトリをまるっと複製 = cloneボタンを押下しhttpsの方を選択する)
~~~
git clone ここにURL
~~~

### 今いるブランチを確認(masterブランチにいることを確認)
~~~
git branch
~~~

## masterブランチを最新の状態にする
リモートリポジトリの最新の履歴の取得だけを行う
※**「–prune」オプション**
リモートで削除されているリモートブランチを削除してくれるコマンド
~~~
git fetch – – prune
~~~

### ブランチ間を移動
~~~
git checkout master
~~~

### ブランチの変更内容を作業ディレクトリに反映
~~~
git pull
~~~

元記事を表示

【Git】.gitignoreって難しい Part3 – .gitignoreの作成未経験者が、ある程度の理解できるまで –

# .DS_Storeについて
Macのシステムが各ディレクトリ(Finder)に勝手に生成する隠しファイルです。
こちらのファイルは、gitで管理しないのが一般的です。
## 補足
上記の通り、Macのみで起きる現象のため、プロジェクトの.gitignoreではなく、.gitignore_globalで設定をしてください。
.gitignore_globalPCに存在するGitリポジトリの設定が行えます。
# 設定方法
## .gitignore_global ファイルを作成
viコマンドで編集していきます。
“`
$ vi ~/.gitignore_global
“`
## .gitignore_globalファイルに.DS_Storeを追加
“`
.DS_Store
“`
## Gitの設定を追加
“`
$ git config –global core.excludesfile ~/.gitignore_global
“`
### 設定を確認
“`
$ g

元記事を表示

自分が何を変えたのかがわかる

# 自分が何を変えたかを見る
## HEAD、ステージ、作業ツリーの差を表示する
“`
git diff
git diff –staged
git diff HEAD
“`
### git diff
作業ツリーとステージの差を出力する。
“`
**************@mbp training % git diff
diff –git a/.idea/workspace.xml b/.idea/workspace.xml
index aa9c133..2da7628 100644
— a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,7 +4,9 @@

元記事を表示

Githubとは?

# Githubについて

端的に言うとGithubは、Gitの仕組みを利用して、インターネット上でのスムーズな共同作業を可能にしたサービスのことで、バージョン管理をすることができる。

#### では、バージョン管理とは何か?

変化するファイルの状態のことを「バージョン」という。つまり、ファイルの変更をバージョンとして記録して、記録した地点へいつでも戻れる仕組みを作っているのが、Gitである。

バージョン管理ができることによって、開発者が複数人いても、ファイルの最新状態や変更履歴をわかりやすく保てるのがメリット。

# Gitの大まかな仕組み

上記で述べた通り、Githubはバージョンを管理しているが、変更の差分を記録するのではなく、スナップショットを保存する仕組みをとっている。

スナップショットとは、ある時点でのソースコードや、ファイル、ディレクトリ、データベースファイルなどの状態を抜き出したもののこと。これによって、ファイルなどの差分を計算しなくて済むため、複数人での開発のスピードをあげることができる。

# Githubの概要図

![Github仕組み.jpg]

元記事を表示

GitHubにSSH接続する際に使用する秘密鍵を指定する

# 1.はじめに

A リポジトリで作業するときは秘密鍵 A を使って B リポジトリで作業するときは秘密鍵 B を使うといったケースが先日ありました。
取り急ぎコマンドをググったのでメモとして残しておきます。

# 2.コマンド

コマンドは以下です。

“`sh:
# pull 例
$ git -c core.sshCommand=”ssh -i {秘密鍵} -F /dev/null” pull
“`

`pull`以外も同様です。

# 3.さいごに

もう少し設定ファイル等で綺麗に管理したいのですがやり方は確認中です。

元記事を表示

よく使うGitコマンド

> 自分用メモ

## ローカルの差分内容が正しいのでリモートに上書きしたいのにエラーが出る場合
“`
git push -f origin hoge
-f はforce(強制)オプション
“`
## リモートの差分内容が正しいので、 ローカルに上書きしたいのにエラーが出る場合
“`
git fetch origin hoge
=リモートの当該ブランチの内容を取ってくる

git reset –hard origin/hoge
# reset(取り消し=上書き)
# –hard(最新という意味)
# リモートにある当該ブランチの最新状態でローカルを塗りつぶす(わりと強力なコマンド。一回実行すると取り消せない。取扱い注意。どのブランチのどのバージョンを持ってくるかちゃんと確認する)
“`
– 参考
– [www-creators.com/archives/1097](www-creators.com/archives/1097)

## 間違えてコミットまでしてしまったとき、そのコミットを取り消したいとき
“`
$ git reset –soft HEAD^
“`
#

元記事を表示

git rebase でコンフリクトした場合の解消手順

### この記事が役立つ状況

* 作業ブランチは、pushしていない
* 作業ブランチで `git rebase develop` をしたらコンフリクトした

## rebaseの手順

作業ブランチは、(work)であるものとする。

1. 作業ブランチに未コミットの修正がない状態にする
1. `git add -A`
1. `git commit -m “comment”`
1. コミットする粒度ではない場合 `git stash`
1. develop(rebase先)を最新にする
1. `git checkout develop`
1. `git pull`
1. rebaseする
1. `git checkout work`
1. `git rebase develop`
1. ここで、コンフリクトしてしまい、警告が出たものとする
1. コンフリクトしたファイルを確認する
(警告メッセージを読めば書いてあるが、gitbashだと色が付くのでこちらの方がわかりやすい)
1. `git status

元記事を表示

SourceTreeでGitHubのPersonal access tokensを利用する

# エラー内容

SourceTreeを使ってGithubにpush使用とすると、下記のようなエラーメッセージが出ました:
> remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.

Personal access tokenを使って認証していないのが原因のようです。

# 解決法
1. SourceTreeのウィンドウ左上、歯車の形の「設定」をクリック
2. リモートリポジトリパスのを選んで編集
3. パスを次のように設定する
Personal token が 123456 だとして、GithubのURLが https://github.com/hogehoge/hoge だとすると、
“`
https://123456@github.com/hogehoge/hoge.git
“`
Personal tokenの取得については、https://codesapuri.com/articles/31

元記事を表示

はじめてのGit

“`
___________ __
\_ _____/ | | _______ ____
| __)_ ______ | |/ /\__ \ / \
| \ /_____/ | < / __ \| | \ /_______ / |__|_ \(____ /___| / \/ \/ \/ \/ ``` こんにちは。E-kan株式会社の畠山です。 今更かもしれませんが最近`Git`を使うようになったのでよく使う言葉やコマンドなどを備忘録です。 `gitbash`でのコマンドラインの操作での気になった部分を軽くまとめているので雰囲気を伝えるメモレベルです。 # リモートリポジトリーとローカルリポジトリー **リモートリポジトリー**:みんなのリポジトリー、push時緊張。 **ローカルリポジトリー**:自分だけのローカルのリポジトリー、結構好きに出来る。戻すのも

元記事を表示

gitインストール方法

# gitインストール方法

1. 以下のURLにアクセスする。
– http://git-scm.com/download/win
2. `Click here to download ` を押下する。

![git01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449867/ce744806-1ca3-9c73-bf1c-ba01b97d575e.png)
3. ダウンロードが完了後、フォルダを開く。

![git02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449867/759ab360-7681-6018-8c36-6b17f61c753f.png)
4. `Git-2.35.1-64-bit.exe` を起動する。(ダブルクリック)

![git03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449867/

元記事を表示

Your Ruby version is 2.7.3, but your Gemfile specified 2.7.5 と表示されるエラーの解決

はじめに

ロリポップマネージドクラウドを使い自作アプリをデプロイしようと思い

`git push lolipop master`

を行うと

`remote: Your Ruby version is 2.7.3, but your Gemfile specified 2.7.5`

というエラーが起きた。

エラーについて

エラー内容を直訳すると

`あなたのRubyは2.7.3なのに、Gemfileには2.7.5となっている。`

という事だがGemfileを確認すると2.7.3になっており、他にもGemfile.lock、.ruby-versionを確認しても2.7.3だった。

他サイトなどを参考にし、

`bundle install` や `rbenv local 2.7.3`

などを行っても解決しなかった。

エラー解決

GemfileやRubyのバージョンを変更した際に、gitにコミットしていないことが原因であった。

そこで

`git add .`

`git commit -m “”

元記事を表示

gitのコンフリクト解消方法となぜ起こってしまうのか

## なぜ記事を書こうと思ったか
サービスの開発中にブランチでのコンフリクトが発生した為、修正方法の備忘録として残す為。

## そもそもコンフリクトはどの状況で起こる現象?
 簡潔に言うと、同じブランチから派生した複数のブランチで同じファイルを編集した際に、コンフリクトが起きる。
 hogeファイルを所持しているmainブランチとmainブランチからチェックアウトしたAブランチ、Bブランチがあるとします。Aブランチでhogeファイルを編集し、mainブランチにmergeした際に、Bブランチでもhogeファイルを編集し、mainブランチにmergeしようとした場合に、コンフリクトが生じます。

## 対処方法(備忘録の為、簡単に書きます笑)
– 前提条件(コンフリクトを発生させる条件)

1.hogeファイルを所持するmainブランチの作成
hogeファイルの中身
“`
あいさつの種類
①おはようございます。
“`

2.mainブランチから派生したAブランチの作成
hogeファイルの中身
“`
あいさつの種類
①おはようございます。
②こんにちは。
“`

3.mainブ

元記事を表示

git pullとgit fetchの差異

git pullとgit fetchの差異

pullとfetchが似た機能をするコマンドのようだが違いは以下の通りである。

なるべくfetch後、pullをしながら2つを適切に使用することが良いという。

1. git fetch

ローカルファイルには触れず、襟の変更内訳だけを確認する場合、使用

ローカルディレクトリに変更された内訳を持ってこない


2. git pull

ローカルファイル+羽根変更内訳の確認

ローカルディレクトリに変更された内訳を取得(変更された内容を併合)

変更された内訳と同じファイルに触れた場合、衝突発生

元記事を表示

Git flowについて

배달의 민족(우아한 형제들) 開発ブログの内容を参考に作成しました。

1.定義

プロジェクトを進めるにあたって、ブランチ管理を有効にするブランチ別の役割を区分しておいた概念を適用させたものである。

2.図式化の画像(ネット検索)
![git-flow_overall_graph.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2662676/e2246b01-1a76-195b-3e66-21eb475b540d.png)

3.BRANCHの役割

1)develop

developブランチは、名前からも分かるように開発に対するブランチである。 開発の進行はdevelopブランチで行われ、全般的なすべての開発がここで行われる。

2)feature

フィーチャーブランチはdevelopブランチから派生するブランチである。 フィーチャーブランチは、developの小単位開発だと考えればいいが、特定機能/関数などで大きさはユーザによって異なる特定機能を開発するためのブランチだと考えればよい。

元記事を表示

おすすめgit alias: git tree

新卒の頃からお世話になっている、最も多用しているgit aliasを少しカスタマイズしたのでついでに共有。

## alias

“`
[alias]
tree = log –graph –format=\”%C(auto)%h %C(blue)%an %C(auto)%d %s\”
# treeの短縮
t = log –graph –format=\”%C(auto)%h %C(blue)%an %C(auto)%d %s\”
# カレントブランチのコミットのみ
tf = log –graph –format=\”%C(auto)%h %C(blue)%an %C(auto)%d %s\” –first-parent
# 全てのブランチ
ta = log –graph –format=\”%C(auto)%h %C(blue)%an %C(auto)%d %s\” –all
“`

## 出力

![スクリーンショット 2022-06-19 0.29.54.png](https://qiita-image-st

元記事を表示

.gitignoreでフォルダの構造のみを保持したい場合のより良い書き方

例えばWebサイトのバックエンドでアップロードされたファイルを`/storage/`フォルダ内に入れているとする。その場合、Gitではアップロードされた`/storage/`内の各ファイルは無視したいが、`/storage/`フォルダ自体は残しておきたいということがよくある。しかしGitで管理できるのはファイルだけなので、ファイルが一つも入っていないフォルダをGitで表現することはできない。そのために`.gitkeep`というダミーの空ファイルを作成してGitで管理することでフォルダを保持するということが頻繁に行われている。

ここではそのような場面でこれまでよく解説されている`.gitignore`の書き方とは異なる、より柔軟で単純な書き方を発見したので解説する。

# 結論
1. 保持したいフォルダ構造を作成。ここでは`/storage/`フォルダ以下のフォルダ構造をgitで保持したいとする。
1. 各末端のフォルダに空のファイル`.gitkeep`を作成。
1. `.gitignore`に以下を書く。

“`:.gitignore
/storage/**
!/storage/*

元記事を表示

venvのpython仮想環境をgitで共有する

“`terminal: terminal
mkdir test
cd test
mkdir a.git
cd a.git
git init –bare
cd ..
git clone a.git
cd a
curl -o .gitignore https://raw.githubusercontent.com/github/gitignore/main/Global/VirtualEnv.gitignore

python3 -m venv .venv
source .venv/bin/activate
pip install pip-autoremove matplotlib
pip freeze > requirements.txt
deactivate
git add -A
git commit -m “initial commit”
git push

cd ..
mkdir b
cd b
git clone ../a.git
cd a

python3 -m venv .venv
source .venv/bin/activate
pip install -r requ

元記事を表示

VSCodeの拡張機能「GitLens」で快適なGitライフを手に入れよう!

### はじめに

– 以前の記事である[GitHubとVSCode、vscode-revealを使って、知識のストック→アウトプットをシームレスに行える環境を整えた話](https://qiita.com/yoyoyo_pg/items/413729f47854af2e644b)の続きです
– 前回の記事ではあまり触れていなかった、VSCode拡張機能の`GitLens`についての使い方解説です

### 対象

– VSCode上でラクにGit操作をしたい方

### 前提

– Gitの基本的な使い方が分かること
– Git、VSCodeがインストール済であること

### VSCodeデフォルトの場合
![2022-06-18-15-22-34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411902/ced4b4bb-a85d-ddfa-807a-d0c5bc9d3e1b.png)
![2022-06-18-15-20-31.png](https://qiita

元記事を表示

OTHERカテゴリの最新記事