逆引き Git

Posted by muchag | Git |
初回投稿:2015-12-16 (水) 11:43:05 | 最終更新:2016-01-05 (火) 16:34:16

Git の逆引き情報は、結構あるので助かる~。
自分がぶつかった壁を随時追加していきまする。

ブランチを切り替えたら、変更内容が引き継がれている

BranchA で、FileX を編集をして BranchB へ切り替えたら、
FileX の編集内容が引き継がれている。

原因

BranchA での変更をコミットしていないから。

解決策
  1. BranchA でコミットをしてから、ブランチを切り替える
  2. BranchA で Stash してから、ブランチを切り替える
参考サイト

@IT:Gitでbranchを変えるときに、ファイルの変更はどう扱えばいいのか?

Posted by muchag | Git |
初回投稿:2015-12-16 (水) 11:43:05 | 最終更新:2016-01-05 (火) 16:34:16

SSH

Posted by muchag | Eclipse |
初回投稿:2015-12-10 (木) 20:09:30 | 最終更新:2015-12-11 (金) 20:05:56

【環境】
Eclipse:Mars.1 (4.5.1) PHP
EGit:4.1.1.201511131810-r
OS:Windows7 SP1 64bit
公開鍵の設定
  1. [ウィンドウ]-[設定]
  2. [一般]-[ネットワーク接続]-[SSH2]
  3. [鍵管理] タブを選択
  4. [RSA 鍵の生成]
  5. [秘密鍵の保管]
    1. [パスフレーズ保護なしでこの秘密鍵を保管しますか?]-[OK]
    2. [保存ファイル名] 任意
  6. [OK]
複数鍵の併用

リモートリポジトリが複数ある場合、公開鍵を複数併用する必要が出てくる。
(あ、実は使いまわしてもいいのかしらね。。。試してない)

そんなときの対応法。

設定

公開鍵の保存ディレクトリ %HOME%/.ssh にある config ファイルを用いて設定。

ディレクトリ

デフォルトは、下記の通り。

C:\Users\(ユーザー名)\.ssh
ファイル

そして、私の場合は、同ディレクトリ内に config ファイルがなかったので
テキストファイルを配置してリネーム。

C:\Users\(ユーザー名)\.ssh\config
拡張子

拡張子は、なし。
当然、Windows から警告が出るけど、OK。

書式
  1. Host bitbucket-account1 # 名称自体は任意だけど、後で Eclipse へ入力するので、それを踏まえて命名
  2.   User git
  3.   HostName bitbucket.org
  4.   IdentityFile ~/.ssh/account1_key_file_name
  5.   IdentitiesOnly yes
  6.  
  7. Host bitbucket-account2
  8.   User git
  9.   HostName bitbucket.org
  10.   IdentityFile ~/.ssh/account2_key_file_name
  11.   IdentitiesOnly yes
Eclisep

Git リモートリポジトリからプロジェクトをインポート
[ソース Git リポジトリー]-[ロケーション]-[URI] に
git@bitbucket.org:username/ripositoryname.git
と入力していたところを
bitbucket-account1:username/ripositoryname.git
と入力する。

エラー

頑張って設定したのに、下記エラーが出た。 😥

トランスポート・エラー: リモート・リポジトリー参照を取得できません。
ssh://git@bitbucket-Jyukucho/guinnessvillage/common-php.git: conq: repository access denied.

英語のエラーメッセージは Cannot get remote repository refs となるみたい

Google 先生に質問をしてみると、認証エラーということで、
SSH 公開鍵のセッテに問題があるのかと、何度もやり直しをしてみたけど
さっぱり直らない。

解決

最終的には、PC の再起動で正常に動作した。。。虚しい。。。
開発 PC なので、メモリを食い過ぎているのかしらね~。

おまけ

上記エラーについて、あれこれ調べている間に、
色々な参考情報を入手したので、メモ。

きのふよりけふ、けふよりあした:【git】egitをつかってみて
→ローカルとリモート(GitHub)でリポジトリ名が異なるとプッシュできなかったみたい
→私は試しに異なるリポジトリ名にしてみたけど、問題なくプッシュできた(Bitbucket)

mziの日記:Eclipse で github : Pushできない- Windows
→.ssh/known_hosts が更新されなくて、プッシュできなかったとのこと

