タグ

Tipsとgitに関するAmaiSaetaのブックマーク (56)

  • --ignore-revオプションで特定コミットをgit blameから除外する

    はじめに 突然ですがみなさんはgit blameしてますか? 私は毎日git blameしています! git blameした結果、その差分をコミットしたのは過去の自分と知るのは日常茶飯事です。 git blameはコードリーディングの強力な味方ですが、LinterFormatterをコードベース全体に適用すると、差分の情報がそれらで上書きされてしまい情報量が減ってしまいます。 そのような場合はgit historyで歴史を遡るしかないのでしょうか? いいえ、git v2.23から追加された--ignore-revオプションで指定したコミットをblameから除外することができるようになりました。 git blame --ignore-revの使い方 --ignore-revにコミットハッシュを渡すとそのコミットはblameから除外されます。 # コミットハッシュは架空のものです $ git

    --ignore-revオプションで特定コミットをgit blameから除外する
  • gitのサブコマンドを自分で作る - blog.ton-up.net

    この記事はGit Advent Calendar 2013の12日目の記事です. 前日は@sonotsさんのgit current-branch, git fetch-pulls, git pull-dry-run など git alias ネタでした. gitはコマンドを実行するとき,まずgit --exec-pathのパスの中からコマンドを探し,なければユーザーのPATHの中からコマンドを探して実行します. そのためPATHの通った場所にgit-コマンド名という実行ファイルを置くだけでユーザーが自由にサブコマンドを作れる便利な仕組みとなっています. ということで,pythonでgitのサブコマンドを作ってみました. git-ls-date ton1517/git-ls-date このサブコマンドはファイルを最初にコミットした日付と最後にコミットした日付(とそのハッシュ)を表示するコマン

    gitのサブコマンドを自分で作る - blog.ton-up.net
    AmaiSaeta
    AmaiSaeta 2023/06/21
    "まずgit --exec-pathのパスの中からコマンドを探し,なければユーザーのPATHの中からコマンドを探して実行します." "PATHの通った場所にgit-コマンド名という実行ファイルを置くだけでユーザーが自由にサブコマンドを作れる"
  • 🍂 Remove gone git branches

    tl;dr Alias for removing local branches that are gone on remote # ~/.gitconfig file [alias] gone = "!f() { git fetch --all --prune; git branch -vv | awk '/: gone]/{print $1}' | xargs git branch -D; }; f" If your git workflow is using Pull Requests that are merged into main branch, after a while your local list of branches will get very messy, because most of the time the PR is merged and remote br

    🍂 Remove gone git branches
  • git diffコマンドで比較する時のダブルドット(..)とトリプルドット(...)の違いとは? | Yakst

    Gitでブランチ(コミット)間の違いを表示するgit diffコマンドに存在するダブルドット(..)記法とトリプルドット(...)記法の違いについて、Stackoverflowの分かりやすい回答。 「git diffコマンドで比較する時のダブルドット(..)とトリプルドット(...)の違いとは?」という質問へのMark Longair氏の回答 git diffコマンドは通常(「通常」というのは、例えばマージコンフリクトを解消する際などには3ウェイマージを表示することがあるため)、コミットグラフにおける完全な2つのポイント間のツリーの状態の違いを表示します。git diffでの..と...の表記は、以下の意味になります。 言い換えると、git diff foo..barはgit diff foo barと完全に同じです。どちらも2つのブランチfooとbarの最新の変更同士の違いを表示します。

    git diffコマンドで比較する時のダブルドット(..)とトリプルドット(...)の違いとは? | Yakst
    AmaiSaeta
    AmaiSaeta 2022/10/07
    `git rev-list` の `..` と `...` は逆だったら一貫性あったのではという気がする……
  • Gitのおすすめエイリアス5選 - 詩と創作・思索のひろば

    緊急新人エンジニア応援企画! ということで自分が Git のエイリアスとして設定している便利コマンドを紹介していく。 直前のコミットに追いコミットする (git fixit) git commit --amend --no-edit もろもろ整えて git push しよう、とすると「あっちょっと修正したい」となるのはよくあること。その際いちいちコミットメッセージを書いて rebase するかというとそんな面倒はとりたくなく、一撃で終わらせたい。--no-edit でコミットメッセージを編集せずに --amend できる。 git fixit に設定している。git commit の引数をそのまま受け付けるので、git fixit -a や git fixit <file> のように使える。 メインブランチに戻る (git com) f() { remote_head=$(git symb

    Gitのおすすめエイリアス5選 - 詩と創作・思索のひろば
  • Windowsローカル開発環境からgit commitする時にはパーミッションに気を付けること - Qiita

    背景 railsでdelay_jobやwheneverを実装し、ローカル開発環境では問題なくジョブが走った。 しかし番環境にデプロイ後、ジョブが走らなかった。 エラーログを確認したところrailsのbinディレクトリ以下の各ファイルの権限が644となっており、実行権限がないことが判明。 だとしたら、ローカル開発環境でも動かないはずだろ?? そんな思いからいろいろ調べてみた。 windows環境でのgitbushはchmodが効かない!! chmod 777 ファイル名してもchmod 644 ファイル名してもchmod o+w ファイル名しても何しようが権限が変更されない。 大丈夫! これはwindowsの仕様の問題らしい。 なのでスッキリあきらめよう! git addするとパーミッションが自動的に変更され644になってしまう!! これはgitの仕様。 おそらくですが、大規模開発を想定し

    Windowsローカル開発環境からgit commitする時にはパーミッションに気を付けること - Qiita
  • [Git] 自分の環境だけgitignoreする方法(2つ) - YoheiM .NET

    こんにちは、@yoheiMuneです。 Gitを使って開発をしていると、時々自分だけgitignoreにしたいファイルができます(例えばエディタのメタファイルとか)。そのようなファイルを、自分の環境からバージョン管理から外す方法をブログに書きたいと思います。 特定のプロジェクトにある指定したファイルを、自分だけgitignoreしたい 掲題のような場合には、.git/info/excludeのファイルにバージョン管理外にしたいファイルを指定します。 # .git/info/exclude my-gitignore-target.txt すると、ファイルをGitレポジトリ上に追加しても、バージョン管理対象外になります。 # ファイルを追加する $ touch my-gitignore-target.txt # しかし、バージョン管理対象に入らない $ git status # On bran

    [Git] 自分の環境だけgitignoreする方法(2つ) - YoheiM .NET
  • mattn on Twitter: "$ git status --porcelain | vim - してステージングしてないファイル名の中で必要なファイル名だけ抽出して :w !xargs git add みたいなのはよくやる。"

    $ git status --porcelain | vim - してステージングしてないファイル名の中で必要なファイル名だけ抽出して :w !xargs git add みたいなのはよくやる。

    mattn on Twitter: "$ git status --porcelain | vim - してステージングしてないファイル名の中で必要なファイル名だけ抽出して :w !xargs git add みたいなのはよくやる。"
  • Gitのエイリアスで引数を使う

    B! 20 0 0 0 Gitで長いコマンドをエイリアスにして短いコマンドにしておくと便利ですが、 ちょっと複雑なことまでやろうとした場合について。 git config alias 外部コマンドを渡す 引数を渡す 実行されるディレクトリ より長いコマンド サブコマンドを作る まとめ git config alias Gitでエイリアスを追加したい時は $ git config --global alias.st status などとすると、~/.gitconfigへ [alias] st = status という行が付け加えられ、今後 $ git st とすると、git statusとした時と同じ結果が見られます。 --globalを除けば現在の作業リポジトリのみに反映される様に.git/configへ追加されます。 もちろん、~/.gitconfig等に直接[alias]下にコマンドを

    Gitのエイリアスで引数を使う
  • git forces refresh index after switching between Windows and Linux

    AmaiSaeta
    AmaiSaeta 2020/12/04
    1. Gitのindexファイルにはシステムコールの結果が入ってる。それはLinuxとWindowsで別だから refresh index が走る 2. 別ワーキングツリーにしましょう 3. どうしても共有したい場合は、GIT_INDEX環境変数で使い分けましょう
  • GitHubのTemplate Repository機能のすゝめ - Qiita

    最近発見したGitHubTemplate Repository機能の紹介です。 リンターやらテストライブラリの設定等は、ほぼどの環境でも行いますが毎回設定するのは地味に面倒ですよね。 GitHubTemplate Repository機能を使えばその環境構築が不要で、質的な開発をすぐに始められるようになります。 GitHubTemplate Repositoryとは? あるリポジトリのコードベースをそっくりそのまま新規のリポジトリ作成で利用できる機能です。 「え、それってforkと違うの?」っと思った方もいるかもですが、以下の点でforkとは異なります。 1つのリポジトリから複数作成できる(forkだと、同名のリポジトリとなるので1人のユーザー内で複数作成は不可) 元となったリポジトリのコミット履歴を継承せず、クリーンな状態でスタートできる 使い方 以下実際にTemplate Re

    GitHubのTemplate Repository機能のすゝめ - Qiita
  • 空のディレクトリを維持するための、 .gitkeep と .gitignore の使い分け - Qiita

    空のディレクトリをコミットに含めたいときは、2つのやり方があります。.gitkeep を使う方法 と、 .gitignore をおいておく方法(例えばPHPのフレームワーク Laravel で用いられている方法)です。 空のディレクトリを保持する目的で使用する .gitignore は、たいていの場合、以下のような内容になっています。 使い分けの基準 .gitkeep と .gitignore は、「空のディレクトリにファイルが追加されたときに、そのファイルを Git での管理対象に含めたいか?」という基準で、使い分けられます。 含めたい場合は .gitkeep 、含めたくない場合は .gitignore を使います。 .gitkeep を使う基準と例 .gitkeepは、「デフォルトではファイルが存在しないけれど、ファイルが追加されたら、そのファイルを Git での管理対象にしたい」場合

    空のディレクトリを維持するための、 .gitkeep と .gitignore の使い分け - Qiita
    AmaiSaeta
    AmaiSaeta 2019/03/26
    .gitkeep知らなかった
  • gitでマージ済みの(リモート|ローカル)ブランチを全て削除.md

    gitでマージ済みの(リモート|ローカル)ブランチを全て削除.md マージ済みのリモートブランチを全て削除 git branch -r --merged master | grep -v -e master -e develop | sed -e 's% *origin/%%' | xargs -I% git push --delete origin % remote の master に merge済み の branch をすべて表示して master と develop は消えてほしくないので除外して origin/ を削除して xargs (-I% % で ブランチ名を渡しつつ、全て削除する) マージ済みのローカルブランチを全て削除 $ git branch --merged master | grep -vE '^\*|master$|develop$' | xargs -I %

    gitでマージ済みの(リモート|ローカル)ブランチを全て削除.md
    AmaiSaeta
    AmaiSaeta 2019/03/04
    あとでaliasにする
  • Gitブランチをきれいにするワンライナー - テクめも

    今すぐalias登録すべきワンライナー by ゆめみ① Advent Calendar 2018 10日目の記事です。 開発していると、マージされたfeature/xxxとか不要なブランチが結構でてくるので、一括で削除するコマンドをalias登録しておくと良いです。 git checkout develop && git branch --merged | grep -v '*' | xargs -I{} git branch -d {} && git fetch --prune はじめのdevelopのところはデフォルトブランチです。必要に応じて修正ください。 簡単な解説 developブランチにcheckout $ git checkout develop 現在のブランチを除くマージされたブランチを表示 $ git branch --merged | grep -v '*' 表示された

    Gitブランチをきれいにするワンライナー - テクめも
  • 今すぐaliasを登録しておくべきGitワンライナー - Qiita

    はじめに 今すぐalias登録すべきワンライナー by ゆめみ① Advent Calendar 2018 の2日目です。 私はプロジェクト依存のものはなるべくMakefileから利用するようにしているので,.zshrc は Git 関連程度で薄く保たれています。 皆さんの素敵なワンライナーが見られるよう,貢献させていただきます。 大いに盛り上がって欲しいと思います。 題 業務で叩くものの中で1番多いであろうGitコマンド。 もう checkout のタイポで移動できない,なんて無くしましょう。gc で十分です。 また,GitHub では issue 駆動の開発をしていますが,issues/ は 7 文字です。i で十分です。 以下をコピペし,些細な工夫でモチベーションが下がるのを防ぎましょう。 # g: git alias g='git' # gc: checkout alias gc

    今すぐaliasを登録しておくべきGitワンライナー - Qiita
  • Gitでファイルの特定行の変更履歴を追う - Qiita

    > git log -L 1,10:Gemfile commit d9acf7548943f4c60be50ee43b54ce638d4d0d3a Author: kmagai Date: Sun Apr 24 18:01:22 2016 +0900 hoge -- a/Gemfile ++ b/Gemfile ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── @@ -1,6 +1,5 @@ source 'https://rubyge

    Gitでファイルの特定行の変更履歴を追う - Qiita
    AmaiSaeta
    AmaiSaeta 2018/07/03
    `git log -L (開始行数),(終了行数):(ファイルパス)`
  • Gitで日本語長文のdiffをとる方法 - Qiita

    (この記事はここからの転載です) 課題 日語の長文をgitで管理していると、ほんのちょっとの変更でもdiffでは行丸ごと変更されたことになり、変更点がよくわからないことがある。 二泊三日で小説を書く過激なイベントNovelJam 2018参加作品である高橋文樹氏の「オートマティック クリミナル」は、GitHubを使って執筆されている。小説では、git diffの欠点がはっきりでる。高橋氏は参加レポートで、こう書いている。 あと、今回得た重要な知見なのですが、Githubではある程度以上テキストが長くなってくると、数文字の調整で全部差分として判定されたりするので、小説には向いてないかなーと思いました。小説は行の移動とかがよく発生するので、GithubじゃなくてGitとの相性かもしれません。 普通にdiffを取る 確かに、普通にdiffをとるとその通り。コマンドラインで「オートマティック ク

    Gitで日本語長文のdiffをとる方法 - Qiita
  • git で日付を指定して log や diff を見る - Qiita

    Help us understand the problem. What is going on with this article?

    git で日付を指定して log や diff を見る - Qiita
    AmaiSaeta
    AmaiSaeta 2018/02/09
    `--since` と `--until`
  • Commit Hash から、該当 Pull Request を見つける方法 - Qiita

    git blameなどを使用して、変更を加えたcommit sha hashだけわかった時、git show daced1d3のようにすれば、そのコミットの変更内容を見れます。ですが、当は内容よりその変更を加えたPull Requestを知りたいことありますよね? そんなコミットからプルリクエストを探したい時に使えるgit aliasコマンドを紹介します。 git showpr Pull Requestをマージしているコミットログを見つけます。 show pull request => showpr としてますが、名前は好きにつけてください。 .gitconfigのalias設定 [alias] showpr = !"f() { git log --merges --oneline --reverse --ancestry-path $1...master | grep 'Merge p

    Commit Hash から、該当 Pull Request を見つける方法 - Qiita
    AmaiSaeta
    AmaiSaeta 2017/10/19
    こういうの欲しかった。 Git Flow 等を考えると、 `$1...master` の `master` は無い方が良いのでは。
  • よりよいGitの設定 | Yakst

    .gitconfigファイルに記入するオプションをカスタマイズすれば、Gitをより上手に、便利に使うことができる。著者のGit設定の紹介と、便利な設定の解説。 私はGitが大好きで、いつでもGitを使っています。私は時々、何かについて深く調べてみたり、ドキュメントを一通り読んでみたり、設定を見直してみたりするのですが、今回はGitについてそれをやってみました。私の書いた4番目の技術スタックの改善に関する記事にようこそ! Gitのすべて 私がコーディングを始めたのは、ただのファイルシステム上でコピーしていたあの辛い日々、そしてチェックアウトに排他的ロックが必要だったVisual SourceSafeを使っていた時でした。それでもその時、ソース管理のコンセプトは私にとって素晴らしいものに思えましたし、家でコーディングする時にはそういったものにアクセスできたらな、と思っていました。 その後カリフ

    よりよいGitの設定 | Yakst
    AmaiSaeta
    AmaiSaeta 2017/06/03
    後で幾つか設定を参考にする。