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

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

独自ルール:gitignoreの利用

* [自分とこの環境下におけるGit & GitLabレクチャー](https://qiita.com/NeK/private/dee76f411cf2488b6873)

# gitignoreとは
## 管理対象外にしたいファイル
Gitでファイルのバージョンを管理する時,意識しなくとも管理対象から外したいファイルがある.例えば以下のようなもの.

* エディタの一時ファイル
* hoge.txt~や#hoge.txt# など最後に~が付いたり#で囲われていたりする.
* logファイル
* TeXで作ったpdf
* originalのtexファイルがあればよい
* 実行ファイル
* 大きなデータファイル
* hoge.datなど.データファイルはプログラムを動かして取得すればいいのでGitで管理しない

基本的にはファイル名(特に拡張子)で判別できる.

## gitignoreを使った管理
プロジェクトディレクトリに以下のファイルを作成する.

* .gitignore
* 頭にピリオド”.”を付け忘れないように注意

その中に

Git commitの超基礎的な備忘録

#Git commit はファイル名をちゃんと指定しよう

JavaとGitの勉強をしていて、めちゃくちゃアホみたいな話ですが

ググった内容そのままやっていて、なんでコミットされないんやろうと、

ずっと繰り返していて「ファイル名」を指定していなかっただけなのに

気づくのに15分くらいかかっていました。

そして「-m」も抜けているとviが立ち上がって10文字くらいのコメントするだけで、

10分くらいかかってしまった。。。

前職でもGitをちゃんと使った管理をしていなかったので、

日々の学習で必ず使っていこうと思います。

“`Java
// これでcommit! -mを忘れるとviが立ち上がってそこでメッセージを残さないといけなくなる!
git commit ファイル名 -m “メッセージ内容”

// commit後にpush!これでGitに反映される
git push origin master
“`

「千里の道も一歩から」の精神で続けていきます(汗)

git-svnのエラー”Can’t locate SVN/Core.pm in @INC”を解決する

##はじめに この記事の目的
Mac OSX環境で,git-svnを打った際に出るエラー“Can’t locate SVN/Core.pm in @￰INC ”の解決方法を紹介します.

##エラー内容
terminal上でgit svnと打つと下記のようなエラーが出た.(クッソ長い)

“`
Can’t locate SVN/Core.pm in @INC (you may need to install the SVN::Core module) (@INC contains: /usr/local/Cellar/git/2.27.0/share/perl5 /Applications/Xcode.app/Contents/Developer/Library/Perl/5.18/darwin-thread-multi-2level /Library/Developer/CommandLineTools/Library/Perl/5.18/darwin-thread-multi-2level /Library/Perl/5.18/darwin-thread-multi

Gitの流れ(2)

#Gitの大まかな流れ(pushまで)#
今回は実際にGit hubを使っていきます。

##リモートリポジトリの新規追加##

git hubにプッシュするためにまずリモートリポジトリの新規追加をしていきます。

まず自分のページに行って**Repositories**という項目があるのでクリックして**右側の緑のNew**というボタンがあるのでクリックしてください。スクリーンショット 2020-06-09 17.04.11.png

↑の様なページまで行けたら**Repository name**に好きな名前を記入してください。
それ以外は変更を加える必要はないです。

そして**create**を押したらリモートリポジトリ作成完了です!
次に**Code**というページに飛ぶと思います。
そこで**…or p

Gitでcommitするbranchを間違えたときの対処まとめ

コードを書いていてよくやらかしがちなのが、branch切り替えわすれたままcommitしてしまうケース。

特に`master` で直接書いてしまって「やっべやらかした」はおそらく結構な人たちが経験することと思われる。

本エントリではその修正法をおおまかに2つに分けて紹介する。

ただし、pushしてしまった場合はもう無かったことにはできない場合が多い(CIをやらせている場合はまず不可能)ので、大人しくRevertするかReposのメンテナに相談すること。

# commitが1つだけの場合

cherry-pickすると結構面倒なので、commitがまだ1つで済んでいる場合はSoftResetしてからcheckoutするのが一番簡単かつ速い。と思う。

ちなみにSoftResetとはファイルの変更を保持したままcommit直前の状態に戻すことを指す。

“`bash
# HEADの1つ前の状態に変更を保持したまま戻す
$ git reset –soft HEAD\^

# 正しいbranchにcheckout
$ git checkout hogefuga#846

# 同

Githubに変更のpush方法(前編)

皆さんこんにちは!今日は、既にGitとGithubに登録されているファイル、又はフォルダに変更を加えた時に、その変更をpushする方法を紹介します。めちゃくちゃ基本的な事しか書かないのでよろしくお願いします(笑)
また、今回はMacを想定した方法となっています。

##ローカルリポジトリに変更をコミットする方法
 まず始めに大まかな流れを説明します。

 **1, ファイルに変更を加える。
 2, `git add`コマンドでステージングエリアに追加
 3, `git commit`コマンドでローカルリポジトリにコミット**

 それでは具体的に解説していきますね:point_right:

 ここではHelloディレクトリに変更を加えたと仮定します。
 terminalで`cd`コマンドを使いHelloディレクトリまで移動します。
 因みに、`cd`は **’current directory’** の略で、currentには**「現在の」**という意味があります。

###`git add`でステージングエリアに追加

 **`git add`** コマンドでステージングエリアに

Gitの流れ(1)

#Gitの大まかな流れ(コミットまで)#

初めて投稿します。自分のアウトプット目的で記事を作成していきます。
前提としてgitやテキストエディタがインストールされているものとします。

##用語の確認##
・**ワークツリー**
自分達が作業しているディレクトリの場所指します。

・**ステージする**
特定の変更内容をindexに登録する

・**ローカルリポジトリ**
ローカル環境でのプロジェクトのファイルやディレクトリの変更内容を記録するエリアのこと

・**リモートリポジトリ**
サーバに配置されており、複数人で開発プロジェクトを共有する場所

##目的のディレクトリへ移動##
まず今回扱うディレクトリへ移動します。
自分はtest_developというディレクトリに移動します。
ターミナルで移動するコマンドは**cd**を使います。

“`terminal
cd Desktop/test_develop/
“`

次にこのファイルの中身を見てみます。確認するコマンドは **ls**です。

“`terminal
ls
“`

まだ何も作成していないので何も表示されな

gitignoreを使わずローカルのみ追跡対象から外したいファイルを設定する

# How to do it

1. .git/info/excludeファイルに以下の1行追加

`root/to/path.ext`

2. インデックスをアップデート

`git update-index –assume-unchanged `

3. 確認
`git ls-files -v`
以下の表示になればOKです

“`
h root/to/path.ext
“`

## How to undo it

1. .git/info/excludeファイルに以下の1行を削除
`root/to/path.ext`

2. インデックスをアップデート
`git update-index –no-assume-unchanged `

3. 確認
`git ls-files -v`
何も出なければOK

以上

【個人用】

随時更新
#ローカルリポジトリとリモートリポジトリを紐付ける
1.gitHubでリポジトリ作成
→作成するとURLが発行される。
2.ターミナルで以下のコマンドを実行

“`
$ git remote add origin 先程コピーしたURL
$ git remote
>> origin
“`
originと出力されれば完了。

チェリーピックしたコミットのCommitDateをAuthorDateに合わせる

チェリーピックすると、CommitDate はチェリーピックした日時になる。
ブランチの作り直しなどで CommitDate を AuthorDate にしたいときは、次のようにする。

## 手順
チェリーピックを AuthorDate の順に行う。

都度、次のコマンドを実行。

“`sh
$ git rebase HEAD~ –committer-date-is-author-date
“`

意図通りにできているかは `$ git log –pretty=fuller` で確認する。

git rebase で FIRST COMMIT を後から追加する

# はじめに
諸事情で README.md のみの FIRST COMMIT が必要になった。
後から歴史を改変し FIRST COMMIT を履歴の最初にcommitする方法について記載する。

# 以下手順

1. これまでの歴史を無視したブランチを新規に作成する
“` git checkout –orphan [ブランチ名]“`

2. リポジトリ内の既存のファイルがインデックスに追加された状態になるので、“`git rm –cached“` でまとめてインデックスから削除。(ファイルも削除しておく)

3. お目当の README.md を作成し、FIRST COMMIT を作成

4. 対象ブランチへcheckout
“`git checkout [改変したいブランチ]“`

5. git rebase で FIRST COMMIT を取り込む
“` git rebase –onto [1のブランチ名] –root [4のブランチ名]“`

6. CONFLICT の解決
履歴にファイル削除されてたりすると、CONFLICTが生じるので、
“`gi

AWS EC2 AmazonLinux2 Gitをインストールする

# 目的

– AmazonLinux2インスタンスにGitをインストールする方法をまとめる。

# 実施環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.5) |
| ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| プロセッサ | 2 GHz クアッドコアIntel Core i5 |
| メモリ | 32 GB 3733 MHz LPDDR4 |
| グラフィックス | Intel Iris Plus Graphics 1536 MB |

– ソフトウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| AWS EC2インスタンス | AmazonLinux2 | こちらの方法を用いてイメージからインスタンスを作成→[AWS EC2 をMacで使ってみよう!](https://qiita.com/miriwo/items/a1ab84c098008e43d042) |

BacklogのGitをSSHでクローンする方法

# やりたかったこと(できなかった)
自分以外の人も使う環境にGitのリポジトリをクローンして使いたい。
他の人も使うからパスワードは使わずに鍵でクローンしたい。
[GitHubでもある方法をBacklogでもやりたい。](https://qiita.com/ponsuke0531/items/0060a38b9d93b7315b65)
が、鍵は個人にしか設定できず・・・同じ鍵はほかの人で設定しようとするとエラーになって設定できなかった。
残念。
SSHの方法だけメモしておく。

# BacklogのGitをSSHでクローンする方法
– 環境
– CentOS Linux release 7.8.2003 (Core)
– git version 1.8.3.1

## ssh-keygenで鍵を作る

“`bash
# 1. RSA鍵のペアを作成する
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ponsu

システムGitでSourceTreeのPuTTYで設定したSSHを使う

## 概要

### 環境

– Windows 10
– SourceTree 3.3.8

### やりたいこと

– SourceTreeの内臓GitではなくシステムGitを使いたい
– SourceTreeのシステムGitでSourceTreeのPuTTYで設定したSSHを使いたい
– SourceTreeのPuTTYとは別でSSHの設定をしたくない

## 設定方法

### 前提条件

– SourceTreeの内臓Git(Embedded Git)とは別で、Gitをインストールしている(System Git)
– SourceTree上でSSHの設定を済ませている(GUI上でSSHが利用できている)

### SourceTree内のplink.exeのパスを控える

SourceTreeで動作しているPuTTYの`plink.exe`を探す。
SourceTreeで使われているPuTTYは`tools\putty`にある。
SourceTreeはバージョンによってインストール先が異なる。
自分の環境では`C:\Users\{名前}\AppData\Local\Sourc

Git専用SSH公開鍵の作成

* [自分とこの環境下におけるGit & GitLabレクチャー](https://qiita.com/NeK/private/dee76f411cf2488b6873)

通常,SSH公開鍵の作成は[ここの手順](https://qiita.com/NeK/items/2b02b271ce4040610fc8#gitlab%E4%BD%BF%E7%94%A8%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E8%A8%AD%E5%AE%9A)で行う.この場合の公開鍵は他のサービスでも使うかもしれず共用のものとなる.
ここではGit専用のSSH公開鍵を作成し,仮に再作成した場合でも他のサービスに影響がないようにする.

# SSH設定
## SSH公開鍵の作成
鍵タイプrsa,鍵のファイル名をgitlab(公開鍵:gitlab.pub,秘密鍵:gitlab)とした場合のコマンドは以下のようになる.

“`terminal
$ ssh-keygen -t rsa -f gitlab
“`

rsaはデフォルトなので-t rsaはいらないかもしれない.
以下のコ

ひとりGit 仕組みと導入編

#プロローグ
テキスト単位で色々資料を作成していると思ったより散らかってきたので、もしやこれはついに「バージョン管理」というやつの出番なのではと閃きました。
自分はSubversionぐらいしか使ったことがないのですが、勉強を兼ねてGitを一人で使ってみたいと思います。

#Gitの仕組み
まず、Gitについて仕組みを理解しておきます。
PCとサーバで構築する場合の構成です。
1.png

ちなみに今回は、サーバはなしにして、PC内にremoteリポジトリを構築して、PC一台でGitを構成したいと思います。

#導入
Gitを導入していきます。
なお、OSはWindows10 homeです。

[ここ](https://git-scm.com/downloads)からGitのインストーラをダウンロードします。
<

Jenkinsジョブで “git clone ” した後と同じ状態にするには

– ソースコード管理
– Git
– リポジトリ
– リポジトリURL : https://~~.git
– 認証情報 : free
– 名称 : null
– Refspec : null
– ビルドするブランチ
– ブランチ指定子 (空欄はすべてを指定) : refs/heads/master
– リポジトリ・ブラウザ : (自動)
– ビルド開始前にワークスペースを削除する : on
– ビルド
– シェルの実行
– シェルスクリプト :

“`
git checkout master
git remote set-head origin master
“`

Git基礎的コマンドメモ

##init
gitの環境作り

“`
git init
“`

##status
状況の確認

“`
git status
“`

## log
ログの確認

“`
git log
“`

##add
インデックスに登録

“`
git add static/style.css #ファイル指定
git add . #全てのファイル
“`

##reset
取り消し

“`
git reset HEAD #addの取り消し
git reset HEAD index.html  #ファイル指定
“`

##commit
コミット

“`
git commit -m “Message”
“`

##checkout

“`
git checkout HEAD^ #一個前に戻る
git checkout “HEAD^” #windowsはダブルクォーテーションで囲む
git checkout -b ブランチ名  #ブランチを作成及び切り替え
git checkout ブランチ名 #ブランチの切り替え
git checkout -f ブランチ名 #

かゆいところに手が届くgit stash

# 利用が想定される状況
 ・コミットする前に別の機能を実装する必要ができた
 ・今のコードの差分を別のコミットの後に回したい
 などが想定されます。
 
 そんな時に便利なのがgit stash 今ある差分を一時的に退避させることが可能です。

# 利用手順
 

“` ターミナル
$ git stash
Saved working directory and index state WIP on 02-setup: 8e4211a edit model
“`
でコードを退避させ、別のコミットなどが終わった段階で、戻したいディレクトリに移動し、以下のコマンドでインデックスを確認します。

“` ターミナル
$ git stash list
stash@{0}: WIP on 02-setup: 8e4211a edit model
“`

このstash@{0}が先ほど退避させたコードの番号で、複数あれば、stash@{1}などが確認できる。
今回は、直近で退避したstash@{0}を戻したいので以下のコマンドで戻せます。

“`
$ git stash apply st

Rails Tutorial 第6版 学習まとめ 第5章

###概要
この記事は私の知識をより確実なものにするためにRailsチュートリアル解説記事を書くことで理解を深め
勉強の一環としています。稀にとんでもない内容や間違えた内容が書いてあるかもしれませんので
ご了承ください。
できればそれとなく教えてくれますと幸いです・・・

出典
[Railsチュートリアル第6版](https://railstutorial.jp/)

###この章でやること
以前作ったビューにスタイルが適用されていないのでBootstrapで整える。
パーシャルやAssetPipelineなどのビューまわりの機能などについても学習する。

###構造を追加する

CSSをあまり勉強していなくても簡単に洗練されたデザインを適用できるのがTwitter社が公開しているBootstrap
Bootstrapをうまく活用してスタイルを適用していく。

####ナビゲーション
要点となるコードをかいつまんで説明する。

・“`[if It IE 9]“`:条件付きコメントと呼ばれる。IEでサポートされている。今回はHTML5shimをIE9以下に読ませるために使用。

・`