ロリポップでvccw + WordMove

SSHメニュー

ロリポップ、ssh使えるようになってる…スタンダードプランのようだ。

SSHメニュー
SSH使えるんだ!! 😳

ってことは、vccwからWordMove経由で楽ちんだなと喜んでたら、DBに接続できない…。。ログインしたら使えるので制限かかってる様子。。

ローカルにDB持ってきて置換することに

WordMoveでtheme, uploads, pluginsを、DBは、ssh -tでリモートでwp-cliでDBエクスポートして、scpでローカルに持ってきて、wp-cliのsearch-replaceで置換することにした 😀💡

これなら、ちょっと手間だけど、一発ならぬ二発で終わるw

sshは公開鍵でログインできるようにしておくのが前提。

ssh nickname -t "cd web/ && ~/bin/wp db export backup.sql" && scp Host:/path/to/wordpress/backup.sql . && cd wordpress && wp db import ../backup.sql &&  wp search-replace 'old(remote)' 'new(local)'

DBはこれでばっちし👌🏼
ほとんど使う機会ないんだけど、ロリポップもWordMove使えるとホント便利っすなーー 😀

大会投稿タイププラグイン作成中💡

イベントでも使えそうだけど、2017年大会、2018年大会など毎年あるイベントのページセットを作りたくて、やってみた。

GitHubリポジトリはコチラ → marushu/km_competition: Plug-in for creating annual event contribution type with parent page and child page set.

カスタム投稿タイプの子ページのセットを作ればいいじゃない

ってことで、

  • 投稿タイプのスラッグを作成
  • 子ページのタイトル、スラッグを必要分追加

で親ページを作ったら、子ページをホイっと下書きで準備しちゃおうというもの。

まだ全然途中だけど、管理画面で上記の機能は準備できた 😀

あとは、

  • Author
  • 翻訳はどうすんの?

を考え中 😅
翻訳は都度違う気がするのでどうしよう…😅

まぁ、とにかく作ろう 😀

投稿タイプ作成

管理画面に入力したスラッグで投稿タイプを作る方法って、どうやんの?って思ったけど、大変ありがたい記事を発見!! 😀💡

参考 : Create Dynamic Custom Post Types in WordPress | Flippercode

ってことで、翻訳はどうすんの?は、管理画面に準備すれば大丈夫そう。
ちょっと項目増えるから面倒だけどねw

子ページセット部分だけ切り出してプラグイン化した方がいいかもだな 😅
カスタム投稿タイプ作るプラグインは沢山あるし、ここをわざわざプラグインの中に入れなくてもいいかも?

とりあえずはこのまま行ってみよう!! 😀

Contact Form 7とFlamingoを使って契約中の部屋に空きが出たら通知するプラグイン作ってみた

GitHubはコチラ → marushu/kktt_free_room_announce: Send mail at the timing when the room status changes from contracting or negotiating to free.

…まだ途中。。😅

タイトル通り。
倉庫のような限られたスペースで、「契約中」「商談中」「空きあり」の3つのステータスがあって、ステータスが「空きあり」になったらメールで通知する仕組み。

Contact Form 7Flamingoを使ってメールの登録や自動返信・データの保存などをやって、ステータスの変更をトリガーにメールを送る感じ。

Flamingoは今までお客さんのサイトで入れてはいたけど、そこからデータを取り出して使うってことはしてなかった。

flamingo_inbound投稿タイプ

Flamingoは受信メッセージというメニューがあるんだけど、これ、flamingo_inboundっていう投稿タイプ。

Contact Form 7でPOSTされてきた各データをflamingo_inbound投稿タイプ内にカスタムフィールドを作って格納してくれる。
例えば、[your-name]ってフィールドだったら、_field_your-nameといった感じ。

複数フォームがあっても、flamingo_inbound_channelタクソノミーで判別できる。

Contact Form 7は言うまでもなく凄いけど、

Flamingoももの凄い便利!!!!!!! あざまーーーーっす!!!

ということで、仕組みとしては、

  • 通知の欲しいメールアドレスと、部屋をフォームで選択
  • 送られてきたメールアドレスと部屋情報をFlamingoから参照
  • 部屋のステータスが空きに変わったら、そのメールアドレスへメール送信

通知の欲しい部屋の選択画面

各セルをクリックすると、hiddenフィールドに値(a-01など)を格納

管理画面

