タグ

Gitに関するryochackのブックマーク (81)

  • なぜ git rebase をやめるべきか - Frasco

    Git での開発を数年間経験した後、徐々に日々の仕事の一部として、より高度な Git コマンドを使うようになりました。私は Git rebase を見つけてすぐにそれを毎日の仕事に使いました。リベースに精通している人は、どれだけ強力で魅力的なツールであるのか知っているでしょう。しかし、リベースには、初めてリベースを触ったときにはわからなかったのですが、いくつかの課題があることに気が付きました。これを説明する前に、マージとリベースの違いをおさらいしておきましょう。 最初に、feature ブランチを master にマージする例を考えてみましょう。マージすることにより、新しいマージコミット g を作成します。下のコミットグラフではマージした際に何が起こるのかを説明しています。また、開発が盛んなリポジトリでよく見かける「線路」のようなグラフになっているのが見て取れるでしょう。 マージの例 ある

    なぜ git rebase をやめるべきか - Frasco
    ryochack
    ryochack 2017/11/25
    “開発者たちがブランチをリベースさせる動機は何ですか?私はそれが虚栄心であるという結論に至りました。”
  • git configをプロジェクトによって使い分ける - Qiita

    Git v2.13.0(2017/05/10リリース)でgit configにConditional includes(条件付きインクルード)という機能が実装され、特定のリポジトリに対して一括でgit configを適用できるようになりました。 会社用と個人用でプロファイルを使い分けたり、たまに使う設定をまとめて適用する場合などに役立ちそうです。 設定方法 includeIfセクションを使います。git configコマンドか、~/.gitconfigを直接編集して追記します。

    git configをプロジェクトによって使い分ける - Qiita
    ryochack
    ryochack 2017/06/15
  • .gitignoreの範囲の指定方法 - nametake-blog

    過去に書いた記事をそのまま移行します。 前提 $HOMEディレクトリ上でドットファイルをgitを管理している。 .gitignoreはホワイトリスト方式で記述している。 やりたかったこと $HOME └── .vim ├── bundle ├── snippet ├── syntax ├── template └── userautoload 上記の構造になっているvimの設定ファイルのbundleディレクトリ以外をgitの管理下に置きたい。 (bundleディレクトリだけはgitで管理したくない) やったこと ホワイトリスト方式で.gitignoreを設定したが、階層構造をとっている時の設定でつまずいた。 ダメだったパターン 以下のように記述したら$HOME/.vim/以下のディレクトリ内部のファイルが読み込まれなかった。 # all file ignore /* /.* # targe

    .gitignoreの範囲の指定方法 - nametake-blog
    ryochack
    ryochack 2017/04/19
    gitignoreのホワイトリストでの記述について
  • github/gitignore at master - GitHub

    A collection of .gitignore templates This is GitHub’s collection of .gitignore file templates. We use this list to populate the .gitignore template choosers available in the GitHub.com interface when creating new repositories and files. For more information about how .gitignore files work, and how to use them, the following resources are a great place to start: The Ignoring Files chapter of the Pr

    github/gitignore at master - GitHub
    ryochack
    ryochack 2017/04/19
    .gitignoreコレクション。便利そう
  • gitの良さがいまだに分からない - 負け犬プログラマーの歩み

    ここ2年ぐらいで俺が働いた現場はみんなgitを採用している。就職エージェントと面談するときもgit経験の有無をよく訊かれるし、今ではVSSやCVSどころか、SVNですら時代遅れになってきて、SVNを使っている現場は「レベルが低い」「保守的・旧態依然」という雰囲気すら感じる。 俺としては4-5年前からgit(GitHub)を使っているし、gitを使うこと自体に抵抗はない。一通りの基操作はできるし、人並みにはできると言っても差し支えはない。 …が、正直gitの良さがあまり見えてこない。 もし俺が中規模以上のプロジェクトのリリースを格的に管理する側であれば全然違った感想を持ったかもしれない。でも一人の開発者として、せいぜい10人程度のプロジェクトで利用する限り、「gitで良かった」という状況があまり思い当たらない。 ではgitの何が気にわないのか書いていきたい。 ①gitは馬鹿には難しい

    ryochack
    ryochack 2016/10/02
    Gitは難しいので職場によってはシンプルなSVN使った方が幸せになれると思ってる(Gitが使えない職場で働きたいかはさておき)
  • git commit --fixup とは何か - 詩と創作・思索のひろば

    git commit --fixup というオプションの存在を最近知って調べた。 ヘルプとリリースノートより "git commit" learned the --fixup and --squash options to help later invocation of interactive rebase. Git v1.7.4 Release Notes --fixup=<commit> Construct a commit message for use with rebase --autosquash. The commit message will be the subject line from the specified commit with a prefix of "fixup! ". See git-rebase(1) for details. 1.7.4 から入って

    git commit --fixup とは何か - 詩と創作・思索のひろば
    ryochack
    ryochack 2016/09/28
    fixupされたコミットをrebase時にまとめてくれる
  • Git 2.7 の優れた新機能 | Atlassian Japan 公式ブログ | アトラシアン株式会社

    Git 2.6 からわずか 2 カ月後、膨大な機能と修正、そして性能の向上を果たした Git 2.7 がリリースされました。ここでは Bitbucket チームが興味を持った新しい機能を紹介します。 git worktree の完成 Git 2.5 で導入された素晴らしい git worktree コマンドを使うと、複数のリポジトリブランチからのチェックアウトやブランチ上での作業を、異なるディレクトリで同時に行うことができます。たとえば、簡単な修正をする必要があるけどワーキングコピーを汚したくない場合、次のように新しいブランチを新しいディレクトリにチェックアウトすることができます。 Git 2.7 には、リポジトリのワークツリー (および関連するブランチ) を表示する git worktree list サブコマンドが追加されています。 ワークツリーをサポートする git bisect コ

    Git 2.7 の優れた新機能 | Atlassian Japan 公式ブログ | アトラシアン株式会社
    ryochack
    ryochack 2016/07/28
    そもそもgit worktree知らなかった。これめっちゃ便利じゃないか
  • gitのコミットの歴史を改変する(git rebase) 1 / 2 · けんごのお屋敷

    git には rebase というとても便利なコマンドがあります。その中でも特に便利なのが -i または --interactive オプションです。便利なのですがよく忘れるのでまとめもかねてこの記事で詳しく紹介します。 前提 この記事では説明のために以下のようなコミット状態である前提で話を始めます。よくあるコミットの流れです。 git rebase -i -i は --interactive とあるように、対話的に rebase が実行できるコマンドです。これでなにが出来るかというと コミットメッセージを編集する コミットをまとめる コミットを分割する コミットの順番を移動させる コミットを削除する など、いろんなことが出来ます。基的な構文は [kengo@tkengo-mac] $ git rebase -i <commit> これだけ。 <commit> には特定のコミットを指定し

    ryochack
    ryochack 2016/07/04
  • [Git]過去のリビジョンに戻る場合でのgit checkoutとgit reset --hardの違い

    仕事で過去のリビジョンに戻る方法はどうすれば良いのか?という質問があったのだが、git checkoutとgit reset –hardを使う場合の違いについてよく分かってなかったので調べてみた。 指定リビジョンに戻す 既に記載の通り、2つやり方がある。 $git checkout <commit> もしくは $git reset --hard <commit> である。 ただし、二つは大きな違いがある。 git checkout <commit> 指定されたコミットIDのリビジョンに作業ディレクトリ内のファイルが変更される。ブランチは detached HEAD状態となり、この状態ではコミットなどを行ってもリポジトリに保存されない。(厳密には少し違うが) つまり、read only状態で指定リビジョンの状態確認が出来る。 元のブランチに戻る場合、以下のように元々のブランチ名を指定すれば良

    ryochack
    ryochack 2016/03/28
    checkoutとreset --hardの違い
  • Gitの忘れがちだけど絶対に使うであろうコマンド達 | Basicinc Enjoy Hacking!

    ベーシックでは、Gitを使ったバージョン管理システムを導入しています。一部のプロジェクトでは先行して導入していたものの、全社的にはまだまだ…といったわけで、よくGitコマンドについて質問されるので、ここで軽くまとめておきたいと思います。 普段は git add / commit / push / pull しかしてない…っていう人向けです。 addしたファイルを取り消す $git reset HEAD ファイル名 更新内容自体は取り消さず、addしてインデックスに登録するのを取り消します。 更新したファイルの更新内容を取り消す $git checkout ファイル名 commitする前限定です。 他ブランチの特定のコミットだけマージしたい $git cherry-pick コミットID とても便利なコマンドですが、cherry-pickを多用するような運用スタイルになっていたら問題なので、

    Gitの忘れがちだけど絶対に使うであろうコマンド達 | Basicinc Enjoy Hacking!
    ryochack
    ryochack 2016/02/23
  • 削除されたremoteブランチがローカルのRepoに残っていて、それを削除する方法 - Qiita

    複数人で作業しているとき、自分以外の誰かがremoteブランチを削除したのが自分のローカル環境に反映されないことがあると思うんですが、下のコマンドを実行してやればキレイにできます。 # remoteブランチを単純参照 git remote show origin # remoteブランチでは削除されているが、ローカルに参照が残っているブランチを表示 git remote prune --dry-run origin # すでに削除されているremoteブランチのローカル参照を削除してきれいにする git remote prune origin Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back us

    削除されたremoteブランチがローカルのRepoに残っていて、それを削除する方法 - Qiita
    ryochack
    ryochack 2016/02/07
  • 初心者でもわかる!リベースの使い方を解説します | 株式会社LIG(リグ)|DX支援・システム開発・Web制作

    こんにちは、エンジニアの王です。今回は、Git初心者を悩ませるリベースについて解説してみたいと思います。 リベースが初耳 リベースを聞いたことはあるけど、使っていない 不安を抱えながらも、リベースをなんとなく使っている 上記に当てはまる方は、ぜひ読んでくださいね。 リベースで何ができる? コミットが綺麗になる! 以上です! この一言に尽きる! 具体的にどのように綺麗になるかというと…… コミット履歴がわかりやすくなる コミットメッセージを後から変える コミットの順序を後から変える 2つ以上のコミットを1個に統合する 一度コミットした内容を編集する といった具合でしょうか? 整理整頓が好きな方は、ぜひリベースを使いこなしていただきたいと思います! マージとリベース 2つのブランチの変更点を統合するとき、Gitの最も一般的なやり方は、マージとリベースを使うことです。マージは初回で説明したので、

    初心者でもわかる!リベースの使い方を解説します | 株式会社LIG(リグ)|DX支援・システム開発・Web制作
    ryochack
    ryochack 2016/02/07
    cherry-pickについての説明も
  • 作業中のファイルをgit stashして、一部のファイルだけ戻す - kentana20 技忘録

    小ネタ。 gitでバージョン管理しているプロジェクトで、git stashを使って一部のファイルだけをcommitする方法を忘れないためにメモっときます。ユースケースとしては 新規開発案件とかでfeature branch作って作業中 作業途中に案件を2つに分割することになった 作業途中のファイル(まだindexにのせてない)の中で、一部だけcommit/pushしたい という感じでしょうか。以下の手順で実施します。 git stashを使って作業途中のファイルを退避 $ git stash save # saveは省略可能 stashされた状態を確認 $ git stash list # stashされている状態を確認(stash@{0}とかで見えるはず) stashされた内容を確認 $ git stash show <stash名> # stashされている状態を確認(stash@{0

    作業中のファイルをgit stashして、一部のファイルだけ戻す - kentana20 技忘録
    ryochack
    ryochack 2016/01/27
  • ギットクエスト

  • 依存リポジトリ管理でのsubmodule/subtree/subrepoの使い分け - Qiita

    依存ライブラリを利用する場合RubyGemsやらCocoaPodsといったツールで万事解決するケースがほとんどだと思いますが、たまーにGitに上がっているライブラリを直接自分のリポジトリに追加しないといけない場合もあったりします。 こういった時に使うGitのサブコマンドそれぞれの特徴と使いどころをまとめてみました。 一番スタンダードな外部リポジトリ追加方法です。たぶん大抵の依存管理ではこれを使えば十分でしょう。git-submoduleを利用すると、外部リポジトリのコード自体は自プロジェクトの管理下に取り込まれず、リポジトリの特定コミットへの参照情報のみが登録されます。外部リポジトリのcommit hashへのポインタが追加されるようなイメージです。 $ git submodule add git@github.com:Alamofire/Alamofire.git $ git diff

    依存リポジトリ管理でのsubmodule/subtree/subrepoの使い分け - Qiita
    ryochack
    ryochack 2015/11/21
    へー、git subtree/subrepo 便利そうだな
  • 「commit-m: GitHubコミットメッセージの文例が検索できるサービス」がとても便利だったのでcliから使えるコマンド書いた - ( ꒪⌓꒪) ゆるよろ日記

    http://commit-m.minamijoyo.com/:titele という有名OSSのコミットメッセージを検索できるサービスがあって、英語のコミットメッセージを書くときに「あれ? これどういう風に書けばいいんダー」ってときに例文を検索できて捗る。 commit-m.minamijoyo.com が、自分の場合はコミットメッセージ書くときはvim とか git commit -m とかからなのでCLIで検索できたらより捗るかと思ってGolangで書いた。 APIとかは無いようなのでクロールしてる。 GoQuery 使えばこの手のクローラーが一瞬でかけるのでよさがある。 github.com go get github.com/yuroyoro/gommit-m で入れた後に gommit-m keyword [page] で検索できる。

    「commit-m: GitHubコミットメッセージの文例が検索できるサービス」がとても便利だったのでcliから使えるコマンド書いた - ( ꒪⌓꒪) ゆるよろ日記
  • Git submodule の基礎 - Qiita

    この記事は Git Advent Calendar 6日目の記事です! Git submodule って最初わかりにくいと思うので、基的な説明をしようと思います。 git submodule とは git submodule は、外部の git リポジトリを、自分の git リポジトリのサブディレクトリとして登録し、特定の commit を参照する仕組みです。 Subversion でいうところの、external と似ています。 さて、解説のため、手元に、リポジトリA (/path/to/a) とAの submodule として、よく使う例として Bootstrap (元Twitter Bootstrap) を登録してみます。 git submodule を理解するうえで重要なのは、 リポジトリAが指し示すsubmoduleとしてのBootstrapのcommit 現在のBootstr

    Git submodule の基礎 - Qiita
    ryochack
    ryochack 2015/11/08
    git submodule
  • Git リポジトリの中で別のリポジトリを管理する submodule - 30歳からのプログラミング。

    Git を使っていると、自分で作ったリポジトリの中で、別のリポジトリを入れたい時があるかと思います。 僕の場合は、Vim の設定ファイルやプラグイン管理用にディレクトリを作って、 GitHub で管理しようと思った時に、プラグインに関しては、外部のリポジトリと同期させる必要がありました。 が、例えば、hogeっていうリポジトリがあるとして、その中で、fugaっていうリポジトリを外部から$ git cloneしてきた場合hogeを$git pushしても、fugaの中身はpushされません。 困ったなーって思ってたら見つけたのが submodule という機能! 具体的には、リポジトリ内の外部リポジトリを取り込みたいディレクトリで、 $ git submodule add [外部リポジトリ] [ローカルで格納したいディレクトリ] すれば、サブモジュールが作成できます。 ポイントとしては、サブ

    Git リポジトリの中で別のリポジトリを管理する submodule - 30歳からのプログラミング。
    ryochack
    ryochack 2015/11/07
    git submodule
  • Gitのコミットメッセージの書き方 | POSTD

    (訳注:2015/10/31、いただいた翻訳フィードバックを元に記事を修正いたしました。) (訳注:2015/11/1、いただいた翻訳フィードバックを元に記事を再修正いたしました。) 訳: プロジェクトが長引くほど、私のGitのコミットメッセージは情報が薄くなっていく。 イントロダクション | 7つのルール | ヒント イントロダクション:なぜ良いコミットメッセージを書くことが重要か Gitのリボジトリのログをランダムに閲覧すると、ひどいコミットメッセージを目にすることがあります。例として、私が昔書いたSpringにコミットした これらのgem を見てみましょう。 $ git log --oneline -5 --author cbeams --before "Fri Mar 26 2009" e5f4b49 Re-adding ConfigurationPostProcessorTest

    Gitのコミットメッセージの書き方 | POSTD
    ryochack
    ryochack 2015/10/23
  • Gitでやらかした時に使える19個の奥義 - Qiita

    タイトルは大目に見てください><。 内容は危険な操作を伴うのでくれぐれも自己責任でお願いします。 間違いもあったら指摘ください。 ローカル編 自分のローカル環境だけで閉じていて、他の人への影響がない場合に有効です。 リモートにプッシュしちゃってる時は、他人への影響が発生するので危険です。 やらかし1:コミットメッセージに禁止ワード入ってて人生やめたい時 コミットメッセージを修正するのは簡単です。 ファイルの追加なんかもできちゃいます

    Gitでやらかした時に使える19個の奥義 - Qiita