20201010のGitに関する記事は17件です。

[Linux便利コマンド] deltaを入れてみる

環境

概要

diffをしたいと思ったときにデフォルトのものだと色もつかないし表示が見にくかった。
image.png

調べたところcolordiffなるものがあることが分かりました。
https://qiita.com/trapple/items/6657b903bf027464e70d

これだけでもよさそうでしたが、deltaというrust製のものを使用すればさらに見やすくできそうだったのでこちらを検討してみました。
https://wonderwall.hatenablog.com/entry/rust-delta

deltaインストール

ダウンロード
$ wget https://github.com/dandavison/delta/releases/download/0.4.1/delta-0.4.1-x86_64-unknown-linux-musl.tar.gz
$ tar -zxvf delta-0.4.1-x86_64-unknown-linux-musl.tar.gz
$ cd delta-0.4.1-x86_64-unknown-linux-musl

すでにbinファイルがあるためこれを移動すればよいだけでした

$ mv ./delta /usr/local/bin

deltaの設定

.gitconfig
[core]
  pager = delta
[interactive]
  diffFilter = delta --color-only

これにてgit diffをした際にdeltaが反映されるようになりました

設定を諸々調整

.gitconfig
[delta]
  diff-so-fancy=true
  keep-plus-minus-markers=true
  minus-emph-style="bold 94 89"
  plus-emph-style="bold 29 29"
  hunk-header-style="omit"
  line-numbers=true

結果

git diffの見た目

before
image.png

after
image.png

通常のdiffの見た目

gitではない場合のdiffもdeltaコマンドで置き換えることができるためこれで見やすくなりました

before
image.png

after
image.png

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

ubuntu20.04/debian10+apacheでgitサーバ(smart http)

何か下書き一覧に「3 month ago」とか書かれていた(笑)
せっかく書いたのだから放置しておくのもなんですし、もう20.10も出る頃ですので、その前に公開しておきましょう。

前回(?)の続きです。

まぁ、自分が使うのは主にFreeBSDか、ubuntuかdebianなんで、この際ubuntu/debianでも試してみようかと。

環境

  • VirtualBox on ubuntu20.04
  • ubuntu server 20.04

前回と同様、インストールしてネットワークが接続てきているところまで設定し終わっている事を前提とします。

設定

sudo apt install apache2 git

なんかgitは最初から入っていたようなのだけど、気の所為かもしれないので念の為。

ubuntuの場合、「/etc/apache2/sites-available」ディレクトリ以下にホストの設定を書くのが流儀みたいなので、デフォルトの設定をコピーして設定します。

sudo cp -v /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/000-myhost.conf

コピーした後、編集。

<VirtualHost *:80>  

    # もともと書かれてあったものは、そのまま。

    SetEnv GIT_PROJECT_ROOT /var/www/git
    SetEnv GIT_HTTP_EXPORT_ALL
    ScriptAlias /git /usr/lib/git-core/git-http-backend
    <Location /git>  
        AuthName "Git Repository"
        AuthType Basic
        AuthUserFile /etc/apache2/git.passwd
        Require valid-user
    </Location>
</VirtualHost>

パスワードファイルを作成します。

sudo htpasswd -c /etc/apache2/git.passwd katsuko

CGIモジュールと、先のホスト設定ファイルを有効にします。
(デフォルト設定のホストファイルを無効にします)

sudo a2enmod cgi
sudo a2dissite 000-default
sudo a2ensite 000-myhost

レポジトリの作成。

sudo mkdir -p /var/www/git
sudo git init --bare --shared /var/www/git/project.git
cd /var/www/git/project.git
sudo git update-server-info 
sudo chown -R www-data:www-data .

サーバの再起動。

sudo systemctl restart apache2

Debian 10 (Buster)の場合

上と一緒。

いや手抜きじゃなくて。
まぁ、debianの場合rootで作業するので、その場合は「sudo」は要らない、という点ぐらいは察してください。

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

特定の既存ブランチに切り替える

コマンド

$ git branch | grep 'ブランチ名' | xargs -I{} git checkout {}
  • git branch

    • Gitブランチ表示
  • | grep 'ブランチ名'

    • 特定のブランチ名で検索
  • | xargs -I{} git checkout {}

    • 取得ブランチでそのまま切り替える
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Git developブランチにマージされたlocalブランチを削除する

コマンド

$ git branch -r --merged develop | grep "ブランチ名" | cut -d "/" -f2- | xargs -t -I{} git push --delete origin {}
  • git branch -r --merged develop

    • developブランチにマージされたリモートブランチ表示
  • | grep "ブランチ名"

    • 特定のブランチ名で検索
  • | cut -d "/" -f2-

    • 最初に出現するスラッシュまでの文字列を除外
  • | xargs -t -I{} git push --delete origin {}

    • 洗い出したブランチを削除する
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Git fetchとpullの違い

どちらも「リモートからローカルリポジトリの内容を更新する」という操作なのですが、少し違いがあるので、そこを解説します。

ざっくりとまとめ

fetch・・・リモートと通信を行い、更新された内容をローカルリポジトリに取り込む。(ローカルのソースファイル自体はまだ更新されない)
pull・・・上記のfetchとmergeというコマンドを連続して実行し、リモートの更新内容をローカルのソースファイルに反映させる。

ざっくりしすぎたかも。。ここから少し詳しく書いていきます。

fetchって何?

まずはfetchの解説、の前に、簡単に「3種類のブランチ」の説明をしておきます。
Gitの仕組みの根幹の部分に関するものであり、複数人(複数環境)でリポジトリを共有するチーム開発においては、必ずかかわっていかなければならないものです。
fetchコマンドもこの概念と密にかかわっています。この概念を簡単にでも理解しておくと、fetchコマンドの理解が早くなると思います。