ここで契約中・商談中・空きありの3つのステータスを変更

空き待ち状況

空き待ちリスト。

ステータスが空きに変わったら待ちリストの該当メールアドレスへ通知

メール出通知。一度送ったらリストから削除する感じ 😀

といった感じ。
まだ調整は必要なんだけど、期待通りに動いたので一先ず 😀

連想配列に同じ値を入れない

$total_arr = array();
$key_arr_count = count( $key_arr );
for ( $h = 0; $h < $key_arr_count; $h++ ) {

  if ( ! array_key_exists( $key_arr[ $h ], $total_arr ) ) {

    $total_arr[ $key_arr[ $h ] ]['email'] = (array) $mail_arr[ $h ];

  } else {

      $total_arr[ $key_arr[ $h ] ]['email'][] = $mail_arr[ $h ];

  }

  $total_arr[ $key_arr[ $h ]]['post_id'] = $post_id_arr[ $h ];

}

$sort_flag = ksort( $total_arr );

メールアドレスを選択したセルに紐付けるために、という配列を作った。
元の配列は、メールにセルデータが複数入っているんだけど、逆にセルにメールアドレスを紐付けた。要は入れ替えたかったんすよね。

期待通りに動いたなと思ってたら、1つのセルに同じメールアドレスが複数並んでしまった。。

array (size=3)
  'a-01' => 
    array (size=2)
      'email' => 
        array (size=2)
          0 => string 'test@testhage.com' (length=16)
          1 => string 'test@testhage.com' (length=16)
      'post_id' => int 407
  'a-03' => 
    array (size=2)
      'email' => 
        array (size=3)
          0 => string 'test@testhage.com' (length=16)
          1 => string 'test@testhage.com' (length=16)
          2 => string 'test@testhage.com' (length=16)
      'post_id' => int 405
  'a-04' => 
    array (size=2)
      'email' => 
        array (size=3)
          0 => string 'test@testhage.com' (length=16)
          1 => string 'test@testhage.com' (length=16)
          2 => string 'test@testhage.com' (length=16)
      'post_id' => int 405

…こんな感じ。。
重複ないように入れないとマズイんだけど、しばらくわからなかった…😅
できあがった、$total_arrをforeachで回してarray_uniqueでとかいろいろやったんだけど、イマイチしっくりこなかった。。

で、ようやくわかったのがコレ↓↓

$total_arr = array();
$key_arr_count = count( $key_arr );
for ( $h = 0; $h < $key_arr_count; $h++ ) {

  if ( ! array_key_exists( $key_arr[ $h ], $total_arr ) ) {
  
    $total_arr[ $key_arr[ $h ] ]['email'] = (array) $mail_arr[ $h ];
    
  } else {

    if ( ! in_array( $mail_arr[ $h ], $total_arr[ $key_arr[ $h ] ]['email'] ) ) {

      $total_arr[ $key_arr[ $h ] ]['email'][] = $mail_arr[ $h ];

    }

  }

  $total_arr[ $key_arr[$h]]['post_id'] = $post_id_arr[ $h ];

}

配列作るときにやればいいじゃない!!ってのに気づくの遅いよ (*_*)
で、無事期待通りに出るようになった ↓↓

array (size=3)
  'a-01' => 
    array (size=2)
      'email' => 
        array (size=2)
          0 => string 'test@hagechirakasi.com' (length=22)
          1 => string 'test@testhage.com' (length=16)
      'post_id' => int 407
  'a-03' => 
    array (size=2)
      'email' => 
        array (size=2)
          0 => string 'test@hagechirakasi.com' (length=22)
          1 => string 'test@testhage.com' (length=16)
      'post_id' => int 405
  'a-04' => 
    array (size=2)
      'email' => 
        array (size=2)
          0 => string 'test@hagechirakasi.com' (length=22)
          1 => string 'test@testhage.com' (length=16)
      'post_id' => int 405
めでたし、めでたし 😀

別の更新が現在進行中です。

wp core upadte –locale=ja –force && wp core update-db && wp core language update

と打っちゃいました。。。( ꒪⌓꒪)
ほんと、tab補完を使いましょう(俺だよ)。

Error: 'upadte' is not a registered subcommand of 'core'. See 'wp help core'.

ごめんなさい、ごめんなさい。。
気を取り直して、改めて入力しなおすと、

Updating to version 4.7.2 (ja)...
Error: 別の更新が現在進行中です。

