- 投稿日:2020-10-22T15:19:10+09:00
GitHubやGitでエラーに遭遇したときの解決方法のまとめ
Windows10,CentOS7等のGitを使えるようにする方法
GitHubを使う前に知っておきたいGitの使い方
Gitのエラー解消方法
- Commit failed - exit code 1 receivedの対処法の忘備録このエラーが発生した時には、
.git
というファイルがファイル内に作成されているせいです。なので、隠しファイルを表示して、.git
のファイルを削除することで、commit
することが可能になります。 このサイトを参考にして、.gitの隠しファイルを表示させて、削除してください。そうすることで、エラーを解消出来ます。j- git revert コマンドを実行すると "error: revert is not possible because you have unmerged files." エラーが表示される - Gitの使い方
- git checkout で error: Your local changes to the following files would be overwritten by checkoutと言われる解決方法
- git checkout理解してなかった
- Gitでクローン時に「Clone succeeded, but checkout failed」が出る時の対処法
GitHubの始め方
PullRequestについて
GitHub応用編
- git submodule とは git submodule は、外部の git リポジトリを、自分の git リポジトリのサブディレクトリとして登録し、特定の commit を参照する仕組みです。
- gitのsubmoduleだけを最新版にしたい場合のコマンドメモ
- GithubのSSH通信設定
- GitHubでssh接続する手順 ~ 公開鍵・秘密鍵の生成から ~
GithHubを応用して、簡単なプログラムをインターネットに向けて公開する方法
PyCharmでのGitやGitHubの設定方法
- 投稿日:2020-10-22T15:19:10+09:00
【入門】GitHubの始め方からGitでエラーに遭遇したときの解決方法などの厳選リンク集
Windows10,CentOS7等のGitを使えるようにする方法
GitHubを使う前に知っておきたいGitの使い方
Gitのエラー解消方法
- Commit failed - exit code 1 receivedの対処法の忘備録このエラーが発生した時には、
.git
というファイルがファイル内に作成されているせいです。なので、隠しファイルを表示して、.git
のファイルを削除することで、commit
することが可能になります。 このサイトを参考にして、.gitの隠しファイルを表示させて、削除してください。そうすることで、エラーを解消出来ます。j- git revert コマンドを実行すると "error: revert is not possible because you have unmerged files." エラーが表示される - Gitの使い方
- git checkout で error: Your local changes to the following files would be overwritten by checkoutと言われる解決方法
- git checkout理解してなかった
- Gitでクローン時に「Clone succeeded, but checkout failed」が出る時の対処法
GitHubの始め方
PullRequestについて
GitHub応用編
- git submodule とは git submodule は、外部の git リポジトリを、自分の git リポジトリのサブディレクトリとして登録し、特定の commit を参照する仕組みです。
- gitのsubmoduleだけを最新版にしたい場合のコマンドメモ
- GithubのSSH通信設定
- GitHubでssh接続する手順 ~ 公開鍵・秘密鍵の生成から ~
GithHubを応用して、簡単なプログラムをインターネットに向けて公開する方法
PyCharmでのGitやGitHubの設定方法
- 投稿日:2020-10-22T12:07:33+09:00
CI/CDをkatacodaで体験(初心者向け) - Part10(Building Docker Images using Jenkins)
CI/CD入門
このぺーじでは、katacodaと呼ばれる「ブラウザから無料で勉強用のインスタンスを起動できるWebサービス」を利用してCI/CDを実践します
内容は上記リンクに沿うので、不明点があればそちらへどうぞjenkinsによるdockerコンテナのbuild - Building Docker Images using Jenkins
ここでは、CI/CDの中心となるjenkinsの利用例を紹介
このシナリオで学習することをさっと確認する場合は概要を確認
理解に間違い等がございましたら、ぜひご指摘ください概要
- jenkinsによるコンテナbuildには下記の手順を踏む
- 特定のpluginをインストール
- pluginの設定
- jenkins agentの設定
- jenkins agentに実行させるprojectの作成
- project実行
Launch Jenkins
まず下記コマンドを実行しjenkinsをdockerコンテナとして実行
docker run -d -u root --name jenkins \ //バックグラウンド実行、rootユーザ、コンテナ名"jenkins" -p 8080:8080 -p 50000:50000 \ //8080番ポートはweb dashboard、50000番はjenkins agentとの疎通用 -v /root/jenkins_2112:/var/jenkins_home \ //ホスト側のマウントpath及びコンテナ側のpath jenkins/jenkins:2.112-alpine今回はホスト端末が別に存在している
アクセスする場合は、ssh接続$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6048602eb5b9 jenkins/jenkins:2.112-alpine "/sbin/tini -- /usr/…" 2 minutes ago Up2 minutes 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp jenkinsコンテナが正常に既往していることを確認後、こちらのリンクから移動(デフォルト)
ログインには、admin
、344827fbdbfb40d5aac067c7a07b9230
環境はこのようになっているConfigure Docker Plugin
ここでは、Docker pluginを設定する
Docker pluginを設定することで、jenkinsがdockerデーモンとの通信をagentを介して実現(以下の概略図参照)dashboard上で以下の通りクリックしていく
Manage Jenkins > Manage Plugins > availableタブのDocker > Install without Restartこのpluginはクラウドプロバイダーとして扱われる
dockerホストと通信するときのみコンテナ(jenkins agent)は起動するAdd Docker Agent
ここでは、先ほど用意したagentに「コンテナを起動させる」構成を設定
dashboard上で以下の通りクリックしていく
Manage Jenkins > Configure System > Add a new cloudから"Docker" > Docker Host URIにtcp://172.17.0.67:2345
(docker server)を入力
この手順でDocker daemonとの疎通が成功
確認する場合は、Docker Host URIのTest Connection
の結果とコンソール上でdocker version
と打ち込んだ際の結果を比較$ docker version Client: Version: 18.05.0-ce API version: 1.37 Go version: go1.9.5 Git commit: f150324 Built: Wed May 9 22:16:25 2018 OS/Arch: linux/amd64 Experimental: false Orchestrator: swarm Server: Engine: Version: 18.03.0-ce API version: 1.37 (minimum version 1.12) Go version: go1.10 Git commit: 0520e24302 Built: Fri Mar 23 01:48:12 2018 OS/Arch: linux/amd64 Experimental: false続いて、agentコンテナを設定
1. Docker Agent templates
2. Add Docker Template
3. agentのlabel記入docker-agent
4. コンテナイメージ記入benhall/dind-jenkins-agent:v2
5. volumeのマウント設定/var/run/docker.sock:/var/run/docker.sock
6. agentコンテナとの接続方法指定Connect with SSH
7. saveCreate Build Project
ここでは、先ほどの"jenkins-agent"を用いて実行するコンテナの設定を行う
手順は以下の通り
1.Create new jobs
でジョブの作成
2.Freestyle project
を選択し、プロジェクト名として"Katacoda Jenkins Demo"
3. コンテナ作成に当たって、Docker daemonに要求を出せる"dokcer-agent"(先の手順で作成)を選択
4. 実行するコンテナイメージとしてGitレポジトリを指定
5.Add Build Step
からExecute Shell
を選択し、buildの詳細を以下のように記述し、Savels docker info docker build -t katacoda/jenkins-demo:${BUILD_NUMBER} . docker tag katacoda/jenkins-demo:${BUILD_NUMBER} katacoda/jenkins-demo:latest docker imagesBuild Project
ここでは、dashboardから実際にjenkinsによるコンテナbuildを実行
Build Now
をクリックjenkinsコンテナからjenkins-agentコンテナが起動され、そこからGitのdockerfileをもとにコンテナを起動するので多少時間がかかる
時折、pending—Jenkins doesn’t have label docker-agent
というエラーがdashboardに表示されることもあるView Console Output
コンテナの起動がjenkinsから確認出来たら、コンソールでコンテナをrunする
$ docker run -d -p 80:80 katacoda/jenkins-demo:latest ~~~ $ curl host01 <h1>This request was processed by host: </h1>
docke image
でコンテナイメージを確認
benhall/dind-jenkins-agent
はdocker-agentイメージのことまた、```TAG```の部分に着目すると、```1,2,latest```の三つが用意されている これは、"Create Build Project"の手順5にて、```${BUILD_NUMBER}```をタグとして管理し、jenkinsによるコンテナbuildの処理が二回行われたことを意味する
- 投稿日:2020-10-22T10:18:04+09:00
【Windows】俺的におすすめなソフト一覧
パソコンを初期化したときに入れるアプリ
Reboot、PCOffice系
https://www.office.com/VSCode+Java+ReactNative(Node.js)
https://code.visualstudio.com/download
https://code.visualstudio.com/docs/languages/java
https://nodejs.org/ja/PyCharm+Anaconda
https://www.jetbrains.com/ja-jp/pycharm/download/#section=windows
https://www.anaconda.com/products/individualDeepL
https://www.deepl.com/ja/translatorAtok
https://mypassport.atok.com/install/install_win.html7zip
https://sevenzip.osdn.jp/Gyazo
https://gyazo.com/ja
- 投稿日:2020-10-22T08:08:14+09:00
Gitサブモジュールについて
Gitサブモジュール
Gitサブモジュールを使用するとあるGitリポジトリを別のGitリポジトリのサブディレクトリとして扱うことができます。
これから簡単なコードで動的コンテンツと静的なコンテンツは2つのGitに分けて作成してみます。動的Gitリポジトリ
「git_main」の名でリポジトリを作って以下のHtmlだけをPushして置きます。
このリポジトリにはイメージ(test.png)が存在しません。html<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <img src="./assets/images/test.png"/> </body> </html>静的Gitリポジトリ
「assets」の名でリポジトリを作って以下のHtmlだけをPushして置きます。
こちらのリポジトリにイメージ(test.png)が存在します。
動的Gitリポジトリに「静的Gitリポジトリ」を「Gitサブモジュール」で追加
$git submodule add https://github.com/xxxxx/assets.gitGitサブモジュール実行前
Gitサブモジュール実行後
.gitmodules
.gitmodulesファイルができて内容は以下のようなパスとURLが保存されます。
.gitmodules[submodule "assets"] path = assets url = https://github.com/xxxxx/assets.gitsubmoduleが更新された場合メインGitリポジトリを更新
- assetsリポジトリにイメージ(test2.png)をもう1つ追加してPUSH
- git_mainリポジトリから以下のコマンドを実行
- git_mainリポジトリにassetsリポジトリで追加したイメージが追加される。
$git submodule update --remote
- 投稿日:2020-10-22T08:08:14+09:00
Gitサブモジュールを使って動的・静的コンテンツをわけてみる
Gitサブモジュール
Gitサブモジュールを使用するとあるGitリポジトリを別のGitリポジトリのサブディレクトリとして扱うことができます。
これから簡単なコードで動的コンテンツと静的なコンテンツは2つのGitに分けて作成してみます。動的Gitリポジトリ
「git_main」の名でリポジトリを作って以下のHtmlだけをPushして置きます。
このリポジトリにはイメージ(test.png)が存在しません。html<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <img src="./assets/images/test.png"/> </body> </html>静的Gitリポジトリ
「assets」の名でリポジトリを作って以下のHtmlだけをPushして置きます。
こちらのリポジトリにイメージ(test.png)が存在します。
動的Gitリポジトリに「静的Gitリポジトリ」を「Gitサブモジュール」で追加
$git submodule add https://github.com/xxxxx/assets.gitGitサブモジュール実行前
Gitサブモジュール実行後
.gitmodules
.gitmodulesファイルができて内容は以下のようなパスとURLが保存されます。
.gitmodules[submodule "assets"] path = assets url = https://github.com/xxxxx/assets.gitassetsが更新された場合メインGitリポジトリから更新
- assetsリポジトリにイメージ(test2.png)をもう1つ追加してPUSH
- git_mainリポジトリから以下のコマンドを実行
- git_mainリポジトリにassetsリポジトリで追加したイメージが追加される。
$git submodule update --remote
- 投稿日:2020-10-22T08:08:14+09:00
Gitサブモジュールを使って静的コンテンツをわけてみる
Gitサブモジュール
Gitサブモジュールを使用するとあるGitリポジトリを別のGitリポジトリのサブディレクトリとして扱うことができます。
これからGitサブモジュールを使って静的コンテンツ用のGitリポジトリをサブディレクトリとして使ってみます。メインGitリポジトリ
「git_main」の名でリポジトリを作って以下のHtmlだけをPushして置きます。
このリポジトリにはイメージ(test.png)が存在しません。html<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <img src="./assets/images/test.png"/> </body> </html>静的ファイルがあるGitリポジトリ
「assets」の名でリポジトリを作って以下のHtmlだけをPushして置きます。
こちらのリポジトリにイメージ(test.png)が存在します。
メインGitリポジトリに「静的ファイルがあるGitリポジトリ」を「Gitサブモジュール」で追加
$git submodule add https://github.com/xxxxx/assets.gitGitサブモジュール実行前
Gitサブモジュール実行後
.gitmodules
.gitmodulesファイルができて内容は以下のようなパスとURLが保存されます。
.gitmodules[submodule "assets"] path = assets url = https://github.com/xxxxx/assets.gitassetsが更新された場合メインGitリポジトリから更新
- assetsリポジトリにイメージ(test2.png)をもう1つ追加してPUSH
- git_mainリポジトリから以下のコマンドを実行
- git_mainリポジトリにassetsリポジトリで追加したイメージが追加される。
$git submodule update --remote
- 投稿日:2020-10-22T01:55:49+09:00
ssh -T git@github.comの結果はgit@github.com: Permission denied (publickey).の時の対策
Publickeyを作り、GitHubに貼り付けましたが、接続確認するとまたエラーが出ました。
原因はkeyを保存するファイルのファイル名を「id_rsa」以外の名称に命名したからです。
名称を変更したらエラーが解消しました。Step1. ターミナルで下記のコマンドを入力します
qiita.rbcd ~/.ssh ls結果:
qiita.rbknown_hosts y y.pubStep2. ファイル名を変更します
qiita.rbmv y.pub id_rsa.pub mv y id_rsaStep3. 接続確認
qiita.rbssh -T git@github.com結果:Enter passphrase for key '/Users/xxx/.ssh/id_rsa':
Step4. Keyを作る時に設定したパスワード入力します
下記のメッセージが表示されれば、リモートサーバーに接続成功しています
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
- 投稿日:2020-10-22T00:46:40+09:00
git で間違えてmaster branch で作業を進めてしまったときに作業ブランチに移る
はじめに
今日も同じ作業を行うために調べたので、メモします。
- 作業内容をmaster branch に merge した後、ローカルでmaster branch でそのまま作業してcommit を進めてしまった。
- master branch をもとのコミットまで戻り、作業ブランチを作り、そこに作業分を反映させたい
ということでございます。
方針は単純です。
- 間違って進めてしまった分をpatch として保存する
- master branch でのcommit をさかのぼり、新しいブランチを作る。
- 先に保存したパッチを充てる。
- 間違って進めてしまった master branch のコミットを消す。
動作確認
間違ってmaster branch でコミットを進めてみます。
- 初めに、file001だけがcommit された状態だとします。
$ git log --oneline * 3e9769f first commit
- その後、file002, file003 をそれぞれmaster branch のまま追加してしまったとします。
$ git add file002 $ git commit -m "file002" $ git add file003 $ git commit -m "file003" $ git log --oneline --graph --all * 3b570c0 (HEAD -> master) file003 * dc5ed63 file002 * 3e9769f first commit
- ここで「しまった。作業ブランチを切って作業するつもりだったのに。。。」と気が付きます。
まず、差分をpatch として保存します。ただの git diff です。こういう設計は素晴らしい!
$ git diff HEAD^^ > tmp.path戻って作業ブランチを作ります。
$ git checkout HEAD^^ HEAD is now at 3e9769f first commit $ git checkout -b dev/test Switched to a new branch 'dev/test'
- すかさずpatch を当てます。
$ patch -p1 < tmp.patch patching file file002 patching file file003
- ここで本来行いたかったコミットをします。
$ git add file002 file003 $ git commit -m "add file002 and file003"
- ですが、さきほど誤って進めてしまった master branch のcommit が残っている。
$ git log --oneline --graph --all * c7a2497 (HEAD -> dev/test) file002 file003 | * 3b570c0 (master) file003 | * dc5ed63 file002 |/ * 3e9769f first commit
- 消そう。まず master branch に戻ろう。
$ git checkout master Previous HEAD position was 3e9769f first commit Switched to branch 'master' $ git log --oneline --graph --all * c7a2497 (dev/test) file002 file003 | * 3b570c0 (HEAD -> master) file003 | * dc5ed63 file002 |/ * 3e9769f first commit
- コミットを消す。というのは、直前のコミットにリセットする、と指示するらしい。
$ git reset --hard dc5ed63 HEAD is now at dc5ed63 file002 $ git log --oneline --graph --all * c7a2497 (dev/test) file002 file003 | * dc5ed63 (HEAD -> master) file002 |/ * 3e9769f first commit
- 更にもう一度reset すると、問題のcommit は無くなる。
$ git reset --hard HEAD^ HEAD is now at 3e9769f first commit $ git log --oneline --graph --all * c7a2497 (dev/test) file002 file003 * 3e9769f (HEAD -> master) first commit
- これで晴れて作業ブランチに戻ろう
$ git checkout dev/test Switched to branch 'dev/test' $ ls file001 file002 file003 tmp.patchまとめ
所望の作業はこれでできた。
- 実は注意点として、問題のコミットを消すときにはちゃんとmaster branch に戻ることが必要でした。戻らずに git resetを行ったら、新作の作業ブランチと問題のコミットの残るmaster branchが接続されてしまいました。そこのところの仕組みが分かっていませんが、(おい!苦笑)、気を利かせてくれたんだと思います。明示的に一歩一歩消すために、master branch の先頭のcommit から一歩一歩戻りました。
git reset --hard
がgit reset --soft
か選択肢がありますが、ここでは、必要な状態は dev/test にすべて保存されているので、作業領域ではhard で消してしまってよい、と考えました。もっと簡単に行う方法もきっとあるのだと思いますが。まずはこのあたりで。
(2020/10/22)