20210428のGitに関する記事は12件です。

アプリ制作で参考にしたリンク集(バックエンド編)(随時更新)

Devise(gem) git fatal: object {hash} is corrupt
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Git] 最初の親コミットのログのみを表示

概要 git logコマンドを使うことでコミットログを追うことが可能ですが、親コミットのみを追う方法をメモします。 方法 --first-parentを記述 git log --first-parent
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

「GitHubのアカウント作ったけど、どうしたらいい?」(Windows, Mac, Linux)

表題のような質問をよく受けるので、記事にしてみました。 この記事を読み進めれば、ローカル環境でコードを書き、GitHubにアップロード(プッシュ)することができるようになります。 この記事で解説する内容 Gitとは GitHubとPCの接続 開発環境の構築 前提 GitHubのアカウントを作成済みであること。 ブラウザでgithub.comにサインインできること。 Gitとは? GitHubは、Gitをベースにした開発環境です。Gitはファイルのバージョン管理ツールで、「バージョンごとにバックアップを取っておきたいが、最新のものがわからなくなるのは嫌だ」という方におすすめです。 Gitがよくわからん Gitの勉強におすすめなコンテンツについては、後ほど説明します。とりあえず、初期設定をしましょう。 Windows・Macの場合 GitHub Desktopという公式ソフトがおすすめです。 インストール GitHub Desktopのダウンロードページからソフトウエアをダウンロードし、インストールします。私がやってみた時は、管理者権限は不要でした。 念の為、Gitもインストールしておきます。Gitのダウンロードページ こちらも管理者権限は不要でした。 サインイン インストールして立ち上げると、GitHubへのサインインを求められるので、サインインします。 おしまい これで初期設定は終わりです。簡単すぎる... ここまでの内容+αの内容が、公式のドキュメントに画像つきでわかりやすく載っていたので、リンクを張っておきます。 GitHub Desktop を使った最初のリポジトリ作成方法 - GitHub Docs Linux(Debian系)の場合 Linuxの場合はターミナル上での作業になります!最後まで頑張りましょう!! ※UbuntuもDebian系です Gitのインストール 以下のコマンドを実行します。 $ sudo apt-get install git SSH接続 GitHubとPCをSSH接続という方法で接続します。SSH接続がなにか気になる人はこちらの記事を読んでみてください。 ざっくりいうと、暗号化された状態で、PCとサーバーの間で通信する仕組みになります。 SSH接続には、「公開鍵」と「秘密鍵」と2つが必要になるので、これを作成します。 「公開鍵」単体なら公開しても大きなリスクはありませんが、「秘密鍵」は絶対に公開してはいけません! またもやわかりやすい記事を見つけたので、ご紹介します。 お前らのSSH Keysの作り方は間違っている タイトルからして、「ん?これは、、、もうSSH接続しちゃってる人向けの記事なのか...?」と思われるかもしれませんが、ご安心を。初SSH接続の方でもこの記事のとおりにすればSSH接続が可能です。 開発環境 とりあえずGitHubにはつながったけれど、エディタ選びに困っているそこのあなた! 私のオススメはVisual Studio Codeです。 無料で使えて、しかも動作が軽いです。 ダウンロード Gitってなんぞや? Gitはバージョン管理ツールのことです。 資料作成時に、日付をファイル名の末尾のつけて保存することでバックアップを取っていませんか?そのように、Gitは「◯月◯日△時△分に、〜を変更したぜ」というように、ファイルの変更履歴を残すことができます。また、いつでもその時のファイルを復元することができます。 さらに、複数人で同じファイルを編集している時、Gitはいい感じにそれぞれの変更をまとめてくれます。 Gitは1人で使っても、チームで使っても便利なツールです。 Gitはややクセの強い概念を持っていますが、それを自分のものにしてしまえばファイルの管理が一気に楽になります。 だいたいこんなイメージです。 ローカルリポジトリとリモートリポジトリ マシン上に保存してあるリポジトリ(フォルダ)をローカルリポジトリ、GitHubなどのサーバーにおいてあるリポジトリ(フォルダ)をリモートリポジトリと呼びます。 基本的には、初回時にリモートリポジトリのデータをマシンにコピー(Clone)して、ローカル上で編集し、リモートリポジトリに上げる(Push)する(誰かがリモートリポジトリを変更していた場合は、データをダウンロード(pull)する)という流れです。 コマンドで操作する場合は以下のようになります。(XXXXXXの部分は人によって異なります。) $ git clone XXXXXX.git #クローン $ git push -u origin XXXXXX #プッシュ $ git pull #プル add・commit Gitでバージョンを残すには、どこを変更したのか(あるいは、どこを追加・削除したのか)を明確にした上で(以下のコマンドの<COMMENT>に当たる部分)、commitという作業が必要になります。そして、commitをするためにはaddを行う必要があります。 コマンドで操作する場合は以下のようになります。 $ git add <FILE_NAME> #FILE_NAMEをadd $ git add . #すべてのファイルをadd $ git commit -m <COMMENT> #コメント付きでコミット Gitが学べるコンテンツ git入門 (全22回) - プログラミングならドットインストール 定番の、3分動画で学べる「ドットインストール」です。動画ではLinuxのターミナル上で操作していますが、Win/MacでGitHub Desktopを使用する方も、Gitの概念をわかりやすく説明してくれているのでおすすめです。 ※「Git入門」レッスンは無料で視聴できるようです。(2021/4/28現在) おわりに もし、周囲に「GitHubのアカウントを作ったけれども使い方がわからない」という方がいれば、この記事をご紹介していただければ幸いです。 この記事で使用したスライドはGitHubで公開しています。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【メモ】Gemfile.lockをGitの追跡から除外したい