Gitの3種類のブランチ

リモートブランチ
ローカルブランチ
リモート追跡ブランチ(リモートトラッキングブランチ)

①のリモートブランチは、その名の通りリモート環境上に存在するブランチです。
リモートで全員がアクセスできる共有のブランチであり、最終的な成果物となりうるブランチです。協力してキレイに保ちましょう。

②のローカルブランチは、その名の通りローカル環境上に存在するブランチです。
ソースを新規作成したり修正したりして、その内容をコミットしているのは、ローカルブランチ上での作業になります。

①と②はそのままの意味なので、あまり理解に苦しむことはないと思います。ですが、③は少し特殊な役割になるので、丁寧に解説します。

③のリモート追跡ブランチは、「ローカルリポジトリ上で①のリモートブランチの内容のコピーをし続けるブランチ」です。
コピーをし続ける、変更内容を追いかける、から「追跡」ブランチと名付けられています。
Git系の記事とかでたまに見かけるorigin/masterという形式で記載されたブランチ名は、リモート追跡ブランチ名を指しています。
役割としては、①リモートブランチの情報をローカルのリポジトリに引き込む際の受け皿、①と②の橋渡し役みたいなものです。
また、この③追跡ブランチのソースの内容を直接編集してコミット、なんてことはできません。

では、この③追跡ブランチが更新されるシチュエーションはというと、「fetch」と「push」のどちらかのコマンドが実行されたときのみとなります。(ブランチの作成、削除は更新には含めていません)
リモート側から情報を更新するのがfetch、ローカル側から情報を更新するのがpushです。

はぁ、、、やっとfetch出てきた。。。

つまりfetchとは

①リモートブランチからローカルリポジトリの③リモート追跡ブランチに情報を送って更新をかけること
となります。

ここで大事なのは、更新されるのは③追跡ブランチであって、②ローカルブランチではない、ということです。
PC上のソースファイルたちは、②のローカルブランチに紐づいているものなので、fetchだけではソースファイル自体は更新されない、ということになります。
ソースファイルに更新を反映させるためには、②のローカルブランチに③のリモート追跡ブランチを「merge」する必要があります。

※fetchとpull、二つのコマンドの概念を説明する上で、「merge」というコマンドからは逃げられないのですが、この記事ではmergeに関する詳細な解説は省きます。
(mergeだけで3時間語れるくらい深い深い。。。)
この記事を読むうえでは、「2つのブランチの内容を統合するコマンド」くらいのイメージで十分です。

これで、リモートの更新を、PC上のソースファイルにまで反映することができました。
コマンドで表すとこの2行分。

git fetch origin master
git merge origin/master

masterブランチ上にいる想定で、リモート名:originからmasterブランチの最新の情報をローカルブランチに引き込むコマンドです。
origin/masterがリモート追跡ブランチ名ですね。

pullって何?

fetchを使用してローカルリポジトリの更新を行う場合、fetchだけでなくmergeを行う必要があります。
よく実行する作業なのに毎回2コマンド打つのめんどくね?という時のためのpullなのです。

つまりpullとは

「fetch + merge」を1コマンドで実行してくれる便利なヤツ
となります。

試しに、fetchを使ってローカルリポジトリを更新するコマンドと同様の動作を、pullを使用して実行しようとすると、、

git pull origin master

となります。ちゃんと1行にまとまりました!

まとめ

普段使用するのはpullでいいと思うけど、pull=fetch+mergeを理解しておかないと、いざ謎のエラーが出てきたときに詰むから気を付けてください。

理解したとてエラー内容によっては詰むときは詰むけどね!!!!!

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

[Azure] デプロイセンターのブランチを変更する方法

はじめに

Azure App ServiceにGit(GitHub含む)を使用してデプロイしている場合についてです。

Azureポータルのデプロイセンターでは構成時に設定したブランチからデプロイされるようになっていますが、Azureポータルからはこのブランチを変更する機能がありません。

つまり一度デプロイを切断して再構成することになってしまうのですが、切断せずに変更する方法を説明します。

before.png

ブランチを変更する方法

ブランチはKuduサービスでREST APIを呼び出すことで変更できます。

具体的な方法はここで説明されています。
Deployment branch

# Switch branch (/settings endpoint)
$ curl https://<user>:<pass>@<site>.scm.azurewebsites.net/settings \
       --data "{key: 'branch', value: '<branch>' }" \
       -H "Content-Type: application/json; charset=UTF-8"

<user><pass>はデプロイユーザの情報です。「発行プロファイルの取得」などから確認してください。
<site>はApp Service名です。
<branch>は変更したいブランチ名です。

実行するとブランチが変更されます。デプロイセンターの画面を更新して変更されたことを確認してください。
※ 2020/10/10現在、「最新の情報に更新」をしてもブランチなどの基本情報は更新されません。一度別のページに移動するか、ブラウザから更新してください。

ブランチが切り替わったらデプロイしましょう。
デプロイセンターの同期から新しいブランチでデプロイを開始します。
APIを利用してデプロイしたい場合は、その例も先程のwikiに記載されています。

バッチの紹介

先程のコマンドを使用してバッチファイルを作成しました。

blue32a/azure-change-deploy-branch

例えばKuduサービスから適当なディレクトリにバッチファイルを置いて実行できます。

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

CI/CDをkatacodaで体験(初心者向け) - Part2

CI/CD入門

このぺーじでは、katacodaと呼ばれる「ブラウザから無料で勉強用のインスタンスを起動できるWebサービス」を利用してCI/CDを実践します
内容は上記リンクに沿うので、不明点があればそちらへどうぞ

Gitのバージョン管理について - scenario2

