今さら聞けないGit 

今さら聞けないGit 

Gitでの取り消し

# 内容
以下の内容について書いていきます。
– 直前のコミットのコミットメッセージを変更したい
– 直前のコミットの内容を変更したい
– ワーキングツリー/ステージングエリアに載せた変更を取り消したい
– 動作確認のためにいくつも前のコミットの状態に戻したい

# 前提
mainブランチで、v1→v2→v3とコミットを重ねてきているとします。

## ワーキングツリー/ステージングエリアに載せた変更を取り消す
“`
git restore
“`
add前のファイルの変更を取り消す。“`git add“`と同じ文法で使用可能。
“`git status“`で表示される。

“`
git restore –staged
“`
ステージングエリア上の変更を取り消す。
“`git status“`で表示される。

## 直前のコミットのコミットメッセージを変更する
“`
git commit –amend
“`
エディタが開き、修正後に閉じることで修正が完了する。
この際ステージングエリアにある変更を自動で直前のコミ

元記事を表示

GitHubリモートリポジトリの使い方

# 内容
GitHubのリモートリポジトリでバージョン管理する方法を復習として残します。

# to do
1. リモートリポジトリの作成
1. ssh keyのコピー
(sshキーを取得している場合。取得方法は別の箇所で書くかもしれません。)
1. ローカルリポジトリの作成:“`git init –initial-branch main“`(mainブランチで始まる状態で.gitを作成)
1. コードを書く
1. “`git add <ファイル名>“`ステージングを行う
1. “`git commit -m “コミットメッセージ”“`
1. “`git remote add <リモートリポジトリの名前>“`
1. “`git push -u origin main“`

元記事を表示

【git】gitでよく使うコマンド

こんにちは~昨日は体調を崩していたので、今日まとめて投稿します!
最近チーム開発でgitをよく使うのですが、その時に多用しているコマンドを今回はまとめてみました:grin:

## 基本的なコマンド

ブランチ移動
“`terminal:ターミナル
$ git checkout ブランチ名  
“`
ブランチ作成
“`terminal:ターミナル
$ git checkout -b 新しいブランチ名  
“`
ブランチ確認
“`terminal:ターミナル
$ git branch  
“`
空コミット
“`terminal:ターミナル
$ git commit –allow-empty -m “コメント”
“`

## ブランチの削除コマンド
ローカルブランチ削除
“`terminal:ターミナル
$ git branch -d ローカルのブランチ名 
“`
リモートブランチ削除
“`terminal:ターミナル
$ git push origin -delete リモートのブランチ名 
“`
## リモートの最新のブランチをローカルに反映
リモートの最新の

元記事を表示

githubでリポジトリ作成後初めてのコミットまでの手順をいつも忘れるので備忘録として…

1. リポジトリ作成
1. コミットしたいディレクトリに移動

“`.terminal
git init
“`

“`.terminal
git remote add origin https://github.com/アカウント名/リポジトリ名
“`

“`.terminal
git add
“`

“`.terminal
git commit -m “first commit”
“`

“`.terminal
git push -u origin main
“`
怒られたら
“`.terminal
git push -u origin master
“`
上記を試してみる

元記事を表示

git pushを取り消す方法・力技(個人開発&リポジトリ作りたての場合)

## 注意
Qiita初投稿です。私は今日gitとgithubを触り始めたレクリエーションプログラマーです。
仕事でプログラミングをしているわけでもなければ、学生時代に学んだこともありません。

また、私の環境はWindows10で、今回の作業はVScodeを使って行いました。

## 起こった問題
git pushしたリポジトリの最初のコミットに
APIキーやらメールアドレスやら非公開の情報が含まれていました。

## やりたいこと
非公開の情報を含んだコミット履歴を消したい。
このpushをなかったことにしたい!

## やったこと
個人開発でしかやっちゃいけない?事かもしれませんが、力技で解決しました。
2回目のコミットを「1回目のコミットとして」pushしました。

具体的には以下のようにしました。
* ローカルのリポジトリを削除する
* 再度ローカルのリポジトリを作成して、初回のコミットを行う
* ローカルのGitHubのリポジトリに紐付け、pushする

順に解説します。

### ローカルのリポジトリを削除する
ローカルのプロジェクトディレクトリに存在していた.gitフォ

元記事を表示

GitButlerでgitのワークフローをめっちゃ便利にする

## tldr