Gemfile.lock について、マージすると本番環境にまで反映されちゃうので、 いつか入れるとしても今はコミットに含めない。 (入れるなら入れるで別で専用のマジリクを作るはず!) との事で、Gemfile.lockをGitの追跡から除外します。 通常であれば.gitignoreに記載するいう対応ですが、 今回は一度コミットしてしまったため、後から追跡を除外します。 ローカルの追跡から除外 $ git update-index --skip-worktree Gemfile.lock 設定の確認 $ git ls-files -v ▼設定の見方はこちらで確認 参照元: https://qiita.com/usamik26/items/56d0d3ba7a1300625f92
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Portable 版 Git for Windows 64-bit インストール手順

管理者権限が無い Windows 10 で Git を使うための手順です。 Web ブラウザーを開き, Git - Downloading Package にアクセスする。 64-bit Git for Windows Portable をクリックし, アーカイブをダウンロードする。 拡張子が .exe ではなく, .7z.exe となっていることを確認する。 ダウンロードしたアーカイブを開く。 Portable Git for Windows 64-bit ウィンドウが開く。 Where do you want to install portable Git? 欄に C:\PortableGit と入力し, OK ボタンを押下する。 展開が完了し, ウィンドウが自動的に閉じるまで待つ。 エクスプローラーで C:\PortableGit フォルダーを開き, git-bash.exe を右クリック, スタート メニューにピン留めする をクリックする。 スタートメニューより git-bash をクリックする。 MINGW64:/ ウィンドウが開く。 git --version と入力し, 以下のようにバージョンが表示されることを確認する。 git version 2.31.1.windows.1 バージョン情報は 2021-04-28 時点のもの。 exit で終了できる。 どっとはらい。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

gitでタグをチェックアウトする

gitを使ってバージョンコントロールをする上で、GitHubのRelease機能を利用したりしてgitのtagは作成したものの、そのtagを打った際のコードに戻る(チェックアウトする)ことが少なかったので、その方法などを改めて確認しておきます。 タグ一覧を確認 git tag このコマンドで作成されたタグが一覧になって表示されます 対象のタグをチェックアウト git checkout -b branchName refs/tags/tagName ついでに、現在のブランチの最新コミットでタグ作成方法 git tag tagName タグにコメントを付ける場合 git tag -a tagName -m 'comment' ↓の場合、コメント入力画面が表示されます git tag -a tagName 過去のコミットでタグを作成する場合 git tag -a tagName -m 'comment' xxxxxxx 作成したタグをリモートリポジトリにPushする方法 git push origin tagName 複数の場合 git push origin --tags タグを削除する場合 git tag -d tagName Push済の、リポジトリにあるタグを削除する場合 git push origin :refs/tags/tagName もしくは git push --delete origin refs/tags/tagName
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【メモ】Gitで元に戻すときのコマンド【随時更新】

