今さら聞けないGit 2020年09月30日

今さら聞けないGit 2020年09月30日

grep で特定ファイルを無視をしたい

# git grep と ripgrep で特定のファイル/ディレクトリを無視をしたい

## git grep

– https://qiita.com/laiso/items/6a453abdf3998a3475eb

リポジトリ毎に指定したかったので,`.git/config` に指定した

“`config:.git/config
[grep]
defaultFile = :!ignoredDirectory
“`

“`zsh:~/.zshrc
function gg () {
git grep $* `git config grep.defaultFile`
}
“`

## rg も同じ設定を使いたい

– https://qiita.com/ktrysmt/items/70fa1d4e88e0d362c410

“`zsh:~/.zshrc
export RG_DEFAULT_OPT=’-p’
function rg() {
local glob=`git config grep.defaultFile | sed -e ‘s/:/–glob

元記事を表示

git tagの基本コマンド

# 基本コマンド

“`:既存のタグ一覧を確認
git tag
“`
“`:現在のコミットにタグ名をつける
git tag タグ名
“`
“`:リモートリポジトリへプッシュ
git push origin #単体タグ
git push –tag #全タグ
“`
“`:タグの削除(ローカル)
# ローカル

git tag -d tag名
git tag -D tag名 #強制削除

# リモート

git push origin –delete タグ名
“`
“`:リモートのタグをローカルでチェックアウト
git checkout -b ブランチ名 refs/tags/タグ名
“`

元記事を表示

gitコマンドまとめ(よく使うやつ)

#よく使うコマンドをまとめる

“`
$ git checkout -b <ブランチ名> origin/<ブランチ名>
“`
ローカルに持ってきてブランチ切り替え

“`
$ git reset HEAD –hard
“`
現在のディレクトリの全てのファイルをリセット(HEADは直前)

“`
$ git branch -D <ブランチ名>
“`
ブランチを削除 detached HEADの時に使える

“`
$ git log –oneline
“`

1行でlogを見る

“`
$ git checkout —
“`

Fime_nameの変更点を消せる

“`
$ git commit –amend
“`

前回のコミットに変更点を載せるイメージ

“`
$ git checkout -b <ブランチ名>
“`

ローカルにブランチを作る

元記事を表示

githubでローカルからリモートへpushしようとしたら’fatal: Could not read from remote repository.’のエラー

commitも終わりgithubへpushをしようと思ったところエラーが起きました。
また、起こるであろう時に備えて備忘録です。

## 環境
macOs Catalina(10.15.4)
エディター (VSCode)
iTerm2 (Build 3.3.12)

commitはVScodeから作業済み

## エラーの原因
リモートリポジトリへpushしようとしたところ以下のエラーが起きた。
`’fatal: Could not read from remote repository.’`

「リモートリポジトリからの読み込みできない(「SSH 通らん」)」ってエラーなので
下記のコマンドが有効です。(git cloneもmysqlもSSHが通らない時は同様)
`ssh-add -K ~/.ssh/id_rsa`
これはざっくり言うと秘密鍵(id_rsa)をsshに通すよというコマンド。
(ただし、githubに鍵を登録していることが前提です。)

## ①gitのどのブランチ(またはmaster)にいるか確認

`git status`を入力しpushしたいブランチになっているか

元記事を表示

Git で submodule 含んで最新コミットだけ checkout したい

## 背景

* llvm-project とか repo サイズが大きいのを submodule で git repo に追加している.
* 普通に引くと 1GB とか 2GB とかになるような repo で, でかくてつらい
* しかしビルドに使うだけなので, 最新コミットだけ引ければよい
* CI でビルドしたいとか.

## 方法

`–depth 1` で最新コミットだけ引けますが, submodule には適用されません.

Using git to get just the latest revision
https://stackoverflow.com/questions/1209999/using-git-to-get-just-the-latest-revision

`–recurse-submodules –shallow-submodules` つければいけそうであるが, オプションは古いようで最新 git では利用できない.

## 結論

未解決

元記事を表示

git reset –hardメモ

# Git reset

バージョンを切り替えて比較デバッグすることが良くあると思います。
そんなときによくreset –hardを使います。
その時使用するコマンドのメモ書きです。

ログを表示

“`
git reflog
“`
結果