…と。。

前にも出たことはあったんですが、特に調べもせずだったので、ググってみると、結構皆さんハマってらっしゃるようで、沢山記事出てました。

参考 : WordPressの更新で”別の更新が現在進行中です。”エラーが出るときにすべき事

ありがとうございます!!!
ということで、15分待てばOKみたいですが、そんな待てない。。

参考 : WordPress「別の更新が現在進行中です。」の対処方2つ | Thought is free

  • DB から core_updater.lock を消す

これですね 😀

ということで、ローカル(VCCW)でやっていたので、

mysql -u wordpress -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 31
Server version: 5.7.16-0ubuntu0.16.04.1 (Ubuntu)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| wordpress          |
+--------------------+
2 rows in set (0.00 sec)

mysql> use wordpress;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> show tables;
+-----------------------+
| Tables_in_wordpress   |
+-----------------------+
| wp_commentmeta        |
| wp_comments           |
| wp_links              |
| wp_options            |
| wp_postmeta           |
| wp_posts              |
| wp_term_relationships |
| wp_term_taxonomy      |
| wp_termmeta           |
| wp_terms              |
| wp_usermeta           |
| wp_users              |
+-----------------------+
12 rows in set (0.00 sec)

mysql> select * from wp_options where option_name = 'core_update.locl';
Empty set (0.00 sec)

mysql> delete from wp_options where option_name = 'core_updater.lock';
Query OK, 1 row affected (0.01 sec)

えーっと、タイプミスひどいですね…😅
これで、「別の更新が現在進行中です。」は消えました 😀

タイプミスは気をつけないとですね…😅

自分もCoreを確認してみる

/**
	 * Creates a lock using WordPress options.
	 *
	 * @since 4.5.0
	 * @access public
	 * @static
	 *
	 * @param string $lock_name       The name of this unique lock.
	 * @param int    $release_timeout Optional. The duration in seconds to respect an existing lock.
 *                                Default: 1 hour.
	 * @return bool False if a lock couldn't be created or if the lock is still valid. True otherwise.
	 */
public static function create_lock( $lock_name, $release_timeout = null ) {
	global $wpdb;
	if ( ! $release_timeout ) {
		$release_timeout = HOUR_IN_SECONDS;
	}
	$lock_option = $lock_name . '.lock';

	// Try to lock.
	$lock_result = $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO `$wpdb->options` ( `option_name`, `option_value`, `autoload` ) VALUES (%s, %s, 'no') /* LOCK */", $lock_option, time() ) );

	if ( ! $lock_result ) {
		$lock_result = get_option( $lock_option );

		// If a lock couldn't be created, and there isn't a lock, bail.
		if ( ! $lock_result ) {
			return false;
		}

		// Check to see if the lock is still valid. If it is, bail.
		if ( $lock_result > ( time() - $release_timeout ) ) {
			return false;
		}

		// There must exist an expired lock, clear it and re-gain it.
		WP_Upgrader::release_lock( $lock_name );

		return WP_Upgrader::create_lock( $lock_name, $release_timeout );
	}

	// Update the lock, as by this point we've definitely got a lock, just need to fire the actions.
	update_option( $lock_option, time() );

	return true;
}

/wp-admin/includes/class-wp-upgrader.php の826行目〜のWP_Upgraderクラスの中にあるんですね〜😀

get_extendedで続きを読むにはログインまたは会員登録ボックスを作る

ログインまたは、会員登録

記事の途中で、「続きを読むには…」というコンテンツを見かけます。
個人的には一手間が面倒なので、丸ごと会員制にしちゃって展開した方がいいのかなぁと思ったりするんですが、会員を増やしたいという運営サイドの意図があると、そういう構成になりますよね?って思います。

面倒とか言っておきながら、「おっ!!」っと思う記事に出会うと、会員登録してますw

WordPressでやるには?

ビジュアルエディタの“「続きを読む」タグを挿入”を使うとあっさりできちゃいました。

<!-- more -->タグ入れるやつ。
<!–more–>が入るやつです。

参考 : 「続きを読む」のカスタマイズ – WordPress Codex 日本語版

WordPress サイトのトップページに投稿の抜粋を表示して訪問者の興味を引き、タイトルやリンクのクリックで、続けて投稿や記事の全文へガイドするテクニックがあります。WordPress では簡単にこのテクニックをカスタマイズ可能な方法で実現できます。