はじめに  アプリ開発中、リセットしたい時にいつもググっていたので自分用にまとめます。新しくコマンドを使うたびに更新していく予定です。 ステージング(git add .)前の編集を削除 Changes not staged for commit の編集を削除 これらはgit add .する前のファイルで git checkout .のコマンドで一つ前のコミットした状態に戻せる。 Untracked files の削除 これらはまだ一度もcommitしたことがないファイルで git clean -fのコマンドで削除可能。 おわりに Gitコマンドが覚えられない(泣) 随時更新予定
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

git | command

git tag make package error: STRING sub-command REGEX, mode MATCHALL needs at least 5 arguments total to command. git tag 0.0.0 git tag
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

オンプレミスの開発管理サーバーをGiteaで構築する

1. 概要 1.1. 目的 オンプレミスで開発管理サーバーを立てる。 使い道なくて余っている"インテル Compute Stick STCK1A8LFC"を有効利用する。 1.2. 構成 使用ソフトウェア ソフトウェア 内容 備考 Git バージョン管理ツール。 Gitea Go 言語製の軽量のコードホスティングソリューション。Gitを内蔵している。 Lubuntu 18.04 サーバーのOS。 Giteaのディレクトリ構成 /var/local/bin/ └ gitea 実行ファイル /var/local/lib/ ├ data データ(SQLiteファイル)、セッション等 ├ log ログ ├ repos リポジトリ └ custom カスタムソース 2. セットアップ 2.1. ハードセットアップ "インテル Compute Stick STCK1A8LFC"のスペックは以下となる。 CPU: Atom 1.83GHz L2Cache2MB メモリ: 1GB 内部ストレージ: 8GB 外部ストレージ: 32GB(SDカード) Lubuntu 18.04を最小構成でインストールする。 ディスク容量や性能に制限があるため、ディレクトリ構造等は工夫している。 パーティション mmcblk1(内部ストレージ: 7-8GB) mmcblk1p1 /boot/efi EFIシステムパーティション(200MB) mmcblk1p5 / ext4(残り6GB) mmcblk2(SDカード: 32GB) mmcblk2p1 /home ext4(10GB) mmcblk2p2 /var ext4(残り22GB) 2.2. パッケージインストール gitパッケージをインストールする。 $ sudo apt install git /var/lib/gitea をアプリのインストール先など、ディレクトリを作成する。 $ sudo mkdir /var/local/bin $ sudo mkdir -p /var/local/lib/gitea/{custom,repos,data,log} giteaをダウンロードし、実行権限を与える。 $ cd /var/local/bin/ $ sudo wget -O gitea https://dl.gitea.io/gitea/1.13.6/gitea-1.13.6-linux-amd64 $ sudo chmod +x gitea 実行ユーザーを作成し、ディレクトリ権限を設定する。 $ sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git $ sudo chown -R git:git /var/local/lib/gitea/ $ sudo chmod -R 750 /var/local/lib/gitea/ $ sudo mkdir /etc/gitea $ sudo chown root:git /etc/gitea $ sudo chmod 770 /etc/gitea systemdサービスファイルを作成する。 $ sudo vim /etc/systemd/system/gitea.service [Unit] Description=Gitea (Git with a cup of tea) After=syslog.target After=network.target 〜〜 [Service] 〜〜 RestartSec=2s Type=simple User=git Group=git WorkingDirectory=/var/local/lib/gitea/ 〜〜 ExecStart=/var/local/bin/gitea web --config /etc/gitea/app.ini Restart=always Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/local/lib/gitea 〜〜 [Install] WantedBy=multi-user.target gitea サービスを起動する。 $ sudo systemctl start gitea 設定ファイルにポートを設定する。 $ sudo vim /etc/gitea/app.ini 〜〜〜 [server] HTTP_PORT = 8080 〜〜〜 サービスの再起動と自動起動設定をする。 $ sudo systemctl restart gitea $ sudo systemctl enable gitea 2.3. 初期設定 hostsに名前解決の設定をする。(WindowsでもMacでも) 192.168.x.x <ホスト名>.local 画面にアクセスする。 http://<ホスト名>.local:8080 "エクスプローラ"、"登録"などのメニューにアクセスすると初期設定画面が開くため、以下を設定する。記述内容以外はデフォルトとする。 データベース設定 データベース: SQLite3 基本設定 サイトタイトル: 任意 リポジトリのルートパス: /var/local/lib/gitea/repos SSHサーバーのドメイン: <ホスト名>.local GiteaのベースURL: http://<ホスト名>.local:8080/ "Giteaをインストール"でインストールを実行する。 2.4. 管理者アカウント登録 最初に登録したユーザーが管理者アカウントとなる。 "アカウントが必要ですか?今から登録しましょう" などのリンクから登録画面を開く。 ID、パスワード、メールアドレス等を設定する。 3. 使用方法 3.1. ローカルのGitリポジトリをプッシュ ローカルリポジトリはコミットを済ませておく。 Web画面から組織とリポジトリを作成する。 最近の事情から、デフォルトブランチはmaster→mainにしている。 リポジトリのURL(例: http://<ホスト名>.local:8080/<組織名>/<リポジトリ名>.git)をコピーする。 ローカルリポジトリに移動し、コマンドラインからリモートリポジトリを設定する。 リモートリポジトリを確認し、設定がある場合は確認して削除する。 リモートリポジトリの確認 % git remote -v →結果あり 削除 % git remote rm origin リモートリポジトリの確認 % git remote -v →結果なし リモートリポジトリを登録する。 リモートリポジトリの登録 % git remote add origin http://<ホスト名>.local:8080/<組織名>/<リポジトリ名>.git リモートリポジトリの確認 % git remote -v origin http://<ホスト名>.local:8080/<組織名>/<リポジトリ名>.git (push) origin http://<ホスト名>.local:8080/<組織名>/<リポジトリ名>.git (fetch) ローカルのソースをプッシュする。 プッシュ % git remote origin main Web画面でプッシュされたことを確認する。 3.2. その他 課題、WikiなどGithub、Gitlabに似た基本的な機能は使用できる。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