“`
68ae43a (HEAD -> master) HEAD@{0}: commit: Ver.0.4.2
7a44b39 HEAD@{1}: commit: Ver.0.4.1
6d29c98 HEAD@{2}: commit (initial): Ver.0.4.0
“`

先頭のハッシュ値を使います。

“`
git reset –hard 7a44b39
“`

バージョンを行ったり来たりしていると、reflog結果がごちゃごちゃしてくるので、
最新のハッシュ値を見つけるのは一苦労。

そこで最新のバージョンに戻すには、

“`
git reset –hard ORIG_HEAD
“`

元記事を表示

[remote rejected] master -> master (branch is currently checked out) 対策

# 状況
master のあるデスクトップPCにネットワークのフォルダ共有して、ノートPCにcloneを作成しました。
ノートPCを持ち歩いて、現場環境でデバッグ・修正した結果をpushしてmasterに反映しようとしました。

# 失敗
以下のようなメッセージが出て失敗。
“`
[remote rejected] master -> master (branch is currently checked out)
“`

いろいろな記事を参考にさせていただきました。
この記事が適切でした。
git pushでremote rejectedと怒られた時にやったことメモ: [Qiita](https://qiita.com/ssm_snow/items/3041be842cadf68e6d67)

# 手順

1)デスクトップPC(master)側

“`
git config –bool core.bare true
“`

2)ノートPC側

“`
git push origin master
“`

3)デスクトップPC(master)側

“`

元記事を表示

【Git】今更だけどrevertについてまとめてみた

# git revertで何ができるの?

**既存のコミットを取り消すための「新しいコミット」を作成する。**

# git resetとの違い

### git reset

– 特定のコミットを元に戻す
– コミットを取り消したというコミットが残らない

### git revert

– 既存のコミットを取り消す。
– コミットを取り消したというコミットが残る

# git revertの使いどき。

## 特定のコミットを取り消したい。

“`
git revert
“`
特定のコミットIDを指定することで、そのコミットを取り消すコミットが作成されます。オプションをつけなかった場合、コミットメッセージの編集モードに移行します。

## コミットメッセージを編集したくない場合。

“`
git revert –no-edit
“`

## commitをしないrevert

複数のコミットをrevertする場合、一度にコミットしたいときに便利。

“`
git revert -n
“`

## マー

元記事を表示

WindowsのOpenSSHでGitサーバーを立ち上げる

# はじめに
Git for Windowsにはsshdが添付されてるのでそのままサーバーとして運用出来る・・・はずなんですが情報も少ないし面倒な割にサービス起動出来ないなど制約も多い
WindowsにはOpenSSHが用意されていますのでこっちでサーバーを立ち上げた方が潰しが利くかな、ということでやってみた備忘録です

自分のメモ用なので他の環境では違う可能性があるのはご承知おきください_○□=

# メリット
– Windowsなので気軽にGitサーバーの立ち上げが出来る
– OpenSSHを使うことで潰しが利く・・・かも?
– 容量がいっぱい使える(gitの商業サービスは容量制限がキツい)

# デメリット
– Githubのような商業サービスで出来る高度なことはほとんど出来ない
– OpenSSHでデフォルトシェルをbashに切り替えるので他の理由でsshにログインするときもbashを使用することになります:innocent:
– SSHアクセス時のShellをBashにしてしまうので、Git以外でログインのときもBashを使うことに・・・
– 不正アクセス等の対策も別途考えな

元記事を表示

Install latest git for Debian10

cd ~
git clone https://github.com/git/git.git

cd git
make prefix=/usr/local all
sudo make prefix=/usr/local install

# 参考サイト
https://www.digitalocean.com/community/tutorials/how-to-install-git-on-debian-10

元記事を表示

.dockerignoreが効かない?.gitignoreとは書き方が違うよ!

# この記事は
.dockerignoreと.gitignore、名前が似ているし書き方も似ているので同じように書けばよいと思っていましたが、違いました。この記事では違いを見ていきます。

# 対象読者
.gitignoreは書いたことがあるけれど、.dockerignoreはあまり書いたことがない人

# ポイント
.gitignoreの仕様は [公式ページのgitignoreのページ](https://git-scm.com/docs/gitignore) に記載されています。
日本語だとQiitaの [.gitignoreの仕様詳解](https://qiita.com/anqooqie/items/110957797b3d5280c44f) が分かりやすいです。

.dockerignoreの仕様は [公式ページのdocker build#dockerignore](https://docs.docker.jp/engine/reference/builder.html#dockerignore) に記載されています。

主なルールは3つです。

> – パターンマッチングには

元記事を表示

[rails] NOFILEのマイグレーションファイルを削除

###事件内容

このようなファイルができてしまい、
rollbackができないため、マイグレーションファイルをdownさせることができない

“`
up 20200926110535 ********** NO FILE **********