ビジュアルエディタで実際に使うと、↓↓のように区切りが入ります。

「続きを読む」タグが挿入されたところ
「続きを読む」タグが挿入されたところ。

知ってる用途としては、アーカイブページだけだと思ってたんですが、大変便利な関数がありました 😀

get_extended

参考 : 関数リファレンス/get extended – WordPress Codex 日本語版

読みますと、

投稿本文を <!–more–> で区切った内容を各々取得します。戻り値は main と extend のキーからなる連想配列です。main キーの配列には <!–more–> より前の本文、extend キーの配列には <!–more–> より後の本文が入っています。

2つ目のダッシュ(-)と ‘more’ の間にはスペースは入れないでください。’more’ の後のスペースは無視されます。

とありました。
ってことは、<!–more–>の前(mainキーの中身)を読ませて、後(extendedキー)はログインしないと出ないようにしてしまえばいいわけですよね 😀💡✨️

ソースを見てみる

参考 : get_extended() | Function | WordPress Developer Resources

<?php
function get_extended( $post ) {
    //Match the new style more links.
    if ( preg_match('/&lt;img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-more="more" data-wp-more-text="(.*?)?" class="wp-more-tag mce-wp-more" alt="" title="続きを読む..." data-mce-resize="false" data-mce-placeholder="1" /&gt;/', $post, $matches) ) {
        list($main, $extended) = explode($matches[0], $post, 2);
        $more_text = $matches[1];
    } else {
        $main = $post;
        $extended = '';
        $more_text = '';
    }
 
    //  leading and trailing whitespace.
    $main = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $main);
    $extended = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $extended);
    $more_text = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $more_text);
 
    return array( 'main' =&gt; $main, 'extended' =&gt; $extended, 'more_text' =&gt; $more_text );
}

投稿の中身を<!–more–>で分けてます。

あとは、特定のカテゴリだけや、カスタムフィールドを追加して投稿個別に

  • <!–more–>以降はログインが必要な記事
  • 誰でも読める記事

っと、<!–more–>ボタンで区切ればOK。
今回は、カスタムフィールドで作ったんですが、extendedが空の場合は、全文とか、分岐の部分で何度かミスをしちゃいました… 😅

コードはこんな感じ。

できあがりはこんな感じ。

ログインまたは、会員登録
ログイン後は、見ているページへ戻す。

フワッと白くぼけている部分は、box-shadowを上にずらせばいい感じに。

.login-register {
  box-shadow: 0px -75px 50px 34px rgba(255, 255, 255, 0.9);
}

分岐で最初勘違いしてて、どの記事にもログインボックスを出してしまったりしましたが、一先ずこれで、続きを読むにはログインが必要なコンテンツはできました。

get_extended大変便利な関数でした〜。WordPressが1.0.0の時からあるんですね〜 😀

タスクランナーをpackage.jsonのみで

Why npm Scripts? | CSS-Tricksより。
GruntやGulp、webpackなどなどを使わずにpackage.jsonでやっちゃえばいいじゃない?的な内容。

ずっとgulpを使ってテーマ構築してたんだけど、どうしても慣れなくて、先のエントリー読んで腹落ちした 😀

package.jsonでやってる内容

  • SCSSをCSSにコンパイル(node-sass)
  • AutoprefixをPostCSSで
  • JavaScriptをeslintでチェック
  • uglify-jsでJavaScriptで一纏め & minify
  • Imageminで画像を圧縮
  • svg-sprite-generatorでSVGを一纏め
  • BrowserSyncでリロード
  • まとめてwatch

って感じ。eslintと、uglify-jsはまだ調整しないとなぁと思うけど、軽快に動いてる。

BrowserSyncのプロキシモードってのを知ったので、VCCWで作ってる個別のサイトでも全く問題なし ✨️

Imageminはimageディレクトリ内に階層ある場合、ちゃんと拾ってくれるけど、階層通りに書き出してくれないので、ここはどうするか考えどころ…😅
別に気にならないんだけどね 😜

Dynamic sites

If you’re already running a local server with PHP or similar, you’ll need to use the proxy mode. Browsersync will wrap your vhost with a proxy URL to view your site.

browser-sync start --proxy "myproject.dev" --files "css/*.css"

Browsersync – Time-saving synchronised browser testing

wp-cli使ってサクッと準備したい

wp scaffold _s slug —theme_name=title —author=full-name —sassify