ここでは、CI/CDとして欠かせないGitによるバージョン管理について学習します
このシナリオで学習することをさっと確認する場合は概要を確認
理解に間違い等がございましたら、ぜひご指摘ください

概要

  • git diffでレポジトリとワーキングディレクトリ、ステージング(オプションとして--staged)との差分をコードレベルで表示
  • git logでGitのレポジトリの履歴とコミットログを出力
  • git showはコミットで行われた変更を表示(前回コミットとの差分を出力)

Step 1 - Git Status

前回の記事で説明した通り、git statusはレポジトリの状態と異なるファイルの状態を出力します
現在のGit管理されているファイルの状態を確認

$ git  status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   committed.js

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

        untracked.js

no changes added to commit (use "git add" and/or "git commit -a")

レポジトリ上にcommitted.jsは存在しており、何らかの変更が加えられていると判明
一方、untracked.jsはレポジトリ上に存在しなく、新規で作成されたため、untracked fileと認識されています

Step 2 - Git Diff

git diffはレポジトリとワーキングディレクトリ、ステージング(ステージングとの比較には--stagedオプションを必要とする)との具体的な差分を出力します。
そのため、新規作成されたファイルは無視されます

$ git  diff
ESC[1mdiff --git a/committed.js b/committed.jsESC[m
ESC[1mindex 12e7e7c..fc77969 100644ESC[m
ESC[1m--- a/committed.jsESC[m
ESC[1m+++ b/committed.jsESC[m
ESC[36m@@ -1 +1 @@ESC[m
ESC[31m-console.log("Committed File")ESC[m
ESC[32m+ESC[mESC[32mconsole.log("Demostrating changing a committed file")ESC[m

ちなみに、git diffにより出力される対象は現在いるディレクトリには左右されない模様

$ pwd
/home/scrapbook/tutorial
$ mkdir testDirectry
$ git diff testDirectry/
$ cd testDirectry/
$ git diff
ESC[1mdiff --git a/committed.js b/committed.jsESC[m
ESC[1mindex 12e7e7c..fc77969 100644ESC[m
ESC[1m--- a/committed.jsESC[m
ESC[1m+++ b/committed.jsESC[m
ESC[36m@@ -1 +1 @@ESC[m
ESC[31m-console.log("Committed File")ESC[m
ESC[32m+ESC[mESC[32mconsole.log("Demostrating changing a committed file")ESC[m

また、特定のファイルの差分のみ表示する場合はgit diff <file_name>と指定すればよい

$ git diff untracked.js   //レポジトリに存在しないため出力されない
$ git diff committed.js
ESC[1mdiff --git a/committed.js b/committed.jsESC[m
ESC[1mindex 12e7e7c..fc77969 100644ESC[m
ESC[1m--- a/committed.jsESC[m
ESC[1m+++ b/committed.jsESC[m
ESC[36m@@ -1 +1 @@ESC[m
ESC[31m-console.log("Committed File")ESC[m
ESC[32m+ESC[mESC[32mconsole.log("Demostrating changing a committed file")ESC[m

Step 3 - Git Add

ワーキングディレクトリからステージングへのファイルの移動

$ ls -a
.  ..  committed.js  .git  untracked.js
$ git add .   //カレントディレクトリ上のファイルを一度にステージングに移動
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   committed.js
        new file:   untracked.js

このようにGitでの管理対象はファイルだけでなく、ディレクトリも指定可能
特定のファイルのみステージングへ移動させる場合、git add <file name>に置き換える

Step 4 - Staged Differences

step2にてgit diffはレポジトリとの差分を具体的に出力すると説明したが、正確にはレポジトリとワーキングディレクトリの差分を出力
ステージングとの差分を出力する場合は--stagedオプションを必要とする

$ git diff committed.js   //committed.jsはワーキングディレクトリ上に存在しないので出力なし
$ git diff --staged committed.js
ESC[1mdiff --git a/committed.js b/committed.jsESC[m
ESC[1mindex 12e7e7c..fc77969 100644ESC[m
ESC[1m--- a/committed.jsESC[m
ESC[1m+++ b/committed.jsESC[m
ESC[36m@@ -1 +1 @@ESC[m
ESC[31m-console.log("Committed File")ESC[m
ESC[32m+ESC[mESC[32mconsole.log("Demostrating changing a committed file")ESC[m

Step 5 - Git Log

git logはGitのレポジトリの履歴とコミットログを出力する

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   committed.js

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

        untracked.js

$ git log
ESC[33mcommit 3a8c0df6d91273ebd81a5c3c2b0e76303a722395ESC[mESC[33m (ESC[mESC[1;36mHEAD -> ESC[mESC[
Author: Katacoda Scenario <scenario@katacoda.com>
Date:   Sat Oct 10 09:00:32 2020 +0000

    Changed the output message in committed.js

ESC[33mcommit d006bf3fa576f22ba26ec10ff3e3dddeb27235dcESC[m
Author: Katacoda Scenario <scenario@katacoda.com>
Date:   Sat Oct 10 08:58:25 2020 +0000

    Initial Commit   //おそらくkatacodaの中でgit initが行われておりそのログと思われる
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

        untracked.js

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

ここで注目するところは、git logコマンドは追跡されているファイルを自動的に(内部的に)git commitしているということ
と認識しているが、もし間違っていたらご指摘ください

Step 6 - Git Show

git logはコミットの作成者とメッセージを示しますが、コミットで行われた変更を表示するには、コマンドgit showを使用

$ git show
ESC[33mcommit 68e9f2f3b092f0133b087c8f35599c31f5cb66e8ESC[mESC[33m (ESC[mESC[1;36mHEAD -> ESC[mESC[
Author: Katacoda Scenario <scenario@katacoda.com>
Date:   Sat Oct 10 09:22:11 2020 +0000

    Changed the output message in committed.js

ESC[1mdiff --git a/committed.js b/committed.jsESC[m
ESC[1mindex 12e7e7c..fc77969 100644ESC[m
ESC[1m--- a/committed.jsESC[m
ESC[1m+++ b/committed.jsESC[m
ESC[36m@@ -1 +1 @@ESC[m
ESC[31m-console.log("Committed File")ESC[m
ESC[32m+ESC[mESC[32mconsole.log("Demostrating changing a committed file")ESC[m
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

mergeとrebase完全理解した

Git MERGE vs REBASE のまとめ

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

masterブランチ

master.html
m1
m2
m3

masterブランチ ログ

m3
m2
m1

featureブランチ

master.html
m1
m2
feature.html
f1
f2

featureブランチ ログ

f2
f1
m2

最終的なファイル

master.html
m1
m2
m3
feature.html
f1
f2

git marge --squash feature

git add .
git commit -m "marge feature and master"
marge feature and master
m3
m2
m1

git rebase feature

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

margeとrebase完全理解した

Git MERGE vs REBASE のまとめ

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

masterブランチ

master.html
m1
m2
m3

masterブランチ ログ

m3
m2
m1

featureブランチ

master.html
m1
m2
feature.html
f1
f2

featureブランチ ログ

f2
f1
m2

最終的なファイル

master.html
m1
m2
m3
feature.html
f1
f2

git marge --squash feature

git add .
git commit -m "marge feature and master"
marge feature and master
m3
m2
m1

git rebase feature

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

GitHubのerror: GH007: Your push would publish a private email address.への対応方法

問題

GitHubに新規リポジトリを作成し、ローカルのレポジトリをコミットをしようとしたところ、謎のエラーに遭遇しました。

作業内容

GitHubサイト上にリポジトリを作成後、ローカルで下記の通りにレポジトリ作成、コミット、プッシュを実行。

git init
git remote add origin git@github.com:username/reponame.git
git add .
git commit -m “initial commit”
git push origin master

した結果、下記のエラーが発生。

remote: error: GH007: Your push would publish a private email address.
remote: You can make your email public or disable this protection by visiting:
remote: http://github.com/settings/emails

原因

下記条件の時にエラーが起きるようです。目的は意図しないメールアドレスの公開を防ぐためでしょう。

  • GitHubアカウントのメールアドレスを公開しない設定にしている
  • Publicなリポジトリを作成している
  • リポジトリのauthorが上記設定で非公開にしたメールアドレスになっている

解決策

解決先は単純でエラーに記載の通り、メールアドレスの公開設定を変更するだけです。

メールアドレスの公開設定を変更

アカウントの設定ページを開き、下記のチェックを外します。
email_cofig.png

GitのAuthor設定変更はGitHubのこの記事などを参照してください。

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

SourceTreeを使用して git: 'secrets' is not a git command. See 'git --help'. エラー解決方法

環境

macOS 10.15.6
git 2.23.0

SourceTreeでコミット使用とした際に以下のエラー画面が表示された

git: 'secrets' is not a git command. See 'git --help'.

いろいろ調べたのですが、方法としては
そもそもgit-secretsがインストールされていない可能性

brew install git-secrets

自分の場合は下の結果が表示され既にインストール済みと

Warning: git-secrets 1.3.0 is already installed and up-to-date

次に指定したgitと同じパスにgit-secretsを置くこと
自分は置いていたのですが、うまくいかず...

$ which git
/usr/local/bin/git
$ which git-secrets
/usr/local/bin/git-secrets

次にSourceTreeの設定でそもそもgitの指定が間違っている
/usr/local/bin/gitを指定する(環境設定 > Git > 「システムの Git を使用する」)
スクリーンショット 2020-10-10 15.29.57.png
自分の場合は/usr/local/Cellar/git/2.13.1/bin/gitの指定になっていたのが問題のようでした。

参考記事
【Git】git: 'secrets' is not a git command. See 'git --help'.というエラーがでたときの解決方法
AWSアクセスキーをGitリポジトリに混入させないために git-secrets を導入した

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

GitやGithubの使い方メモ

GitおよびGithubの使い方や各種設定および注意事項などのメモ書き

git init
git remote add等の
初期設定とmasterブランチ作成済みとして
僕は以下のようにしています。

git checkout -b 〇〇でブランチを切って
git status
git diff
git add .
git commit -m "コメント"
git push HEAD
を使用しています。

プルリクで修正がありましたら
再度git add、git commitをした上で
git rebase -i
git push -f origin HEADを実施します。

その後Githubでmasterへのマージが完了したら
git checkout master
git pull origin master
をします。

途中で別のブランチで別のタスクを行うときは、git stashを使っています。

Gitは奥が深く、全ての機能を使いこなすのは難しいし、
余計なことをすると他の人に迷惑がかかるので、私の使う Git command は非常限定的です。

基本的には、git checkout -b {ブランチ名} でブランチを作り、
そこで git status, git add, git commit を使って様々な変更を加え、
git push origin {ブランチ名} でサーバーにブランチをプッシュした後、
Github にアクセスして pull request を作った上で、コードレビューをして、
マージも Github 上で行う、
そして、マージしたものを git checkout master、git pull origin master で取得する、
というのが流れです。

複数の作業を同時期にする場合は、常に一度 master ブランチに戻って、
最新のものを pull し、そこから新たなブランチを作って作業します。

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

[GitHub]Gitの仕組みやコマンドの意味はよくわからないけど、GitHubでの学習記録をとりあえず始めておきたい

はじめに

エンジニア転職に向けて、
学習記録を GitHub で管理しとくと、
面接のときにもアピールになると聞いた!

→でも、GitHubもGitもよくわからんし、今は優先してじっくり学習してる余裕もないし。
…でもやっぱり、せっかく学習進めているんだから、GitHubでの学習記録はすぐにでも始めておきたいんだけどなぁ。

そんな過去の自分が知りたかった、GitHubでエンジニアの学習記録を(Gitの理解は後回しにして)とりあえず始める方法を、できるだけ少ないステップでまとめてみました。

※私はサーバーサイド学習中の実務未経験者で、最近、UdemyのGit: もう怖くないGit!チーム開発で必要なGitを完全マスターのおかげで、もう怖くないGit!な状態になったばかりで(超おすすめです)、順調にGitHubに草を生やし始めています:relaxed:
スクリーンショット 2020-10-10 3.43.46.png

※記事のとおりやってもできない等あれば、教えていただけると嬉しいです

この記事のとりあえずのゴール

  • とりあえず、学習記録(コードを書いたファイルやディレクトリ)をGitHubに初めて載せる
  • とりあえず、その後の学習記録の進捗(ファイルやコードの変更履歴)をGitHubへ記録できる

※ ステージやコミットなどの主要な用語の説明も思いっきり省略させていただくので、この記事を読んでもGitの仕組みについてはわかるようにはならないです:lemon:

前提

  • パソコンはMac
  • Gitのダウンロード(GitはデフォルトでMacには入っている)
  • ターミナルでのコマンド操作(ディレクトリの移動ができる)
  • GitHubにプッシュしたことがない

0. とりあえず準備

0-1. GitHubのアカウント未登録の方は、アカウント登録する(無料)

https://github.com/
スクリーンショット 2020-10-07 22.12.54.png

0-2. Git の初期設定

  • ターミナルで、GitHubで登録したユーザー名とメールアドレスを未設定の場合は、git configコマンドを実行して、設定しておく
ターミナル
# ユーザー名を設定(" "内は自分の user.name に置き換える)
$ git config --global user.name "github user name"

# メールアドレスを設定(GitHubで設定した自分の user.email に置き換える)
$ git config --global user.email github@example.com

1. ターミナルでの手順

1-1. 学習を記録したいディレクトリに移動する

1-2. git initコマンドを実行して .git ディレクトリを作成する

ターミナル
$ git init

※ .git ディレクトリ ができた階層とそれより下のディレクトリやファイルの変更履歴が管理される

1-3. git addコマンドを実行して、ステージに追加する

ターミナル
$ git add .

1-4. git commitコマンドを実行して、コミットする

ターミナル
$ git commit -m "コミットメッセージ"

※ コミットメッセージ は、変更内容の説明を書く

2. GitHub ページでの手順

2-1. GitHub上でリポジトリを作成する

※ リポジトリとは、履歴データの保管場所のこと

  • GitHub を開く → Your profile へ移動する

  • ① Repositories をクリックする → ② New をクリックする
    スクリーンショット 2020-10-07 16.19.39.png

  • ① Repository name を入力する → ② Create repository をクリックする
    スクリーンショット 2020-10-07 16.21.33のコピー.png

  • ① HTTPS を選択する → ② 「…or push an existing repository from the command line」のコマンドをコピーする
    スクリーンショット 2020-10-07 16.21.57のコピー.png

3. ターミナルに戻っての手順

3-1. GitHubでコピーしたコマンドを、ターミナルに貼り付けて実行する

ターミナル
$ git remote add origin https://github.com/(ユーザー名)/(リポジトリ名)
$ git branch -M main
$ git push -u origin main

※ 実行した時に、publickey(公開鍵)についての下記エラーがでたら…

エラー文
git@github.com: Permission denied (publickey).

→下記のQiita記事を参考にしたら解消しました
- GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~ - Qiita


3-2. GitHubに変更履歴を送信できていれば、リロードすると内容が表示される

スクリーンショット 2020-10-07 16.24.24.png

以上でとりあえず、学習記録(コードを書いたファイルやディレクトリ)をGitHubに載せられた!


その後…日々の学習記録のGitHubへの記録方法

下記の3つのコマンドで、学習記録をGitHubでの変更履歴として管理できる!

  • ファイルの変更履歴を残したいタイミングで、下記の3つのコマンドを実行する
ターミナル
# ステージに追加する
$ git add .
# コミットする(コミットメッセージには変更内容を書く)
$ git commit -m "コミットメッセージ"
# GitHubへ送信する
$ git push

いかがでしたでしょうか?記事のとおりやってもできない等あれば、教えていただけると嬉しいです!
最後に…Gitの学習時間が確保できれば、UdemyのGit: もう怖くないGit!チーム開発で必要なGitを完全マスターで、Gitの仕組みまで理解して裏で何が起こっているかまで理解するのがおすすめです!
ありがとうございました!

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

Git操作時のエラー

ネストビジュアルの大角です。今回はGit操作時に起きるエラーの対応方法についてです。

Gitについて

Gitの事をあまり知らない人向けに簡単にご説明させて頂きます。
分散型バージョン管理システムのGitは開発において複数人で実装したプログラムを一つに統合したり、データのバックアップや共有等データを管理する為に様々な機能が有り、クラウド上でメンバー間のやりとりが可能な為プログラマやCGデザイナーに多く使われているツールです。

エラー内容

SourceTreeなどでpull操作が出来ない理由は色々有りますが、
下記エラーメッセージが出てpullが出来ない事が起きた事は無いでしょうか?
編集済みsourcetreeエラ.png

git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks fetch origin
remote: Repository xxxxxxxxxxx/japaneseversionvideos1 not found
fatal: repository 'https://bitbucket.org/xxxxxxxxxxx/japaneseversionvideos1.git/' not found
エラー終了しました。エラーの内容は上記をご覧ください。

こちらのエラー内容は
「対象のリポジトリが見つからへんで〜」
みたいなエラーですね。

エラーが起きる理由

チーム開発を行っている場合、他のチームメンバーがリポジトリ名を変更したり、譲渡したりした場合に起こりうる内容になります。

対応方法

新たにcloneすれば問題は有りませんが、その時点で大量の変更作業をしている場合などデータ移行が面倒だと思いますし、移行時にミスやトラブルが発生して作業やり直しが発生すると作業時間を大幅に無駄にしてしまいます。

【結論】

リモートリポジトリの向き先を変更すれば解決します。

SourceTreeで行う場合

(1)Bitbucketの場合ですと、サイト内の対象のリポジトリのページの下記箇所や
編集済みbitbucketurl (1).png

clone操作で表示される下記箇所からhttps以降の部分をコピーしてテキストなどに保存しておきます。
編集済みclone.png

(2)SourceTree右上に配置されている設定アイコンを押下します。
設定アイコン.png

(3)そうすると下記ウインドウが表示されますので対象のパスをクリックします。
編集済み設定ウインドウ.png

(4)パスが変更できるようになるので、(1)で保存していた内容を貼り付けます。
編集済み設定ウインドウ2.png

(5)この後にpull操作を行えば、上手くいくはずです。

Gitの設定ファイルを直接変更する場合

Gitの設定ファイルを直接変更しても対応可能ですが、Gitの設定ファイルが入っているディレクトリは非表示になっておりますので、過去に隠しファイルを表示させる設定を行っていない場合、Gitの設定ファイルを操作出来ませんので、隠しファイルの表示操作が必要となります。

MacとWindows10の2パターンでの方法をご説明します。

(A)
■Macの場合
ターミナルを起動し、下記コマンドを実行して下さい。

$ defaults write com.apple.finder AppleShowAllFiles TRUE

上記コマンドを実行後、設定を適用させる為に下記コマンドでFinderを一度終了します。

$ killall Finder

再度、Finderを開くと、隠しフォルダ・隠しファイルが表示されていると思います。

■Windows 10の場合
エクスプローラーを起動し「表示」タブを押下すると「隠しファイル」と表示された左横にチェックボックスが有りますので、クリックして「レ点」が表示されている状態にします。
隠しファイルの設定.png

(B)(A)の手順によって下記のようにGitのディレクトリが表示されますのでダブルクリックでディレクトリを開きます。
透過git.png

(C)ディレクトリの中にGitConfigというファイルが有るのでダブルクリックしてエディター編集ツールで開くと下記のように表示されます。
編集済みGItConfig.png

(D)事前に(1)で保存していた内容を貼り付けます。
url =「ここに(1)で保存していた内容を貼り付けます」
pushurl = 「ここに(1)で保存していた内容を貼り付けます」

(E)
■Macの場合
「Command」 + 「S」 で変更を保存します。

■Windowsの場合
「Ctrl」 + 「S」 で変更を保存します。

(F)この後にpull操作を行えば、上手くいくはずです。

終わりに

便利なGitが納品前などに突然使えなくなったら、予定していたスケジュールを変更せざるを得なくなったりして困ってしまいますよね。

あと、Gitを使い始めの頃はデータの関係性がさっぱり分からず、関係無いブランチにデータをマージしてしまったり、コンフリクト対応時に必要なデータを消してしまったりとトラブルに振り回されたりする事も有るかと思いますが、ある程度Gitの事が分かって来たら無くてはならない存在になってきますね。

読んで頂いて有難う御座います。
それでは失礼します。

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

Gitでpullした時のnot foundエラー

ネストビジュアルの大角です。今回はGit操作時に起きるエラーの対応方法についてです。

Gitについて

Gitの事をあまり知らない人向けに簡単にご説明させて頂きます。
分散型バージョン管理システムのGitは開発において複数人で実装したプログラムを一つに統合したり、データのバックアップや共有等データを管理する為に様々な機能が有り、クラウド上でメンバー間のやりとりが可能な為プログラマやCGデザイナーに多く使われているツールです。

エラー内容

SourceTreeなどでpull操作が出来ない理由は色々有りますが、
下記エラーメッセージが出てpullが出来ない事が起きた事は無いでしょうか?
編集済みsourcetreeエラ.png

git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks fetch origin
remote: Repository xxxxxxxxxxx/japaneseversionvideos1 not found
fatal: repository 'https://bitbucket.org/xxxxxxxxxxx/japaneseversionvideos1.git/' not found
エラー終了しました。エラーの内容は上記をご覧ください。

こちらのエラー内容は
「対象のリポジトリが見つからへんで〜」
みたいなエラーですね。

エラーが起きる理由

チーム開発を行っている場合、他のチームメンバーがリポジトリ名を変更したり、譲渡したりした場合に起こりうる内容になります。

対応方法

新たにcloneすれば問題は有りませんが、その時点で大量の変更作業をしている場合などデータ移行が面倒だと思いますし、移行時にミスやトラブルが発生して作業やり直しが発生すると作業時間を大幅に無駄にしてしまいます。

【結論】

リモートリポジトリの向き先を変更すれば解決します。

SourceTreeで行う場合

(1)Bitbucketの場合ですと、サイト内の対象のリポジトリのページの下記箇所や
編集済みbitbucketurl (1).png

clone操作で表示される下記箇所からhttps以降の部分をコピーしてテキストなどに保存しておきます。
編集済みclone.png

(2)SourceTree右上に配置されている設定アイコンを押下します。
設定アイコン.png

(3)そうすると下記ウインドウが表示されますので対象のパスをクリックします。
編集済み設定ウインドウ.png

(4)パスが変更できるようになるので、(1)で保存していた内容を貼り付けます。
編集済み設定ウインドウ2.png

(5)この後にpull操作を行えば、上手くいくはずです。

Gitの設定ファイルを直接変更する場合

Gitの設定ファイルを直接変更しても対応可能ですが、Gitの設定ファイルが入っているディレクトリは非表示になっておりますので、過去に隠しファイルを表示させる設定を行っていない場合、Gitの設定ファイルを操作出来ませんので、隠しファイルの表示操作が必要となります。

MacとWindows10の2パターンでの方法をご説明します。

(A)
■Macの場合
ターミナルを起動し、下記コマンドを実行して下さい。

$ defaults write com.apple.finder AppleShowAllFiles TRUE

上記コマンドを実行後、設定を適用させる為に下記コマンドでFinderを一度終了します。

$ killall Finder

再度、Finderを開くと、隠しフォルダ・隠しファイルが表示されていると思います。

■Windows 10の場合
エクスプローラーを起動し「表示」タブを押下すると「隠しファイル」と表示された左横にチェックボックスが有りますので、クリックして「レ点」が表示されている状態にします。
隠しファイルの設定.png

(B)(A)の手順によって下記のようにGitのディレクトリが表示されますのでダブルクリックでディレクトリを開きます。
透過git.png

(C)ディレクトリの中にGitConfigというファイルが有るのでダブルクリックしてエディター編集ツールで開くと下記のように表示されます。
編集済みGItConfig.png

(D)事前に(1)で保存していた内容を貼り付けます。
url =「ここに(1)で保存していた内容を貼り付けます」
pushurl = 「ここに(1)で保存していた内容を貼り付けます」

(E)
■Macの場合
「Command」 + 「S」 で変更を保存します。

■Windowsの場合
「Ctrl」 + 「S」 で変更を保存します。

(F)この後にpull操作を行えば、上手くいくはずです。

終わりに

便利なGitが納品前などに突然使えなくなったら、予定していたスケジュールを変更せざるを得なくなったりして困ってしまいますよね。

あと、Gitを使い始めの頃は扱い方がさっぱり分からず、関係無いブランチにデータをプルリクエストしてしまったり、コンフリクト対応時に必要なデータを消してしまったりとトラブルに振り回されたりする事も有るかと思いますが、ある程度Gitの事が分かって来たら無くてはならない存在になってきますね。

読んで頂いて有難う御座います。
それでは失礼します。

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

Gitでpullした時に発生するnot foundエラー

ネストビジュアルの大角です。今回はGit操作時に起きるエラーの対応方法についてです。

Gitについて

Gitの事をあまり知らない人向けに簡単にご説明させて頂きます。
分散型バージョン管理システムのGitは開発において複数人で実装したプログラムを一つに統合したり、データのバックアップや共有等データを管理する為に様々な機能が有り、クラウド上でメンバー間のやりとりが可能な為プログラマやCGデザイナーに多く使われているツールです。

エラー内容

SourceTreeなどでpull操作が出来ない理由は色々有りますが、
下記エラーメッセージが出てpullが出来ない事が起きた事は無いでしょうか?
編集済みsourcetreeエラ.png

git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks fetch origin
remote: Repository xxxxxxxxxxx/japaneseversionvideos1 not found
fatal: repository 'https://bitbucket.org/xxxxxxxxxxx/japaneseversionvideos1.git/' not found
エラー終了しました。エラーの内容は上記をご覧ください。

こちらのエラー内容は
「対象のリモートリポジトリが見つからへんで〜」
みたいなエラーですね。

エラーが起きる理由

チーム開発を行っている場合、他のチームメンバーがリポジトリ名を変更したり、譲渡したりした場合に起こりうる内容になります。

対応方法

新たにcloneすれば問題は有りませんが、その時点で大量の変更作業をしている場合などデータ移行が面倒だと思いますし、移行時にミスやトラブルが発生して作業やり直しが発生すると作業時間を大幅に無駄にしてしまいます。

【結論】

リモートリポジトリのURLを変更すれば解決します。

SourceTreeで行う場合

(1)Bitbucketの場合ですと、サイト内の対象のリポジトリのページの下記箇所や
編集済みbitbucketurl (1).png

clone操作で表示される下記箇所からhttps以降の部分をコピーしてテキストなどに保存しておきます。
編集済みclone.png

(2)SourceTree右上に配置されている設定アイコンを押下します。
設定アイコン.png

(3)そうすると下記ウインドウが表示されますので対象のパスをクリックします。
編集済み設定ウインドウ.png

(4)パスが変更できるようになるので、(1)で保存していた内容を貼り付けます。
編集済み設定ウインドウ2.png

(5)この後にpull操作を行えば、上手くいくはずです。

Gitの設定ファイルを直接変更する場合

Gitの設定ファイルを直接変更しても対応可能ですが、Gitの設定ファイルが入っているディレクトリは非表示になっておりますので、過去に隠しファイルを表示させる設定を行っていない場合、Gitの設定ファイルを操作出来ませんので、隠しファイルの表示操作が必要となります。

MacとWindows10の2パターンでの方法をご説明します。

(A)
■Macの場合
ターミナルを起動し、下記コマンドを実行して下さい。

$ defaults write com.apple.finder AppleShowAllFiles TRUE

上記コマンドを実行後、設定を適用させる為に下記コマンドでFinderを一度終了します。

$ killall Finder

再度、Finderを開くと、隠しフォルダ・隠しファイルが表示されていると思います。

■Windows 10の場合
エクスプローラーを起動し「表示」タブを押下すると「隠しファイル」と表示された左横にチェックボックスが有りますので、クリックして「レ点」が表示されている状態にします。
隠しファイルの設定.png

(B)(A)の手順によって下記のようにGitのディレクトリが表示されますのでダブルクリックでディレクトリを開きます。
透過git.png

(C)ディレクトリの中にGitConfigというファイルが有るのでダブルクリックしてエディター編集ツールで開くと下記のように表示されます。
編集済みGItConfig.png

(D)事前に(1)で保存していた内容を貼り付けます。
url =「ここに(1)で保存していた内容を貼り付けます」
pushurl = 「ここに(1)で保存していた内容を貼り付けます」

(E)
■Macの場合
「Command」 + 「S」 で変更を保存します。

■Windowsの場合
「Ctrl」 + 「S」 で変更を保存します。

(F)この後にpull操作を行えば、上手くいくはずです。

終わりに

便利なGitが納品前などに突然使えなくなったら、予定していたスケジュールを変更せざるを得なくなったりして困ってしまいますよね。

あと、Gitを使い始めの頃は扱い方がさっぱり分からず、関係無いブランチにデータをプルリクエストしてしまったり、コンフリクト対応時に必要なデータを消してしまったりとトラブルに振り回されたりする事も有るかと思いますが、ある程度Gitの事が分かって来たら無くてはならない存在になってきますね。

読んで頂いて有難う御座います。
それでは失礼します。

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

Gitでpullした時に発生するnot foundエラーの対応方法

ネストビジュアルの大角です。今回はGit操作時に起きるエラーの対応方法についてです。

Gitについて

Gitの事をあまり知らない人向けに簡単にご説明させて頂きます。
分散型バージョン管理システムのGitは開発において複数人で実装したプログラムを一つに統合したり、データのバックアップや共有等データを管理する為に様々な機能が有り、クラウド上でメンバー間のやりとりが可能な為プログラマやCGデザイナーに多く使われているツールです。

エラー内容

SourceTreeなどでpull操作が出来ない理由は色々有りますが、
下記エラーメッセージが出てpullが出来ない事が起きた事は無いでしょうか?
編集済みsourcetreeエラ.png

git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks fetch origin
remote: Repository xxxxxxxxxxx/japaneseversionvideos1 not found
fatal: repository 'https://bitbucket.org/xxxxxxxxxxx/japaneseversionvideos1.git/' not found
エラー終了しました。エラーの内容は上記をご覧ください。

こちらのエラー内容は
「対象のリモートリポジトリが見つからへんで〜」
みたいなエラーですね。

エラーが起きる理由

チーム開発を行っている場合、他のチームメンバーがリポジトリ名を変更したり、譲渡したりした場合に起こりうる内容になります。

対応方法

新たにcloneすれば問題は有りませんが、その時点で大量の変更作業をしている場合などデータ移行が面倒だと思いますし、移行時にミスやトラブルが発生して作業やり直しが発生すると作業時間を大幅に無駄にしてしまいます。

【結論】

リモートリポジトリのURLを変更すれば解決します。

SourceTreeで行う場合

(1)Bitbucketの場合ですと、サイト内の対象のリポジトリのページの下記箇所や
編集済みbitbucketurl (1).png

clone操作で表示される下記箇所からhttps以降の部分をコピーしてテキストなどに保存しておきます。
編集済みclone.png

(2)SourceTree右上に配置されている設定アイコンを押下します。
設定アイコン.png

(3)そうすると下記ウインドウが表示されますので対象のパスをクリックします。
編集済み設定ウインドウ.png

(4)パスが変更できるようになるので、(1)で保存していた内容を貼り付けます。
編集済み設定ウインドウ2.png

(5)この後にpull操作を行えば、上手くいくはずです。

Gitの設定ファイルを直接変更する場合

Gitの設定ファイルを直接変更しても対応可能ですが、Gitの設定ファイルが入っているディレクトリは非表示になっておりますので、過去に隠しファイルを表示させる設定を行っていない場合、Gitの設定ファイルを操作出来ませんので、隠しファイルの表示操作が必要となります。

MacとWindows10の2パターンでの方法をご説明します。

(A)
■Macの場合
ターミナルを起動し、下記コマンドを実行して下さい。

$ defaults write com.apple.finder AppleShowAllFiles TRUE

上記コマンドを実行後、設定を適用させる為に下記コマンドでFinderを一度終了します。

$ killall Finder

再度、Finderを開くと、隠しフォルダ・隠しファイルが表示されていると思います。

■Windows 10の場合
エクスプローラーを起動し「表示」タブを押下すると「隠しファイル」と表示された左横にチェックボックスが有りますので、クリックして「レ点」が表示されている状態にします。
隠しファイルの設定.png

(B)(A)の手順によって下記のようにGitのディレクトリが表示されますのでダブルクリックでディレクトリを開きます。
透過git.png

(C)ディレクトリの中にGitConfigというファイルが有るのでダブルクリックしてエディター編集ツールで開くと下記のように表示されます。
編集済みGItConfig.png

(D)事前に(1)で保存していた内容を貼り付けます。
url =「ここに(1)で保存していた内容を貼り付けます」
pushurl = 「ここに(1)で保存していた内容を貼り付けます」

(E)
■Macの場合
「Command」 + 「S」 で変更を保存します。

■Windowsの場合
「Ctrl」 + 「S」 で変更を保存します。

(F)この後にpull操作を行えば、上手くいくはずです。

終わりに

便利なGitが納品前などに突然使えなくなったら、予定していたスケジュールを変更せざるを得なくなったりして困ってしまいますよね。

あと、Gitを使い始めの頃は扱い方がさっぱり分からず、関係無いブランチにデータをプルリクエストしてしまったり、コンフリクト対応時に必要なデータを消してしまったりとトラブルに振り回されたりする事も有るかと思いますが、ある程度Gitの事が分かって来たら無くてはならない存在になってきますね。

読んで頂いて有難う御座います。
それでは失礼します。

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