20201022のGitに関する記事は9件です。

GitHubやGitでエラーに遭遇したときの解決方法のまとめ

Windows10,CentOS7等のGitを使えるようにする方法

  1. Windows 10 と Powershell(WSL含む) で git を利用する
  2. CentOS7で最新バージョンのgitをインストール

GitHubを使う前に知っておきたいGitの使い方

【Git】基本コマンド

Gitのエラー解消方法

  1. Commit failed - exit code 1 receivedの対処法の忘備録このエラーが発生した時には、.gitというファイルがファイル内に作成されているせいです。なので、隠しファイルを表示して、.gitのファイルを削除することで、commitすることが可能になります。 このサイトを参考にして、.gitの隠しファイルを表示させて、削除してください。そうすることで、エラーを解消出来ます。j
  2. git revert コマンドを実行すると "error: revert is not possible because you have unmerged files." エラーが表示される - Gitの使い方
  3. git checkout で error: Your local changes to the following files would be overwritten by checkoutと言われる解決方法
  4. git checkout理解してなかった
  5. Gitでクローン時に「Clone succeeded, but checkout failed」が出る時の対処法

GitHubの始め方

  1. GitHubで作成から巻き戻しまで、厳選リンク集
  2. 今日からはじめるGitHub 〜 初心者がGitをインストールして、プルリクできるようになるまでを解説

PullRequestについて

  1. プルリクエストを使った開発プロセス
  2. フォークからプルリクエストを作成する
  3. 【GitHub】特定のコミットに戻す
  4. git 特定のコミットだけ消したい時(revert)

GitHub応用編

  1. git submodule とは git submodule は、外部の git リポジトリを、自分の git リポジトリのサブディレクトリとして登録し、特定の commit を参照する仕組みです。
  2. gitのsubmoduleだけを最新版にしたい場合のコマンドメモ
  3. GithubのSSH通信設定
  4. GitHubでssh接続する手順 ~ 公開鍵・秘密鍵の生成から ~

GithHubを応用して、簡単なプログラムをインターネットに向けて公開する方法

  1. GitHubページサイトのカスタムドメインの構成
  2. Websites for you and your projects.
  3. GitHub+CircleCI入門

PyCharmでのGitやGitHubの設定方法

  1. PyCharmでGitHubにプッシュする方法
  2. PyCharmでGitを使用する方法
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【入門】GitHubの始め方からGitでエラーに遭遇したときの解決方法などの厳選リンク集

Windows10,CentOS7等のGitを使えるようにする方法

  1. Windows 10 と Powershell(WSL含む) で git を利用する
  2. CentOS7で最新バージョンのgitをインストール

GitHubを使う前に知っておきたいGitの使い方

【Git】基本コマンド

Gitのエラー解消方法

  1. Commit failed - exit code 1 receivedの対処法の忘備録このエラーが発生した時には、.gitというファイルがファイル内に作成されているせいです。なので、隠しファイルを表示して、.gitのファイルを削除することで、commitすることが可能になります。 このサイトを参考にして、.gitの隠しファイルを表示させて、削除してください。そうすることで、エラーを解消出来ます。j
  2. git revert コマンドを実行すると "error: revert is not possible because you have unmerged files." エラーが表示される - Gitの使い方
  3. git checkout で error: Your local changes to the following files would be overwritten by checkoutと言われる解決方法
  4. git checkout理解してなかった
  5. Gitでクローン時に「Clone succeeded, but checkout failed」が出る時の対処法

GitHubの始め方

  1. GitHubで作成から巻き戻しまで、厳選リンク集
  2. 今日からはじめるGitHub 〜 初心者がGitをインストールして、プルリクできるようになるまでを解説

PullRequestについて

  1. プルリクエストを使った開発プロセス
  2. フォークからプルリクエストを作成する
  3. 【GitHub】特定のコミットに戻す
  4. git 特定のコミットだけ消したい時(revert)

GitHub応用編

  1. git submodule とは git submodule は、外部の git リポジトリを、自分の git リポジトリのサブディレクトリとして登録し、特定の commit を参照する仕組みです。
  2. gitのsubmoduleだけを最新版にしたい場合のコマンドメモ
  3. GithubのSSH通信設定
  4. GitHubでssh接続する手順 ~ 公開鍵・秘密鍵の生成から ~

GithHubを応用して、簡単なプログラムをインターネットに向けて公開する方法

  1. GitHubページサイトのカスタムドメインの構成
  2. Websites for you and your projects.
  3. GitHub+CircleCI入門

PyCharmでのGitやGitHubの設定方法

  1. PyCharmでGitHubにプッシュする方法
  2. PyCharmでGitを使用する方法
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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には下記の手順を踏む
    1. 特定のpluginをインストール
    2. pluginの設定
    3. jenkins agentの設定
    4. jenkins agentに実行させるprojectの作成
    5. 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

コンテナが正常に既往していることを確認後、こちらのリンクから移動(デフォルト)
ログインには、admin344827fbdbfb40d5aac067c7a07b9230
環境はこのようになっている

図1.png

Configure Docker Plugin

ここでは、Docker pluginを設定する
Docker pluginを設定することで、jenkinsがdockerデーモンとの通信をagentを介して実現(以下の概略図参照)

図4.png

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と打ち込んだ際の結果を比較

図3.png

$ 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. save

図2.png

Create 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の詳細を以下のように記述し、Save