wp scaffold _s | WP-CLIより

_sベースのテーマひな形作った後、このpackage.json読み込んで npm install したら即構築開始!! ってところまでできるようになりたい 😀

BrowserSyncのプロキシモードのurlをVCCWで作ってる個別のurlに置き換える方法がまださっぱりわからない 😅

しばらくはこれ使って行こうと思う。

【更新】wp-cliの–sshオプションでローカルからまるっと操作する

@allでまるっと

WP-CLI 0.24 でリモートサーバーに対してコマンドを実行できるようになりましたよ! | Firegoby

wp-cliとても便利!! ありがとうございます 😆
聞いて知ってはいたけどやっていなかったヤツです。

wp-cliの–sshオプションを使ってローカルからリモートにあるWordPressのコア・プラグイン・テーマのアップデートやDBのエクスポートなどをやれるやつ…😅
さっさとやれば、もっと楽ちんになっていたのに…。。今年はこういうのを無くしていくんだ。

–ssh=[<user>@]<host>[:<port>][<path>]

      Perform operation against a remote server over SSH.

これっすね。

先ずはsshコマンドで確認してみて、いけたらエイリアス追加でやってみました。

ssh user@host -p port -i key

僕の場合ですが、毎度ssh-addしないと、Macがキーを忘れちゃってたので、

macOS Sierra で ssh-agent の鍵をすぐ忘れられちゃうのめんどくさいんじゃこらーの対処法 – Qiita

↑↑この記事を参考に、~/.ssh/configにそれぞれ

AddKeysToAgent yes
UseKeychain yes

を追加。

一通り確認してみてOKだったので、~/.wp-cli/config.ymlに@allを作成!! 😁

EXAMPLES

    # List all available aliases.

    $ wp cli alias

   

    @all: Run command against every registered alias.

wp help cli aliasより

ってことで、@allは全てのエイリアスでコマンド走るので、@allを作る必要はありませんでした!! 宮さん、ありがとうございます!!

@allがあるってことは、サーバ別とか分けても行けるってことだな 😀

一応テストで

#!/usr/bin/env bash

set -eu

wp @all core check-update

exit 0

更新確認をば 😀

@allでまるっと
などなど。 サーバ別でも一度にやれちゃうのはサイコーに便利っすね 😀

ばっちりっすね 😀
サーバ跨いでもいっぺんにできるのはサイコーに楽ちんっす!!

  • wp-update.sh
  • wp-update-core.sh
  • wp-core-checkupdate,sh

を作成し、ファイルにエイリアスを設定してみました。
共通してやってる内容は

  • wp db export backup.sql
  • wp core language update

です。一度DBバックアップ取りつつって感じっす 😀
これで、次からエイリアス一発で終わるるるる〜 😀

あっ、ヘテムル用も作ればいいのか!! 😜

GitLabでGit LFSその2 (SSH Authentication for LFS)

これは、GitLab Advent Calendar 2016 の12/19日の記事です。

GitLabはまだガンガン使っているわけではなく、昨年参加したGitLab勉強回でLFS(Large File Storage)以来ですが、

GitLab/GitLab.com 勉強会行ってきた

ssh認証使えるようになったよというアナウンスが出ていたので、試してみました。

SSH Authentication for LFS

Git LFSに関しては以下を参照してください。今回は、sshの部分のみです 😀

Using Git LFS

先ずはKeyの登録

SSH Keys · Profile Settings · GitLab

こちらでSSH Keyを登録します。Readme · Ssh · Help · GitLabを参照。
例えばMacの場合は、

Mac:

pbcopy < ~/.ssh/id_rsa.pub

といった感じで詳しく載ってます。次に、SSH Keysに貼り付けて Add KeyすればOK 😀

id_rsa.pubを貼り付ける
id_rsa.pubを貼り付けて Add KeyすればOK 😀

早速試してみる

テストリポジトリを作って、今回もPSDを使って試してみます。

