20200715のGitに関する記事は6件です。

git の差分をいい感じに表示できる delta の紹介

git の差分をいい感じに表示できる delta を紹介します。rust 製です。

https://github.com/dandavison/delta

まず先に before / after を載せておきます。

before

スクリーンショット 2020-07-15 23.28.45.png

after

スクリーンショット 2020-07-15 23.27.50.png

導入方法

brew でインストールできます。

brew install git-delta

設定方法

.gitconfigに書きを追加します。

[core]
  pager = delta --theme='Monokai Extended'
[interactive]
  diffFilter = delta --color-only

完了です。

確認

おもむろにgit log -p をしてください。シンタックスハイライトした差分が表示されるかと思います。

git の cli ツールである tig が対応していればさらに良いのですが、ISSUEが作られているもののなかなか機能追加は大変そうな印象です。

https://github.com/jonas/tig/issues/542

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

よく使うGitコマンドを書いてみた(随時更新中)

はじめに

これは未経験エンジニアが、フルスタックエンジニアになるための備忘録である:point_up:

よく使うコマンド一覧

ディレクトリでgitを使い始めるためのコマンド

git init
//リポジトリしたいファイルにgit init

作成したリポジトリをローカルにコピーする

git clone SSHまたはHTTPSのGitHubにある文字列
//リモートからローカルにコピーするコマンドですね!  

現在gのgitの状態を確認する

git status
//赤字で表示されたら管理外 緑色ならば管理されている状態(ステージング状態)
//ファイル変更したら後に実行するとmodified file名 と表示される

ファイルをgitに管理(ステージング状態)にする

git add ファイル

git add .
//全てのファイルを git したい場合

現在の状態をgitにコミットメッセージを残してセーブする

git commit -m "何か文字を入れてね"
//コマンドを実行したら現在の状態が git に保存される

git のコミット履歴を確認できるコマンド

git log 
//何時何分に誰が変更したかを表示してくれる

リモートにアップロードを行う

git push origin
//origin というのはリモートサーバのこと

リモートリポジトリに接続確認
鍵認証用

 ssh -T git@github.com
The authenticity of host 'github.com (192.30.255.113)' can't be established.
RSA key fingerprint is SHA256:nTmki6kXUpJJUDNE1IGOCspRomTxdCHYSviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?
//が表示されたらyes と入力し、returnキーを押してください

Hi (自分のアカウント名) You've successfully authenticated, but GitHub does not provide shell access.
このように表示されたら接続は成功
$ git remote add origin git@github.com:アカウント名/リポジトリ名.git
$ git push -u origin master

画面に以下のようなメッセージが表示されたらpushは完了。

Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (5/5), 420 bytes | 420.00 KiB/s, done.
Total 5 (delta 0), reused 0 (delta 0)
To github.com:BabaShun/sample.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

間違ってrebaseしてリモートリポジトリにpushしちゃったけど、戻したい

表題の通り慌てたので、備忘録。

経緯

ブランチで作業してからrabaseした後、問題ないかと思ってリポジトリにpushしたが、
間違いが判明し、戻したくなった。ある程度作業した後にrebaseするとrebase元のコミットとごちゃごちゃになってしまう。
これの対応方法は別途調べるとして、結果から言うと下記で戻しました。

git reflog 
git reset --hard HEAD@{番号}
git push -f origin ブランチ名

git reflog

履歴やブランチの切り替え履歴を参照できる。
git resetを行うとgit logでは履歴が消えてしまうが、git reflogでは履歴が残る。

git reset --hard HEAD@{番号}

--hard
「HEADの位置・インデックス・ワーキングツリー」全てが対象
最後のコミットの状態に戻す

他のオプションとして、

オプション 対象 使用例
--mixed オプションを指定しない場合はデフォルトでこれになる。「HEADの位置・インデックス」が対象 addを取り消したい時など
--soft 「HEADの位置」のみ コミットのみ削除など

HEAD@{番号}はgit reflogで確認できる

git push -f origin ブランチ名

強制的にpushする
※共有されたブランチで使用する場合には要注意。

以上です。
いいねやQiitaやTwitterのフォローいただけると励みになります!
他にも方法がありましたら、コメントお待ちしております。
宜しくお願いします〜

参考

git pull と git pull –rebase の違いって?図を交えて説明します!
【 git revert/git reset 】コマンド――コミットを取り消す
git push を強制する -f (–force)と –force-with-lease
[git reset (--hard/--soft)]ワーキングツリー、インデックス、HEADを使いこなす方法

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

Git リポジトリ作成時のデフォルトブランチ名を main にする

master -> main

git init でリポジトリを作成し 最初のコミット をした場合、ブランチ名はデフォルトで master になります。
2020/07 時点では git init 時のこの挙動を変更するようなオプションは用意されていません。

デフォルトブランチ名を変更したい場合は、 最初のコミット の前に HEAD の参照先を移動しておく必要があります。

git init
git symbolic-ref HEAD refs/heads/main   # 参照先を main に移動
...
git commit -m 'Initial commit'

新規リポジトリ作成の度に上記のコマンドを思い出して実行するのは手間なので、エイリアスを作成しておきましょう。

git config --global alias.new '!git init && git symbolic-ref HEAD refs/heads/main'

今回は new にエイリアスを設定しました。

これで git new すると、デフォルトブランチが main のリポジトリを作成することができます。

参考

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

Git:リポジトリ単位で別のアカウント情報を設定する

リポジトリごとに別のアカウント情報を設定する方法

cd repo
git config --local user.name "リポジトリ用アカウント名"
git config --local user.email "リポジトリ用メールアドレス"

repo/config に user が追加されます

[user]
name = リポジトリ用アカウント名
email = リポジトリ用メールアドレス
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Git install メモ

GitHubのリリースから好きなバージョンのGitを選び放題!嬉しい!美味しい!
https://github.com/git/git/releases

Gitが動けばよかったのでCentOSのバージョンは参考記事と同じ6系
dockerで動かす

docker run --rm -it --name git-test centos:6.10 bash

コンテナ内でのコマンド

cd /tmp
yum update
yum install -y wget
wget https://github.com/git/git/archive/v2.27.0.tar.gz
tar xvf v2.27.0.tar.gz
yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker
yum -y install autoconf
cd git-2.27.0/
make configure
./configure
yum -y install gcc
./configure
make prefix=/usr/local/ all
make prefix=/usr/local/ install
which git

参考

https://qiita.com/347lionz/items/a18c5b11df45a7c2e67d

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