git resetでミスを取り消す

下記を参考にさせていただきました。 困ったときの git reset コマンド集 Gitの階層構造 Gitは以下の順番でアップロードされている ワーキングツリー ↓ インデックス ↓ ローカルリポジトリ ↓ リモートリポジトリ ワーキングツリー : 作業場所 インデックス : コミットする変更を準備する場所 ローカルリポジトリ : 変更履歴を記録(ローカル環境) リモートリポジトリ : 変更履歴を記録(共有できる) またgitのコマンドは下記のようにアップロードしていく git add : 「ワーキングツリー → インデックス」 git commit : 「インデックス → ローカルリポジトリ」 git push : 「ローカルリポジトリ → リモートリポジトリ」 ※インデックスがワークツリーとリポジトリの間にある理由 理由は、以下の2つです。 ワークツリー内の必要ないファイルを含めずにコミットを行える。 ファイルの一部の変更だけをインデックスに登録してコミットが可能) git reset git addやgit commitした時にgit resetを使えば取り消すことができます。 $ git reset --soft HEAD^ #直前のコミットをなかったことにする $ git reset --hard HEAD^ #直前のコミットを取り消す $ git reset --hard HEAD #コミット後の変更を全部消す $ git reset --mixed HEAD #addを取り消す $ git reset --hard ORIG_HEAD #git resetをなかったことにする またHEAD^の「^」を二つにしてHEAD^^にすると2つ前のコミットまで戻ります。 オプションの説明 reset --hard :add、commit、ワーキングツリーを取り消す reset --mixed:commitとaddを取り消す。 reset --soft :commitのみを取り消す。 $ git status -sで確認 $ git status -s
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