ShuheinoMacBook-Pro:Desktop$ mkdir lfs-test-ssh &amp;&amp; cd $_
ShuheinoMacBook-Pro:lfs-test-ssh$ git init
Initialized empty Git repository in /Users/shuhei/Desktop/lfs-test-ssh/.git/
ShuheinoMacBook-Pro:lfs-test-ssh[master #]$ git remote add origin git@gitlab.com:marushu/ssh-authentication-for-lfs-test.git
ShuheinoMacBook-Pro:lfs-test-ssh[master #]$ git lfs init
WARNING: 'git lfs init' is deprecated. Use 'git lfs install' now.
Updated pre-push hook.
Git LFS initialized.
ShuheinoMacBook-Pro:lfs-test-ssh[master #]$ git lfs install
Updated pre-push hook.
Git LFS initialized.
ShuheinoMacBook-Pro:lfs-test-ssh[master #]$ git lfs track "*.psd"
Tracking *.psd
ShuheinoMacBook-Pro:lfs-test-ssh[master #]$ 

…git lfs initじゃねーよ、今は’git lfs install’だよって怒られてますね…😅
では次にPSDを追加します。

PSDを追加

確認してみます。

ShuheinoMacBook-Pro:lfs-test-ssh[master #]$ gs
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	.gitattributes
	hibou_logo_web_cut.psd

nothing added to commit but untracked files present (use "git add" to track)

hibou_logo_web_cut.psdと.gitattributesが追加されてます。では追加してpushします。

ShuheinoMacBook-Pro:lfs-test-ssh[master +]$ gs
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

	new file:   .gitattributes
	new file:   hibou_logo_web_cut.psd

ShuheinoMacBook-Pro:lfs-test-ssh[master +]$ git commit -m 'add psd :)'
[master (root-commit) f668b4f] add psd 🙂
 2 files changed, 4 insertions(+)
 create mode 100644 .gitattributes
 create mode 100644 hibou_logo_web_cut.psd
ShuheinoMacBook-Pro:lfs-test-ssh[master]$ git push origin master 
Enter passphrase for key '/Users/ore/.ssh/id_rsa': 
Enter passphrase for key '/Users/ore/.ssh/id_rsa': 
Enter passphrase for key '/Users/ore/.ssh/id_rsa': 
Git LFS: (1 of 1 files) 159.15 KB / 159.15 KB                                  
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 412 bytes | 0 bytes/s, done.
Total 4 (delta 0), reused 0 (delta 0)
To gitlab.com:marushu/ssh-authentication-for-lfs-test.git
 * [new branch]      master -> master

UsernameとPasswordを聞かれなくなってますね 😀
でも’Enter passphrase for key’がうるさいw

っとおもったら、ssh-addしていないことに気づきました ( ꒪⌓꒪)

ssh-add -K /Users/shuhei/.ssh/id_rsa

…クリーンインストール後の環境構築は自動化しないとあれこれ忘れててだめですね…😅

気を取り直してpsdを編集後、push。

gitShuheinoMacBook-Pro:lfs-test-ssh[master +]$ git commit -m 'add ss text'
[master 1bab8db] add ss text
 1 file changed, 2 insertions(+), 2 deletions(-)
ShuheinoMacBook-Pro:lfs-test-ssh[master]$ git push origin master 
Git LFS: (1 of 1 files, 1 skipped) 169.19 KB / 169.19 KB, 165.34 KB skipped                                  
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 676 bytes | 0 bytes/s, done.
Total 6 (delta 2), reused 0 (delta 0)
To gitlab.com:marushu/ssh-authentication-for-lfs-test.git
   d482ccb..1bab8db  master -> master

ばっちり 😀✨️
素敵です。

明日は、ijojiさんです〜😀

【更新】リモートリポジトリの編集(変更とか削除とか)

直接編集

.git/configを直接編集しちゃってもOK 😀

[remote "origin"]
	url = hoge@hoge.git.xxxx.xx:/xxxx/xxxx.git
	url = fuga@fuga.git.xxxx.xx:/xxxx/xxxx.git

これだと、remote_name 変えずにいっぺんにできて楽ちんだったりして 😀

…ばらばらに散らばったメモをなんとかしないと…😅

先ずはリモートリポジトリの確認(これはよく使ってた)

git remote -v

リモートリポジトリの追加(複数登録するときとかも)

git remote add remote_name ssh@git.xxxxxxx

リモートリポジトリを変更(これ今日知った…多分どこかで読んで忘れて他と思う)

git remote set-url remote_name ssh@git.xxxxxxx

リモートリポジトリを削除

git remote rm remote_name

※ これは、単にgit addの参照先を削除するだけで、サーバからは削除されないからね〜らしい

Note: git remote rm does not delete the remote repository from the server. It simply removes the remote and its references from your local repository.(https://help.github.com/articles/removing-a-remote/)

参照