ls
docker info
docker build -t katacoda/jenkins-demo:${BUILD_NUMBER} .
docker tag katacoda/jenkins-demo:${BUILD_NUMBER} katacoda/jenkins-demo:latest
docker images

図1.png

Build 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> 

図3.png

docke imageでコンテナイメージを確認

図2.png

  
benhall/dind-jenkins-agentはdocker-agentイメージのこと

また、```TAG```の部分に着目すると、```1,2,latest```の三つが用意されている
これは、"Create Build Project"の手順5にて、```${BUILD_NUMBER}```をタグとして管理し、jenkinsによるコンテナbuildの処理が二回行われたことを意味する
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Windows】俺的におすすめなソフト一覧

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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>

スクリーンショット 2020-10-22 7.40.03.png

静的Gitリポジトリ

「assets」の名でリポジトリを作って以下のHtmlだけをPushして置きます。
こちらのリポジトリにイメージ(test.png)が存在します。
スクリーンショット 2020-10-22 7.51.23.png

動的Gitリポジトリに「静的Gitリポジトリ」を「Gitサブモジュール」で追加

$git submodule add https://github.com/xxxxx/assets.git

Gitサブモジュール実行前

スクリーンショット 2020-10-22 7.52.53.png

Gitサブモジュール実行後

スクリーンショット 2020-10-22 7.53.15.png

.gitmodules

.gitmodulesファイルができて内容は以下のようなパスとURLが保存されます。

.gitmodules
[submodule "assets"]
    path = assets
    url = https://github.com/xxxxx/assets.git

submoduleが更新された場合メインGitリポジトリを更新

  1. assetsリポジトリにイメージ(test2.png)をもう1つ追加してPUSH
  2. git_mainリポジトリから以下のコマンドを実行
  3. git_mainリポジトリにassetsリポジトリで追加したイメージが追加される。
$git submodule update --remote 

スクリーンショット 2020-10-22 8.05.17.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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>

スクリーンショット 2020-10-22 7.40.03.png

静的Gitリポジトリ

「assets」の名でリポジトリを作って以下のHtmlだけをPushして置きます。
こちらのリポジトリにイメージ(test.png)が存在します。
スクリーンショット 2020-10-22 7.51.23.png

動的Gitリポジトリに「静的Gitリポジトリ」を「Gitサブモジュール」で追加

$git submodule add https://github.com/xxxxx/assets.git

Gitサブモジュール実行前

スクリーンショット 2020-10-22 7.52.53.png

Gitサブモジュール実行後

スクリーンショット 2020-10-22 7.53.15.png

.gitmodules

.gitmodulesファイルができて内容は以下のようなパスとURLが保存されます。

.gitmodules
[submodule "assets"]
    path = assets
    url = https://github.com/xxxxx/assets.git

assetsが更新された場合メインGitリポジトリから更新

  1. assetsリポジトリにイメージ(test2.png)をもう1つ追加してPUSH
  2. git_mainリポジトリから以下のコマンドを実行
  3. git_mainリポジトリにassetsリポジトリで追加したイメージが追加される。
$git submodule update --remote 

スクリーンショット 2020-10-22 8.05.17.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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>

スクリーンショット 2020-10-22 7.40.03.png

静的ファイルがあるGitリポジトリ

「assets」の名でリポジトリを作って以下のHtmlだけをPushして置きます。
こちらのリポジトリにイメージ(test.png)が存在します。
スクリーンショット 2020-10-22 7.51.23.png

メインGitリポジトリに「静的ファイルがあるGitリポジトリ」を「Gitサブモジュール」で追加

$git submodule add https://github.com/xxxxx/assets.git

Gitサブモジュール実行前

スクリーンショット 2020-10-22 7.52.53.png

Gitサブモジュール実行後

スクリーンショット 2020-10-22 7.53.15.png

.gitmodules

.gitmodulesファイルができて内容は以下のようなパスとURLが保存されます。

.gitmodules
[submodule "assets"]
    path = assets
    url = https://github.com/xxxxx/assets.git

assetsが更新された場合メインGitリポジトリから更新

  1. assetsリポジトリにイメージ(test2.png)をもう1つ追加してPUSH
  2. git_mainリポジトリから以下のコマンドを実行
  3. git_mainリポジトリにassetsリポジトリで追加したイメージが追加される。
$git submodule update --remote 

スクリーンショット 2020-10-22 8.05.17.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ssh -T git@github.comの結果はgit@github.com: Permission denied (publickey).の時の対策

Publickeyを作り、GitHubに貼り付けましたが、接続確認するとまたエラーが出ました。
原因はkeyを保存するファイルのファイル名を「id_rsa」以外の名称に命名したからです。
名称を変更したらエラーが解消しました。

Step1. ターミナルで下記のコマンドを入力します
qiita.rb
cd ~/.ssh
ls

結果:

qiita.rb
known_hosts   y     y.pub
Step2. ファイル名を変更します
qiita.rb
mv y.pub id_rsa.pub
mv y id_rsa
Step3. 接続確認
qiita.rb
ssh -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.

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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 --hardgit reset --soft か選択肢がありますが、ここでは、必要な状態は dev/test にすべて保存されているので、作業領域ではhard で消してしまってよい、と考えました。

もっと簡単に行う方法もきっとあるのだと思いますが。まずはこのあたりで。
(2020/10/22)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む