[GitButler](https://gitbutler.com/)のUIはこんなかんじ。

![](https://storage.googleapis.com/zenn-user-upload/1d16ebc08546-20240214.png)

### なにがいいの?

目玉となる機能は仮想ブランチで物理的なブランチを作成しなくてもgitの作業を柔軟に行えるようになります。たとえば現在の変更から複数の仮想ブランチに変更をドラッグして変更を構成できたりします。

コミットメッセージも自動で考えてくれたりします。

![](https://storage.googleapis.com/zenn-user-upload/370ea1bb51f0-20240214.png)

仮想ブランチの名前も自動的に決めてくれます。

![CleanShot 2024-02-14 at 19.15.52@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7565/943be974-956d-0

元記事を表示

Gitの内部構造について

# はじめに

よく開発をするときにGitを使うけど、内部で何をしているのか知らなかったので、調べてみました。

# Gitの概要

Gitとは、Linus Torvaldsらが作ったバージョン管理システムである。
`git init`直後のファイル構成は以下のようになっている。

“`bash
.git
├── HEAD
├── config
├── description
├── hooks
│ ├── applypatch-msg.sample
│ ├── commit-msg.sample
│ ├── fsmonitor-watchman.sample
│ ├── post-update.sample
│ ├── pre-applypatch.sample
│ ├── pre-commit.sample
│ ├── pre-push.sample
│ ├── pre-rebase.sample
│ ├── pre-receive.sample
│ ├── prepare-commit-msg.sample
│ └── update.

元記事を表示

エンジニアは思った。git mvを使えるようになりたい。

先日東京で雪が積もった際、故郷のことを思い出してテンションが上がってしまいました。

# 今回の話
ーある日の業務中ー
**上司**:「新しいディレクトリを作ってそこに元からあったファイルを入れて欲しいんだよね。」
**私**:「承知しました。」

というわけでファイルの移動をすることになりました。

**私の脳内**:「あのファイルって確かgitに一度pushしたから追跡対象になっているよな…」
「こっちで適当に移動するとpushするとき、エラーになりそうだな」
「それ専用のコマンドってあるんだろうか」

-google先生に聞いてみる

「なんかgit mvっていうコマンドを使うらしいな」

# git mv
git上の追跡対象のファイルの名前変更や移動が行えるコマンドです。
このコマンドを使うことで**追跡を維持できる**というのが重要な点になっています。
以下がコマンドです。

### ファイル名の変更
“`terminal
git mv 旧ファイル名 新規ファイル名 
“`
### ファイルの移動
“`terminal
git mv ファイル名 移動先
“`

::

元記事を表示

なぜかfetchしてもブランチの情報が取得できない

# はじめに
Jenkinsでビルドをかけているのですが、ブランチの切替時に次のようなエラーが出ました
“`
error: pathspec ‘ブランチ’ did not match any file(s) known to git
“`

毎回fetchして取得しているはずなのですが、
なぜか急にできなくなったので、その解決法になります。
なお、shallow cloneでクローンしたプロジェクトになります。

# 環境
– macOS Monterey 12.6
– Jenkins 2.372

# 解決
最初に解決方法ですが、いろいろ試した結果、解決したのは以下のコマンドでした
“`
$ git remote set-branches origin ‘*’
“`
ローカルリポジトリが全てのリモートリポジトリのブランチを追跡するという設定になるようです。

# 解決しなかったけど試したこと
他に次のようなことを試してみました

### 直接fetchしてみる
シェルスクリプトからやっているのが悪いのかと思い、ターミナルから`git fetch`を実行してみましたがもちろんだ

元記事を表示

git squash コマンド(※釣り)

# git rebase -i

![git squash](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78152/82be9a4f-06d8-f679-9404-187ce378ea00.png)

`git rebase -i` の実行の際に `squash` やその省略形である `s` を指定すると、図のように複数のコミットを1つにまとめることが出来ます。

“`bash
git rebase -i develop
“`

“`diff_shell
pick abcd123 すごい機能 仮実装
– pick efgh456 バグ修正
– pick ijkl789 誤字修正
+ squash efgh456 バグ修正
+ squash ijkl789 誤字修正
“`

> If you want to fold two or more commits into one, replace the command “pick” for the second and subsequent commi

元記事を表示

【Git】git resetのオプションって何をどう使うの?

こんばんは~
今回はgitを使う上では欠かせないgit resetのオプション(soft, hard, mixed)の使うシーンと使った際の処理の違いについて説明します!
1人でgitをcommitやpushしていたときはあまりコメントに気を使っていませんでしたが、ついにチーム開発ということで、他の人に分かりやすく、間違いなくcommitするためにgit resetの方法を知っていくことは必須でした!(感想)

## git reset –softはどんな時に使う?
 『commitするときのコメント打ってる途中でenter押してしちゃったー』『手が勝手にcommitしてた~』という時ありますよね!そこでストップしてください!こんな時に使えるのがsoftオプションです。
“`terminal
$ git reset –soft
“`
このコマンドを打つと何が起きるかというと、`git commit -m “コメント”`を打つ直前に戻ることができます。つまり、さっきのcommitはなかったことに!ということになります。逆にcommit以外は何も変わっていないため、git

元記事を表示

Gitのコマンドをまとめてみた

今更ですが、Gitについて最近学び直しているので備忘メモとして簡単にまとめます。

それではいきます。

# Gitコマンド一覧

– Gitユーザー名の登録
“`bash
$ git config –global user.name “任意のユーザー名”
“`

– Gitユーザーのメールアドレスの登録
“`bash
$ git config –global user.email 任意のメールアドレス
“`

– Gitの設定一覧表示
“`bash
$ git config –list
“`
このコマンドで表示される内容の設定は「~/.gitconfig」に記載されていて、ファイルの中身はcatコマンドなどで確認できます。

– ワークツリーの変更をステージへ追加(=ステージにインデックスを作成)

“`bash
$ git add <ファイル名>
“`

– 現在のファイル変更状況を確認
“`bash
$ git status
“`
ワークツリーとステージの差分は赤色の文字で、ステージとローカルリポジトリの差分は緑色の文字で表示されます。

– ワークツリ

元記事を表示

【Git】 fatal: Unable to create ‘○○’: File exists. のエラーの対処法

半年以上前に作成した記事が眠っていたので、ちゃんと編集して載せたいと思います。
同じエラーで悩んでいる方の参考になれば幸いです。

## はじめに
gitでプロジェクトを管理していたら
“`
fatal: Unable to create ‘○○’: File exists.
“`
というエラーが出てしまったので、後で見返せるように投稿します。

所々間違っている点があるかもしれませんが、ご了承ください。

## エラーの内容
“`
fatal: Unable to create ‘○○’: File exists.
“`

このエラーの内容ですが、簡単に言うと同じリポジトリ内でプロジェクトの強制終了や、フリーズ、gitのコマンドが複数同時に実行されてしまっているときに起きるエラーだそうです。

### index.lockファイルとは
同時に複数のユーザーが同じGitリポジトリにアクセスする場合、同じファイルでの変更(競合状態)が起こらないようにGitがindex.lockファイルを生成し、競合が起きないようにロックをかけてくれています。
今回は、プロジェクトのフリーズ、強制

元記事を表示

GitとGitHubについての勉強

# GitとGitHubの勉強記録

コミットは変更点を記録すること
プログラムの変更履歴を追うときにはコミットメッセージを読むためコミットがきれいに行われていると他人は履歴を追いやすい

どのコミットに戻りたいかを指定する時→「コミットハッシュ」や「ハッシュ値」はコミットに対して固有の一つが割り当てられる→それを指定

リポジトリ
– ローカルリポジトリ
– リモートリポジトリ

ブランチに分けて作業を行う
マージするときに複数のチームが同じファイルの同じ部分を編集していた場合は「コンフリクト」という機能によって変更の衝突が起こる前に気づかせてもらうことができる。

git configの設定に関して
設定を消去したい時は…
`git config –glibal **–unset** 設定項目名`
とすればよい。

#### 標準ブランチ名の設定
Windowsを使っている人は標準でmasterに設定されているが、Windows以外のOSを使っている人は、以下のようにして標準ブランチ名を設定する。
`git config –global init.defaultBranc

元記事を表示

.gitignoreがうまく動作しなくて30分とかした話

# 課題
.gitignoreファイルに無視したいディレクトリを.gitignoreファイルをカレントディレクトリとした相対パスで書いているのに無視されない

# 解決策
すでに追跡(トラッキング)されているファイル、ディレクトリは後から.gitignoreファイルに追記しても無視してくれない仕様であるそう。
よって、
“`
git rm –cached [file or directory name]
“`
でトラッキングを取り消す必要がある。

元記事を表示

よく使うgitコマンド集

## git addの取り消し
“`shell
git reset HEAD
“`

## Untracked fileの削除
“`shell
# 削除されるUntracked fileを確認
git clean -n

# 削除実行
git clean -f

# ディレクトリごと削除する場合
git clean -df
“`

## gitの追跡対象外にする
ワークツリー(ローカル環境)にはファイルが残る
“`shell
git rm –cached <ファイル名>
git rm -rf –cached <ディレクトリ名>
“`

## ステージングの内容を取り消す
ワークツリーは修正されない
“`
git reset HEAD
“`

## ステージングの内容を直前のコミットに戻す
ワークツリーは修正されない
“`
git checkout HEAD — [ファイル名]
“`

## ワークツリー、ステージング共に取り消し
直前のコミット情報を両方に反映
“`
git checkout –hard HEAD
“`

## `git rm`で削除した

元記事を表示

チーム開発対策(Git編)

# 用語

ワークツリー

自身のファイルを変更する作業場

ステージ

コミットさせたいファイルを準備しておく場所

リポジトリ

ステージのファイルをコミットしてスナップショットを記録する場所

# 初期設定
* インストール後に自身のユーザー名、メールアドレスを登録する
* (編集途中)

# コミットまでの流れ
1. ワークツリーでファイルの変更を行う
1. コミット対象のファイルをステージに追加
1. ステージのファイルをコミットしてリポジトリにスナップショットを記録する

# 各処理の挙動
※処理ごとにgitではGitオブジェクトが作成される
* blob:ファイルの圧縮データ
* tree:blobとファイル名を紐づけるファイル
* commit:コミット情報

## git add
* 変更ファイルをステージに追加する
* ステージに追加され

元記事を表示

.gitconfigでRepositoryごとで使いたい名前やメールアドレスなどを変えたい時に

## はじめに
– Repositoryごとで都度「git config –local user.xxxx」 をするのが面倒になったため、楽をするための設定をここに

## 設定方法の抜粋
– [includeの説明](https://git-scm.com/docs/git-config#_includes)
– includeIfを使って対象ディレクトリごとで読み込ませる設定ファイルを切り替えよう

“`.gitconfig
[includeIf “gitdir:/path/to/A/.git”]
path = /path/to/A

[includeIf “gitdir:/path/to/B/.git”]
path = /path/to/B
“`

“`.gitconfig.A or .gitconfig.B
[user]
email = xxxx@yyyy.yyy
name = zzz
“`

元記事を表示

【Git】基本的なGitコマンドまとめてみた

## はじめに
学習の忘備録です。
## git init
.gitディレクトリが作成される
これで現在のディレクトリの変更履歴を管理出来るようになる
~~~
git init
~~~
## git clone
指定したリポジトリをコピー(クローン)する
リポジトリはローカル・リモートのどちらでも可能
~~~
git clone <リポジトリ名>
~~~
## git add
ワーキングツリーの変更をステージに追加する。追加部分の指定可能
~~~
git add index.html
git add <リポジトリ名>

#全ての変更箇所をaddする
git add .
~~~
## git commit
ステージに追加されている変更をローカルリポジトリに反映させる
~~~
git commit
git commit -m <メッセージ>
~~~
## git status
現在の変更状況を確認出来る
~~~
git status
~~~
## git diff
具体的な変更差分を確認出来る
~~~
# git addする前の差分
git diff
# git addした後の差分
gi

元記事を表示

gitの環境構築【Windows】

社用PCでは利用していましたが、私用PCには入れていなかったので環境構築していきます。

## 1.Gitのインストール
以下サイトからGitをダウンロード

https://gitforwindows.org/

実行ファイルを開き、以下サイトを参考にインストール、初期設定など、、、
https://prog-8.com/docs/git-env-win

## 2.VScodeで使いたい
インストール時にデフォルトのエディタとしてVScodeを設定したはずなのに、gitコマンドが使えない…

### パターン1:インストール後にVScodeを再起動していない
→再起動で解決

### パターン2:VScodeがデフォルトのエディタに設定されていない
以下サイトを参考に設定
https://chuna.tech/blog/software/VisualStudioCode/use-git-command-in-vscode/

## 3.備考(後で調べます)
ユーザー名、メールアドレス変更時は②Gitの初期設定を参考にして修正が必要?

元記事を表示

OTHERカテゴリの最新記事