“`

###事件が起こった経緯

おそらくマイグレーションのステータスがUPの状態で
マイグレーションファイルを削除してしまった。

私の場合はgitデスクトップでchangeを丸ごと削除したので、この事件が起きた模様。

###解決策

えっと、皆様が載せてくださっていた記事を何個か見させていただいた結果、無事解決いたしました。

まず、no faileに名前を付与するために
ターミナルでこのコマンドを実行してください:zap:
(マイグレーションIDはあなた様のnofileになっているIDに変えてください。
  その後の名前はダミーですのでなんでも構いません。)

“`
% touch db/migrate/20200926110535_fuwafuwa.rb
“`

実行後↓

“`2020092

元記事を表示

初心者がPythonでウェブスクレイピング(4) – 2

それでは[前回](https://qiita.com/inoken0926/items/db1a828465019e205e5e)作成したCloud Source RepositroiesのリポジトリにスクレイピングのPGMを追加していきます。

#Pythonでのウェブスクレイピング学習のロードマップ
(1)ローカルでとりあえず目的のブツのスクレイピングに成功する。
(2)ローカルでスクレイピングした結果をGoogleスプレッドシートに連携する。
(3)ローカルでcron自動実行を行う。
(4)クラウドサーバー上での無料自動実行に挑戦する。(Google Compute Engine)
  (4)-1 クラウドにテスト用PGMを載せて、CloudShell上で正常稼働させる
  (4)-2 スクレイピングPGMをリポジトリに追加し、CloudShell上で正常稼働させる。 ←いまココ
  (4)-3 ComputeEngineのVMインスタンスを作成して、スクレイピングを自動実行させる。
(5)クラウド上で、サーバーレスでの無料自動

元記事を表示

この行がマージされたプルリクを見たい

最近よくコードリーディングをしているので、GitLensを重宝しています。
https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens

コミットIDやコミットメッセージを簡単に見られるので、
「なぜこの変更が行われたのか」を確認することができます。神。

ただ、この情報だけでは足りず
「このコミットがマージされたプルリクを見たい」となることがあります。
こうなると、

1. GitHubで該当のCommitを開く
https://github.com/[user|org]/[repo]/commit/[commit_id]
2. プルリクへのリンクがあるのでクリック

と確認することになりますが、繰り返していくと面倒になってきます。
そこで、シェルを作りました。

“`bash:git-open-pr
#!/bin/bash -eu

DEFAULT_BRANCH=$(git remote show origin | grep “HEAD branch” | sed “s/.*: //”)

元記事を表示

初めてのGitコマンド一覧【初心者向け】

エンジニア4ヶ月目のtomoakiです。
実務でよく使っているGitコマンドについて、備忘録も兼ねてまとめていきます。

現場に入りたてのエンジニアがよく使うコマンドを中心に記載しているので、過不足あると思いますがご容赦ください。m(_ _)m
適宜、追加していく予定です。

#git init
gitプロジェクトを新規作成します。
作成したいディレクトリに移動してから`git init`コマンドを叩いてください。

“`
$ git init
Initialized empty Git repository in <ディレクトリ名>/.git/
“`

#git clone
指定したリポジトリ名のプロジェクトを、指定したディレクトリにコピーします。

“`
$ git clone <リポジトリ名> <ディレクトリ名>

Cloning into ‘<ディレクトリ名>‘…
remote: Enumerating objects: 190, done.
remote: Counting objects: 100% (190/190), done.
remote: Compre

元記事を表示

Gitで間違えてコミットしたファイルをadd前の状態に戻したい!泣

タイトルの通りです。
先に結論を書いておきます。

“`
git reset HEAD^
“`

以上です。これで解決です。

ここからは、読まなくても問題ないです。
タイトルだけだとよくわからないという方は、お読みください。

(経緯)
あるブランチで作業していたら、いったん今の作業を退避させて、別の作業をしたいと思い、
意気揚々と`git commit`し、
`git stash`しようとおもったのですが、

“`
$ git stash
No local changes to save
“`

あれ?
あーーー!!そうだ、なぜコミットしてしまったんだ、、、泣
(`git stash`はコミットしていない変更がある状態で上記のコマンドを実行すると、変更した部分が退避されます。)

やばいやばい、ここは`git revert HEAD`か?
いや、それだとこれまでに変更した作業が消えてしまう、、、、

このまま作業するしかないのか、というときに、やっぱりありました。
(まあそりゃありますよね)

“`:対処前のコミット履歴
$ git log –pretty=onelin

元記事を表示

fatal: remote origin already existsのエラーで怒られたとき

リモートリポジトリをローカルリポジトリに紐付けしようとしたら
以下のエラーが!!

“`
$ git remote add origin git@github.com:com/ユーザー名/リポジトリ名.git
fatal: remote origin already exists.
“`

これで完璧! git remoteでリポジトリを【追加,削除,確認,変更】


こちらのサイトで解決。

要は、既に紐付き先があるから浮気しないでくれって感じなのでそれに消えてもらって、再度登録をし直せばいいとのこと。

そこで念のためにどのリポジトリに紐付いてるかを確認するために

“`
git remote -v
“`
を入力。

“`
origin git@github.com:~(fetch)
origin git@github.com:~(push)
“`

すると今の紐付け先が出てくるので、削除するために

“`
git remote rm origin
“`
を入力。
そしてもう一度

“`
git remote -v
“`
を入力して削除されたかの確認。
削除されてた

元記事を表示

SourceTreeのインストール

#要点
– 無料利用可能
– Mac、Windows に対応
– インストールはexe形式のインストーラーを使う(Scoopは使わない)
– 詳細オプションは、有効化しない

#SourceTreeとは
バージョン管理システム(GitとMercurial)をGUI操作できる無料ツール。
MacとWindowsに対応している。

#インストール手順(通常版)
##1. インストーラーをダウンロードする
https://www.sourcetreeapp.com/
公式サイトからインストーラーをダウンロードする

##2. インストーラーを起動する

###2.1. Install
ダウンロードしたインストーラーを起動します。

###2.2. Registration
Bitcuketのアカウント登録を行えますが、Bitcuketを使わないのであれば「スキップ」で問題ありません。
![rapture_20200926010925.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39680/0a2b7d59

元記事を表示

バージョン管理システム

### バージョン管理システムについて

大きく分けると2つのバージョン管理システムが存在する。
一つ目はSubVersionやCSVなどの集中型バージョン管理システム
二つ目はGitのような分散型のバージョン管理システム

以前では集中型バージョン管理システムが使われていましたが、
源氏ではGitへ移行されており、分散型バージョン管理システムが主流になっています。

### バージョン管理システムに言えること

チーム開発において生産性の高いか開発環境を提供できる

– 変更履歴が残る為、後でどのような作業を行なっていたか経緯を追うことが可能。
– 同じファイルを複数人が同時に変更ができる。
– タグによってリリースの成果物を管理できる。
– 過去の任意のバージョンまで戻すこと(リバート)ができる

上記で簡単にバージョン管理システムについて説明してきましたが、
筆者は現在GitLabの学習をしていますので、これからはそちら
情報を投稿していこうと思います。

元記事を表示

Githubで’Untracked files’がどうにも消えない時の対応

#状況
作業していたローカルブランチでの変更を無き物にしたい。

#やったこと
1. `git checkout — .`→Untracked filesは消えません

#次にやったこと
1. `git co master`でmasterブランチに切り替え。
2. `git branch -D branch名`でブランチの削除→まだまだUntracked filesは消えません。

#その次にやったこと
1. `git fetch origin`からの
2. `git merge origin/master`でリポジトリから取得しての上書き→まだまだUntracked filesは消えません。

#そのまた次にやったこと
1. `git clean -dfn` → `git clean -df`したときの未追跡の変更差分(Untracked files)がどうなるかの確認。
2. `git clean -df` → ようやくUntracked filesは消えました。

元記事を表示

OTHERカテゴリの最新記事