パーミッション問題

.ssh/ 関連には、パーミッションの既定があるそうで

  • .ssh/ ディレクトリは Users の所有にしなければならない
  • .ssh/config のパーミッションは 0600 でなければならない
  • Windows では、パーミッションは関係ない。そもそも [属性] の設定しかできない

というような記述を見かけた。
調べてもいないし、勉強もしていないので、本当かどうかもわからないから
ひとまずメモ。

Windows 8でcygwinのSSH秘密鍵を使うとPermissions 0660 too openと怒られる
Windows7 Home SP1 64bit のコマンドプロンプトで

  1. $ chgrp -R Users ~/.ssh

としたら、そんなコマンド知らないよ~と言われた。
DOSEI日記:SSH の config のパーミッションエラーを解決する

HOME 問題

Windows の場合、HOME とは、前述の通り、デフォルトで下記のように設定されているらしい。

C:\Users\(ユーザー名)

つまり、秘密鍵の保存場所を独自にしたければ、この辺の設定をしなければならない。
また、HOME の場所を変更したければ、環境変数の登録が必要とのこと。

設定ファイル

.ssh/config は、端末個別の設定ファイル。
ssh_config は、サーバー全体の設定ファイル。
.ssh/config の内容が優先される。
ワイルドカード(*)を利用できる。
それマグで!:.ssh/config でSSH設定を活用する方法。

URL(URI)書式

Eclipse へ URI を設定する場合、下記どちらでも OK だった。
git@bitbucket-account1:username/ripositoryname.git
bitbucket-account1:username/ripositoryname.git

踏み台サーバーを介する場合

詩的私的雑記帳:ssh/configの書き方と踏み台サーバを利用した多段sshログイン,多段scp

リファレンス

入門OpenSSH
付録
4.7. 個人用の設定ファイルでさらに快適に

Posted by muchag | Eclipse |
初回投稿:2015-12-10 (木) 20:09:30 | 最終更新:2015-12-11 (金) 20:05:56

MySQL の操作

Posted by muchag | Shell Script,さくらインターネット |
初回投稿:2015-12-10 (木) 11:35:33 | 最終更新:2015-12-12 (土) 16:29:20

【環境】
さくらインターネット:プレミアム
エラー
Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’

こんなエラーが出たとき
他の場合であれば、ちゃんとした対応が必要みたいだけど
さくらインターネットの場合は、MySQL が別サーバーになっているため
ホストの設定をしていないと、このエラーが出る。

つまり、ホストの設定を追加してあげればよいだけ。

ログイン
  1. $ mysql -h mysql***.db.sakura.ne.jp -u user_name -p
mysqldump
保存場所

mysqldump コマンドを実行したときのデフォルトの保存場所は

/home/user_name

なので、mysqldump などというディレクトリを1つ追加して
そちらへ保存されるようにする。

保存ファイル名

当然、指定するファイル名にも、パスを追加。

mysqldump/hoge.dump
コマンド
  1. $ mysqldump -h(ホスト名)-u(DB ユーザー名)-p(データベース名)(テーブル名:省略可)> mysqldump/hoge.dump
  2.  
  3. $ mysqldump -h mysql***.db.sakura.ne.jp -u user_name -p database_name > mysqldump/hoge.dump
Posted by muchag | Shell Script,さくらインターネット |
初回投稿:2015-12-10 (木) 11:35:33 | 最終更新:2015-12-12 (土) 16:29:20

EGit -> ブランチ

Posted by muchag | Eclipse,Library & PlugIn & AddIn |
初回投稿:2015-12-08 (火) 19:04:16 | 最終更新:2015-12-12 (土) 11:05:29


Eclipse:EGit/User Guide Branching

【環境】
Eclipse:Mars.1 (4.5.1) PHP
EGit:4.1.1.201511131810-r
OS:Windows7 SP1 64bit
切り替え(checkout)

Eclipse:EGit/User Guide Checking out an existing Branch
→スタート地点が3通り載っている。

プロジェクトコンテキストメニュー

  1. [チーム]-[切り替え]-[(当該ブランチ)]
新規作成

Eclipse:EGit/User Guide Creating a New Local Branch
→スタート地点が3通り載っている。