git resetで間違ってコミットしてしまったミスを取り消す

下記を参考にさせていただきました。 困ったときの git reset コマンド集 Gitの階層構造 Gitは以下の順番でアップロードされている ワーキングツリー ↓ インデックス ↓ ローカルリポジトリ ↓ リモートリポジトリ ワーキングツリー : 作業場所 インデックス : コミットする変更を準備する場所 ローカルリポジトリ : 変更履歴を記録(ローカル環境) リモートリポジトリ : 変更履歴を記録(共有できる) またgitのコマンドは下記のようにアップロードしていく git add : 「ワーキングツリー → インデックス」 git commit : 「インデックス → ローカルリポジトリ」 git push : 「ローカルリポジトリ → リモートリポジトリ」 ※インデックスがワークツリーとリポジトリの間にある理由 理由は、以下の2つです。 ワークツリー内の必要ないファイルを含めずにコミットを行える。 ファイルの一部の変更だけをインデックスに登録してコミットが可能) git reset git addやgit commitした時にgit resetを使えば取り消すことができます。 $ git reset --soft HEAD^ #直前のコミットをなかったことにする $ git reset --hard HEAD^ #直前のコミットを取り消す $ git reset --hard HEAD #コミット後の変更を全部消す $ git reset --mixed HEAD #addを取り消す $ git reset --hard ORIG_HEAD #git resetをなかったことにする またHEAD^の「^」を二つにしてHEAD^^にすると2つ前のコミットまで戻ります。 オプションの説明 reset --hard :add、commit、ワーキングツリーを取り消す reset --mixed:commitとaddを取り消す。 reset --soft :commitのみを取り消す。 $ git status -sで確認 $ git status -s
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

git mvで大文字を含むディレクトリ名を変更できない

はじめに git mvでリポジトリ内の大文字のディレクトリ名を変更しようとしたところ、できませんでした。 準備 cd ~ mkdir repo && cd repo git init mkdir Capital echo "hogehoge" -> Capital/Hoge.txt git add . git commit -m "first commit" 上から順に実行すると、 repo └── Capital \\大文字ディレクトリ └── Hoge.txt \\大文字textファイル こんな感じの実験環境ができます。 ハマったところ textファイルの「 Hoge.txt 」を小文字にします。 git mv Capital/Hoge.txt Capital/hoge.txt 実行すると、 repo └── Capital └── hoge.txt ちゃんと小文字になりました。 コミットしておきましょう。 git commit -m "renamed Hoge.txt to hoge.txt" 次にディレクトリ「 Capital 」を小文字にします。 git mv Capital/ lowercase/ 同様に実行すると・・・ fatal: renaming 'Capital' failed: Invalid argument エラーが・・・ 解決策 1 : 一時的な空ディレクトリを作る。 mkdir tmp 2 : 大文字ディレクトリ(Capital)の中身(hoge.txt)を一時的なディレクトリ(tmp)にgit mvで移す。 git mv Capital/* tmp/ こんな感じになる。 repo ├── Capital └── tmp └── hoge.txt 3 : 空になった大文字ディレクトリ(Capital)を消す。 rm -r Capital 4 : 一時的なディレクトリ(tmp)の名称 をgit mvで好きな名称(lowercase)に変更。 git mv tmp lowercase コミットしておく。 git commit -m "renamed Capital to lowercase" 5 : 解決! repo └── lowercase └── hoge.txt コミット履歴はどうなっているか 好き勝手にディレクトリを作ったり、消したりしました。 コミット履歴がおかしなことになっていないか(?)確認してみます。 ❯ git show commit 585776e1411a08f42aab249f37cd008882f19b0c (HEAD -> master) Author: hoge Date: hoge renamed Capital to lowercase diff --git a/Capital/hoge.txt b/lowercase/hoge.txt similarity index 100% rename from Capital/hoge.txt rename to lowercase/hoge.txt 本来やりたかった git mv Capital/ lowercase/ ができた場合と同じ履歴になりました。 よくわからん、、、
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む