- 1. Gitの基本
- 2. Gitでdiffを渡すときに最低限必要な3つのコマンド
- 3. 【Git】最初のコミットを変更する方法
- 4. 直前のGitコミットのみ取り消し
- 5. 【GitHub Actions】Git管理外のファイルを扱った時のエラー
- 6. 【Git】Push済みのブランチ名を変更する方法
- 7. Gitのfetch, merge, pullって何やってるの?
- 8. AWS、Githubと比較して理解するブロックチェーン
- 9. 一撃で理解できるgit branch 〇〇集
- 10. 競合なしでgitのコミットの順番を変更する(rebase -i, revert)
- 11. 共同開発中 git プルリクエスト
- 12. pushが出来ない エラー解決メモ
- 13. 0から1週間でIT現場の周辺知識を習得するための手順書
- 14. Git初心者がGitHub PagesによるWebページ公開方法をまとめてみた
- 15. Tips: copilot.vimを使ってコミットメッセージも生成してもらう
- 16. 共同開発 git 最初のトピックブランチの切り方
- 17. 共同開発 git 初期設定
- 18. Git のエラー “object file is empty” や “loose object is corrupt” の直し方
- 19. gitコミットにはタイムスタンプのほかタイムゾーンも記録されている
- 20. Gitのコミットメッセージ
Gitの基本
# はじめに
Gitについて知識が全くなかったので、用語の意味についてまとめました。## 用語
### リポジトリ
– リモートリポジトリ
特定のサーバ上に設置して複数人で共有するためのリポジトリ
– ローカルリポジトリ
ユーザーごとに配置される手元のマシンで編集できるリポジトリ普段の作業はそれぞれのローカルリポジトリで行い、作業内容を共有するときにリモートリポジトリで公開する
### コミット
ファイルやディレクトリの編集作業をローカルリポジトリに記録するための操作
コミットを実行するごとにファイルが生成され、ファイルを編集した履歴やその内容を確認できる### ワークツリー
ユーザーが編集している作業中のディレクトリ### インデックス
作業場所であるワークツリーと、保存場所であるローカルリポジトリの間にインデックスがあるワークツリーで編集したファイルをコミットしたい場合には一度インデックスに登録しないといけない
編集したファイルをリポジトリへコミットする前にインデックへ登録して仮置きしておくイメージ### クローン
リモ
Gitでdiffを渡すときに最低限必要な3つのコマンド
# はじめに
会社ではトランクベース開発をしているのですが、どうしてもGitにPushしてしまうと問題が起きてしまうコードなどが存在します。そこでdiffとして`patch`を出力してもらいapplyすることで対応しています
そんな中でやり方を毎度聞いてしまうので個人的にメモとしてまとめます
# diffを渡す手順
## 1. ステータスを確認する
“`
$ git status
ブランチ main
Your branch is up to date with ‘origin/main’.nothing to commit, working tree clean
watanabejin@watanabejin-ThinkPad-P1-Gen-5 ~/workspace/git_diff_handson (main)
$ git add .
watanabejin@watanabejin-ThinkPad-P1-Gen-5 ~/workspace/git_diff_handson (main)
$ git status
ブランチ main
Your branch is
【Git】最初のコミットを変更する方法
## 修正方法
以下のコマンドを実行します。
“`:ターミナル
$ git rebase -i –root
“`するとGitで設定しているエディタが開きます。
“`
pick f2a0ijl 最初のコミット
pick 4d506gf 2回目のコミット
pick 23456a5 3回目のコミット
“`最初のコミットの`pick`の箇所を編集します。
“`
r f2a0ijl 最初のコミット
pick 4d506gf 2回目のコミット
pick 23456a5 3回目のコミット
“`
すると以下のようにエディタに表示されます。
“`
最初のコミット# Please enter the commit message for your changes. Lines starting
# with ‘#’ will be ignored, and an empty message aborts the commit.“`
コミットメッセージを変更して保存し、エディタを閉じます。
“`
initial commit# Please enter the c
直前のGitコミットのみ取り消し
毎回ググっちゃうのでメモしておく。
## コマンド
“`terminal
git reset –soft @^
“`@はHEADでも可。
ちなみに@^は、最新のコミットの状態をという意味で、
`^`や`~`をつけて直前のコミットを表している。## 参考
https://git-scm.com/docs/git-reset
【GitHub Actions】Git管理外のファイルを扱った時のエラー
## はじめに
最近GitHub Actionsの学習を始めました。
GitHub Actions×S3で静的ウェブサイトのホスティングを実装中、少し詰まったので記事にしました。ホスティング方法の詳しい解説は行いません。## 環境
MacBook Pro intel
macOS Monterey バージョン12.6## GitHub Actions×S3で静的ウェブサイトのホスティング
ひとまずデプロイだけ挑戦してみたかったので、GitHub Actions上ではテストもビルドも行いません。ローカルでビルドした成果物をデプロイします。“`yaml
name: frontendon:
push:
branches:
– maindefaults:
run:
working-directory: frontendjobs:
deploy:
runs-on: ubuntu-latest
steps:
uses: actions/checkout@v3– name: デプロイ
【Git】Push済みのブランチ名を変更する方法
既にローカルでブランチを作成している状態で、Pushした後にブランチ名を変更したい場合にリモートとローカルのブランチ名を変更する方法の解説になります。
この場合、一旦、リモートのブランチを削除します。
“`bash
git push origin :[削除するリモートブランチ名]
“`次に以下に示すコマンドを実行していき、Pushするところまで実施すれば、
リモートのブランチ名も変更することができます。“`bash
git branch -m [新しいブランチ名]
git branch –unset-upstream
git push –set-upstream origin [新しいブランチ名]
“`恐らく他にもリモートブランチを削除しなくても直接リモートとローカルのブランチを一気に変更する方法もあるかと思いますが、
今回は削除する方式を取りました。
Gitのfetch, merge, pullって何やってるの?
今までなんとなく、**fetchしてmergeするのを一気にやってくれるのがpull**という理解で、詳しく調べたことがありませんでした。
改めて調べてみたのでまとめます。# 前提知識
`fetch, merge, pull`を理解する上で欠かせないのが以下の言葉です。
– **リモートリポジトリ**: GitHubなどリモート上に存在するリポジトリ
– **ローカルリポジトリ**: PC上に存在するリポジトリ
– **リモート追跡ブランチ**: `origin/main`など、リモートリポジトリを追跡するブランチ
– ローカルブランチ: `main`など、ローカル上で実際に扱うブランチ図にすると以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408546/9a09e077-51ca-22cd-8acf-32bae43e4ebd.png)すこしわかりにくいのが**リモート追跡ブランチ**ですね。
これは**リモートブランチの状態をとりあえ
AWS、Githubと比較して理解するブロックチェーン
こんにちは、皆さんはブロックチェーンについて聞いたことはありますか?多くの人がブロックチェーンの名前を耳にしたことがあるかもしれませんが、その具体的な仕組みや利点を完全に理解している人は少ないかもしれません。そこで今日は、もっと馴染み深いAWSやGithubといったサービスと比較しながら、ブロックチェーンの特性や利点を明らかにしてみたいと思います。
## ブロックチェーンとAWS: 分散データベースとしての共通点と相違点
AWSとブロックチェーンは、両者ともにデータを管理し、処理するシステムであり、その点で共通性を持っています。しかし、その運用方法と目的は大きく異なります。
**共通点**: AWSでは、Amazon Auroraという分散型のリレーショナルデータベースを提供しています。これは、単一のデータベースを複数の地域やアベイラビリティゾーンにレプリケートし、高い可用性と耐久性を確保します。ブロックチェーンも同様に、全ノードがデータベースのコピーを持つ分散型のシステムです。
**相違点**: AWSのサービスは中央集権的な構造であり、Amazonが全体の管理と制御を行いま
一撃で理解できるgit branch 〇〇集
# 概要
git branchのコマンドはよく使います。
いろんなオプションなどがあるので知っていると便利なので記事にして見ました。# git branch
***オプションも何もつけない場合はローカルのブランチの一覧を表示***します。
あと***自分が今いるブランチも確認***できます。
“`
% git branch
“`# -a 、–all
***リモートブランチとローカルブランチを全部表示***します。
“`
% git branch -a
% git branch –all
“`# -r 、–remote
***リモートブランチ一覧を表示***します。
“`
% git branch –r
% git branch –remote
“`# -v –verbose
***各ブランチの最新のコミットメッセージとコミットハッシュを表示***します。
“`
% git branch -v
% git branch –verbose
“`# –merged
***マージ済みのブランチのみを表示***
“`
% git
競合なしでgitのコミットの順番を変更する(rebase -i, revert)
# 目的
例えば、コミットが A→B→C となっている時、Bのコミットを修正したい。
そのやり方は、以下の2つがすぐに思いつく。
1. Bの修正コミットB’を追加し(A→B→C→B’)、
B’をBの後ろに移動し(A→B→B’→C)、
BとB’を結合する(A→B”→C)。
1. rebase -i でB直後のコミットに移動し、直接Bを修正する。競合が発生しない場合はこれでよいが、競合が発生する場合は面倒になる。(競合解消のため、ソースの差分を判断する。)
そこで、上記の方法では競合が発生するような場合でも、競合なしでコミットの順番を変更する方法を示す。
それには git revert を利用する。# 方法
目的で示したものと同じ例を用いて示す。
すなわち、コミットが A→B→C となっている時、Bのコミットを修正する方法を以下に示す。
\#ここで、C^はCのrevertを意味する。C^をrevertすることを再revertとする(C^^)が、これはCと同じである。
1. rebase -i でC直後に移動し、revert, 再revertを行う。(A→B→C→C^→C→B’)
1
共同開発中 git プルリクエスト
### :shamrock: プルを行う
:snowflake:プルとは、リモートリポジトリから最新の変更を取得してローカルのリポジトリに反映させることを指します。:star: 自分が **bevelop** にいることを確認する
(*がついているところが現在のブランチ)
“`
$ git branch
* develop
main
“`
:star:**develop**でなければ以下のコマンドで移動
“`
$ git checkout develop
“`
:star:developブランチを最新の状態にする
“`
$ git pull origin develop
“`
:star: 念のため確認する
“`
$ git status
On branch develop
nothing to commit, working tree clean
“`
developブランチはコミットするものが無く、綺麗な状態だよと表示されました。### :shamrock: 作業ブランチ作成
作業していくブランチを作成します。
今回はdevaiseブランチを作成しま
pushが出来ない エラー解決メモ
### 発生したエラーについて
![スクリーンショット 2023-07-15 19.42.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492906/2c6239fe-da3a-21e7-4b9a-cc38bc897035.png)
:star:git pull origin tuboを行った結果、ローカルのtuboブランチとリモートのtuboブランチで競合が発生しました。これは、同じファイルの同じ部分が両方のブランチで異なる方法で変更されたためです。この場合のファイルはapp/views/layouts/application.html.erbでした。:star:競合は手動で解決する必要があります。具体的には、競合しているファイルを開き、Gitが挿入したマーカー(<<<<<<<, =======, >>>>>>>)を見つけて、どちらの変更を保持するか(あるいは新しい変更を作成するか)を決定します。
![スクリーンショット 2023-07-15 19.49.59.png](htt
0から1週間でIT現場の周辺知識を習得するための手順書
仕事を行う上でプログラミングよりも大事かもしれません。
基本的にツール選定は、現場のやり方に合わせます。
# チャット
ソースコードとか送りやすいし
権限管理できるし
プロジェクト管理できるのは
Slack、Discord、Teamsです。
– Slack
– Discord
– Teams
– LINE
やりとりができれば基本的になんでも良いです。
# ミーティング
– Zoom
– Google Meet
– Discord
Discordなんでもできます。
# タスク管理
– Trello
– Jira
– Backlog
# ソースコード管理
Gitでソースコードを管理します。
以下のツールすべて操作は同じです。
– Github
– Gitlab
– Bitbucket
# 仮想化技術
開発環境ごとにツールのバージョンが異なったりします。
全員同じ仮想環境を立てて実装します
– Docker
– Kubenetes
# ネクストステップ
これらをひとつずつ使えるように勉強していきます
Git初心者がGitHub PagesによるWebページ公開方法をまとめてみた
# このページで伝えたいことまとめ
* htmlのファイル名は`index.html`でなくてもGitHub Pagesは公開できるよ!
* ※ファイル名を`index.html`にするとトップページに表示されて便利だよ!
* 日本語を含んだブランチ名のブランチから公開しようとすると、GitHub Pagesは公開できないよ!# GitHub Pagesの使用方法について
* GitHub Pagesを使うことで、自分が作成したWebページを外部に公開することができます。GitHub Pagesを使うと、GitHubに上げているソースを元にWebページが作成可能なのでとても便利です。
* Gitのコマンドの中でadd, commit, pull, pushくらいを使えるようになってきたGit初心者の筆者が、GitHubPagesを使ってWebサイトを公開してみたので公開方法をまとめます。
* 公開方法については少し端折って書いております。「このページで伝えたいことまとめ」の内容が気になる方は[注意点](#注意点)を参照ください。* ※GitHubアカウントは既に所有して
Tips: copilot.vimを使ってコミットメッセージも生成してもらう
## この記事は何
[copilot.vim](https://github.com/github/copilot.vim)は、vimで[GitHub Copilot](https://docs.github.com/ja/copilot/getting-started-with-github-copilot)を利用できるようにするためのプラグインです。
今回は、このcopilot.vimを用いてコミットメッセージも生成してもらえるようにする方法を紹介します。過去書いた記事はこちらです。
https://qiita.com/getty104/items/f4c1ed9b376825b41779
## gitのcommitでvimが開く状態にする
まずはターミナルで`git config –global core.editor vim`を実行し、`git commit`コマンド実行時にVimが開かれるようにします。
なお、`git commit -m`など、ターミナル上でコミットメッセージを入力する方法ではcopilot.vimは利用できませんのでご注意ください。##
共同開発 git 最初のトピックブランチの切り方
### :shamrock: 前提
:point_up:**deviceを実装します。**・**mainブランチ**は常にリリース(デプロイ)できるような状態にある。
・**developブランチ**を統合ブランチとする
・**トピックブランチ**は全て**developブランチ**から派生させる。_____
### :shamrock: 作業前のトピックブランチの切り方
:point_up:トピックブランチは基本的に機能、バグのようなタスクごとに切ります。・統合ブランチ(develop)に移動
・統合ブランチである**developブランチ**から トピックブランチ(**install-devise**)を作成する。:::note warn
以下のように必ずトピックブランチを作成してから作業を行う“`
$ git checkout develop
$ git checkout -b install-devise
“`
:::
:star:**作業を行う**
今回はdeviceを追加する
Gemfileに以下を追加
“`Gemfile
gem ‘devise’
共同開発 git 初期設定
### :cherry_blossom:はじめに
共同開発のためのgitの使い方を自分用に作成します!
リポジトリを作成しているところからです。:apple:がついているものは代表者以外のメンバーが行う作業です。
ついていないものは代表者1人の作業です。
_____
### :shamrock:アプリケーションを作成
“`
$ rails new アプリ名 # 新規アプリケーション作成
$ cd アプリ名 # アプリケーションに移動
“`
.gitignoreに管理から外すファイルを記述する
“`.gitignore
/db/*.sqlite3
/db/*.sqlite3-jaurnal
“`
:question: **gitignoreとは?**
コンピュータのプログラムを作るときに使うツール、Gitで、特定のファイルやフォルダを無視するように指示するためのファイルのことを指します。プログラムを作るときには、試行錯誤の結果や秘密の情報、使ったツールが自動で作るファイルなど、Gitで管理したくないものがたくさんあります。これらを
Git のエラー “object file is empty” や “loose object is corrupt” の直し方
# エラー内容
Git 操作をしている間に Raspberry Pi がフリーズしてしまい、再起動後にリポジトリの状態を確認しようとしたら以下のようなエラーが発生しました。“`shell:shell
git status
“`“`
error: object file .git/objects/fb/38f089a711a4dfcd7843114d25158dded221ff is empty
error: object file .git/objects/fb/38f089a711a4dfcd7843114d25158dded221ff is empty
fatal: loose object fb38f089a711a4dfcd7843114d25158dded221ff (stored in .git/objects/fb/38f089a711a4dfcd7843114d25158dded221ff) is corrupt
“`エラーが発生したリポジトリのリモートリポジトリを別の場所で clone して、`.git` ディレクトリの中身を丸ごと差し替えるという
gitコミットにはタイムスタンプのほかタイムゾーンも記録されている
gitのコミットにはタイムスタンプだけでなくコミットした環境のタイムゾーンも記録されている、という発見です。
gitコミットにはタイムスタンプだけが保存されており、タイムゾーンの表示は見ている人の環境に合わせて表示されているんだと思い込んでいました。しかしそうではなく、タイムゾーンもコミットごとにちゃんと保存されていました。なので、オープンソースのリポジトリのログを見ればいろんなタイムゾーンに開発者が散らばっている様子がわかります。
以下のの記事を読んで、タイムゾーンも保存されてるのか???って疑問から調べてしまったのが今回の記事のきっかけです。
https://qiita.com/vallack5296/items/846a6013bcc8c81c4392
# 確認した内容
ローカルにclone済みの適当なgitリポジトリを見ます。`.git` というディレクトリにGitログや過去のファイルがすべて保存されており、コミットの情報も含まれています。gitリポジトリの内容は `.git` がすべてです。
まず以下のファイルを見ます。
“`plain
$ cat .git
Gitのコミットメッセージ
[Semantic Commit Messages](https://gist.github.com/joshbuchea/6f47e86d2510bce28f8e7f42ae84c716) を定義した方がいるため、こちらを参考にコミットメッセージのテンプレートを作成する。[Conventional Commits](https://www.conventionalcommits.org/ja/v1.0.0-beta.4/) に絵文字を追加したようなルールになっているのでコミットをしたときに絵文字がカラフルで見やすいのが特徴かなと思う。
### 1. コミットメッセージテンプレートを作成する
適当なところに下記のファイルを作成する。
“`bash:.gitcommit_template
# ==== Commit Messages ====# ==== Commit Messages(Template) ====
##
# 例) feat :sparkles: #777 ログイン機能を実装