プロジェクトコンテキストメニュー

  1. [チーム]-[切り替え]-[新規ブランチ]
  2. 新規ブランチの作成(Branch Creation Dialog
    1. ソース:変更したいときは [選択] *1
    2. ブランチ名:任意
    3. プッシュおよびプルのアップストリームを構成する
      1. プルを行う場合
        1. 現在、詳細不明。大体の意味を理解した上で、ひとまず下記の通り
        2. ◎アップストリームのコミットをローカル・ブランチにマージする
        3. ◯アップストリームにローカル・ブランチのコミットをリベースする
    4. 完了

*1:ソースの選択
ローカル、リモートから任意に選択できる

プッシュ

プロジェクトコンテキストメニュー

  1. [チーム]-[リモート]-[プッシュ]
  2. 宛先 Git リポジトリー
    1. ◎構成済みリモート・リポジトリー
      1. 当該リモート先を選択
    2. ◯カスタム URI
      1. 一時的なリポジトリを利用する際に用いる(Pushing to other Repositories
    3. [次へ] ※1
  3. プッシュ仕様指定
    1. 作成/更新仕様の追加
      1. ソース参照:選択(ソースを選択すると、宛先に同名ブランチが自動選択される)
      2. 宛先参照:選択
      3. [仕様の追加] これで、プッシュの仕様という欄に追加される
    2. 事前定義仕様の追加
      1. ここの欄は、プッシュ仕様をまとめて追加したいときに利用するみたい
      2. [構成済みプッシュ仕様の追加]
      3. [すべてのブランチ仕様を追加]
        1. 読んだまんま。全てのブランチをプッシュするプッシュ構成となる
      4. [すべてのタグ仕様の追加]
    3. [‘origin 構成に仕様を保管] にチェックをすると、次回以降、プッシュ仕様の設定をスキップできる?/li>
    4. [次へ] or [完了]
  4. プッシュ確認
    1. プッシュ内容を表示してくれる
    2. 完了
  5. プッシュ結果
    1. プッシュ結果を表示してくれる
    2. [OK]

※1:次のダイアログのプッシュ仕様を設定しない状態で、ここで [完了] とすると
Can’t connect to any repository:
というエラーになる。

マージ&リベース
マージ リベース
概略 各ブランチの履歴がそのまま残る 履歴が統合される
メリット コミットの改変が起こらない
操作が容易
履歴が一本化される
デメリット 履歴が複雑化する コミットの改変が起こる
操作が多少煩雑
適性 リモートをローカルへ統合するとき ローカルをリモートへ統合するとき
参考サイト

The Powerful Code:使い分けできていますか?マージ(merge)&リベース(rebase)再入門
→メリット&デメリットおよび適性が記述されており、大変わかりやすい説明でした。感謝!

マージ

branchA で開発していた新機能を master へマージするという前提。
マージ元:branchA
マージ先:master
とする。

  1. ブランチを master へ切り替える
  2. [チーム]-[マージ](プロジェクトコンテキストメニュー)
  3. Merge ‘master’
    1. ツリーからマージ元ブランチを選択(今回は [ローカル]-[branchA])
    2. マージ・オプション
      1. 現状意味不明なので、デフォルトのまま
      2. ◎コミット
      3. ◯コミットなし
      4. ◯スカッシュ
    3. 高速フォワード・オプション
      1. 現状意味不明なので、デフォルトのまま
      2. ◎高速フォワードの場合はブランチ位置のみ更新する
      3. ◯高速フォワードの場合はマージ・コミットを作成する
      4. ◯高速フォワードでない場合は失敗
    4. [マージ]
  4. マージ結果
    1. マージ結果を表示してくれる
    2. [OK]
コンフリクト解消

マージした結果、コンフリクト(競合)を起こすことがある。

コンフリクトを起こしているファイルを開く
コンフリクト内容を、両方残すなり、片方を残すなり、対処
ファイルを保存
[チーム]-[索引に追加(Add to index)] とすることで、コンフリクトマークが消える
コンフリクトを全て解消したらコミット
プッシュ

コンフリクト箇所

プロジェクトエクスプローラ
コンフリクトを起こしているファイルにマーク(赤い左右矢印?)が付く
当該ファイル

  1. <<<<<<< HEAD
  2.     // 元々あったコード
  3.     $hoge = 0;
  4. =======
  5.     // マージしたコード
  6.     $hoge = 1;
  7. >>>>>>> refs/heads/3.8.17.1
リセット

プロジェクトコンテキストメニュー

  1. プロジェクトコンテキストメニューから [チーム]-[切り替え] で、リセットしたいブランチをアクティブにする
  2. プロジェクトコンテキストメニューから [チーム]-[リセット]
  3. リセット: project_name
    1. ツリーから、上書きしたいブランチを選択
    2. リセット先:ツリーでブランチを選択することで自動入力
      1. 「リセット先」と書かれると、「リセットしたいブランチ」のように受け取れるけど、
        実際は「当該ブランチをリセットするために元とするブランチ」をセットする
    3. リセット・タイプ
      1. ◯ソフト(HEAD 更新)
      2. ◯混合(HEAD およびインデックス更新)
      3. ◎ハード(HEAD, index, and working tree updated)
        1. 何かも全て更地にしてコピー
    4. リセット
  4. 確認ダイアログ [はい]
直前のコミット状態まで戻す

ファイルのコンテキストメニュー
[置換]-[HEAD 改訂]

参考サイト
河西 高明 BLOG:Eclipse EGit で作業ファイルの変更を個別に元に戻す方法

Posted by muchag | Eclipse,Library & PlugIn & AddIn |
初回投稿:2015-12-08 (火) 19:04:16 | 最終更新:2015-12-12 (土) 11:05:29

Can’t connect to any repository:

Posted by muchag | Eclipse,Library & PlugIn & AddIn |
初回投稿:2015-12-03 (木) 12:37:39 | 最終更新:2015-12-03 (木) 13:33:19

EGit + Bitbucket でプッシュしようとしたときのエラー。

【環境】
[Eclipse] 4.4.1(LUNA SP1)
[EGit] 3.7.1.201504261725-r
[OS] Windows7 SP1 64bit
状況

EGit プラグインを入れてローカルリポジトリを作成し
後から Bitbucket へ登録してリモートリポジトリを設定した。

  1. プロジェクトのコンテキストメニュー
  2. [チーム]-[リモート]-[プッシュ]
  3. [宛先 Git リポジトリー]
  4. [完了]

初回設定時も [構成済みのリモート・リポジトリー] 利用時も同様のエラーが出た。

Can’t connect to any repository: ssh://git@bitbucket.org/username/projectname.git (Nothing to Push。)
原因

プッシュ仕様設定を行っていなかった。

解決策
  1. プロジェクトのコンテキストメニュー
  2. [チーム]-[リモート]-[プッシュ]
  3. [宛先 Git リポジトリー]
  4. [次へ]
  5. [プッシュ仕様設定]
    1. [作成/更新仕様の追加]
      1. [ソース参照]-[refs/heads/master(当該ブランチ?)
      2. [宛先参照] は、ソース参照を設定することで自動的に設定される
      3. [仕様の追加] をクリックすると、[プッシュの仕様に追加される
    2. [‘origin’ 構成に仕様を保管] にチェックを入れると、次からは [宛先 Git リポジトリー] で [完了] するだけでプッシュできる
  6. [次へ]
  7. [プッシュ確認]
  8. [完了]
参考サイト

メモ:ubuntu14.10でGit

別ルート対処法

プロジェクトコンテキストメニューではなく、Git リポジトリービューからプッシュする。

  1. Git リポジトリービュー内の当該プロジェクトを開く
  2. [リモート] を開く
  3. 当該リモート名(リモートリポジトリ設定時に入力した名称。デフォルトは origin)を開く
  4. 同じ URI が2行並んでいるので、プッシュ用(赤い↑)を右クリック
  5. [プッシュの構成]
  6. [保管およびプッシュ]
参考サイト

じっとしてないEGit:プッシュしたい内容があるのに、Can’t connect to any repository: XXXXXXX (Nothing to push.) と出た時の対応

Posted by muchag | Eclipse,Library & PlugIn & AddIn |
初回投稿:2015-12-03 (木) 12:37:39 | 最終更新:2015-12-03 (木) 13:33:19
« 前ページへ