日々精進

新しく学んだことを書き留めていきます

git

gitで間違ったBranchにPushすることを防ぐ

git

push.defaultをsimpleにするとローカルとリモートのbranch名が一致する場合のみPushするようになるので事故が減って良い。 以下のコマンドで設定できる。 git config --global push.default simple 参考: git の push.default 設定を理解する - Qiita

Gitで削除したStashを復活させる方法

git

基本的に下記記事の通りやればOKだが、「git show --summary 候補のsha1」を実行して復活させたいコミットのSha1を探すのが大変なので簡単にできるワンライナーを書いた。 git stash save で一時退避した変更を、誤って git stash clear で消してしまったと…

gitにaddされていないファイルを削除する

git

以下を実行すると削除できる。いままでSourceTreeとかで一括選択して削除してた。。 git clean -fまだまだ知らない機能がいっぱいあるなぁ。 参考:How do I remove local (untracked) files from my current Git branch? - Stack Overflow

gitのコミットメッセージからチケット番号を抽出するシェルスクリプト

git

リリース前に、前回リリース時点以降に取り込まれたチケットの一覧を確認したいという場合に使う。 以下のスクリプトを実行するとGitのコミットメッセージから[PJNAME-XXX]という文字列を取り出せる。ただし、一つのコミットに複数入っている場合は先頭の一…

gitでブランチを作成すると「fatal: Failed to lock ref for update: Not a directory」エラー

git

原因は以下。 ・slash区切りでブランチ名をつけた場合、gitはその構造通りにディレクトリ・ファイルを作ろうとする たとえば、hotfix/111/bug1だと.git/refs/heads/hotfix/111/bug1というパスにファイルを作ろうとする ・slashで区切った単位で前方一致する…

proxy内の環境とproxy外の環境で.gitconfigを共有する

git

proxy設定を環境毎に切り替えたいという場合はinclude機能を使えばよさそう。 proxy設定を.gitconfig.localのような別ファイルに定義しておき、それをincludeすればOK。 参考:dotfilsをGitHub管理したいけど.gitconfigには社内proxy情報が…ってときは - Qii…

すべてのリモートリポジトリのbranchをcheckoutし、pullする

git

Pull Requestをレビューする時に、リモートリポジトリからレビュー対象のブランチを探してチェックアウトして、すでにチェックアウトしてたらpullして・・・という一連の作業を効率化したいと思い、ローカルのすべてのbranchの状態をリモートと一致させるfun…

.zshrcに定義するfunctionなどではgit branchでなく、git for-each-refを使う

git

git for-each-refはbranchの一覧を表示するが、git branchより細かく表示する情報を加工したりできるので aliasやfunctionでbranchを選択するところではこっちを使った方がよさそう。 例えば、pecoでbranchを選択するglobal aliasは以下のように定義するとコ…

Git でマージ済みのブランチを一括削除するコマンド

git

コレ便利だなあ。使わせて貰います。 git branch --merged | grep -v '*' | xargs -I % git branch -d %参考:Git でマージ済みのブランチを一括削除する - Qiita

git svn実行時に「Author: ***** not defined in users.txt file」エラー

git

users.txtに定義しているはずのユーザがnot definedと言われる・・・なぜ?と思っていたら、users.txtのフォーマットが間違っていた。 既に退職した人のユーザだったので、メールアドレスを書いていなかったんだけど、メールアドレスは必ず書かないといけな…

git svnを実行すると「Can't locate SVN/Core.pm in @INC」エラー

git

Mavericksではgit svnが依存しているPerlモジュールへのパスが通っていないことが原因。下記を実行すると直る。 sudo ln -s /Applications/Xcode.app/Contents/Developer/Library/Perl/5.16/darwin-thread-multi-2level/SVN /System/Library/Perl/Extras/5.1…

gitで空ディレクトリをコミットする方法

git

gitは空ディレクトリをコミット出来ないので、空の.gitkeepファイルを作ってコミットする。 以下を実行すると空ディレクトリに.gitkeepを作れる。 find . -type d -empty -not -path './.git*' -exec touch {}\/.gitkeep \;参考:git/空のディレクトリが消え…

rebaseしようとしたら「There is no tracking information for the current branch.」エラー

git

rebaseしようとしたら以下のエラーメッセージが出た。 There is no tracking information for the current branch. Please specify which branch you want to rebase against. See git-rebase(1) for details git rebase <branch> If you wish to set tracking infor</branch>…

他のメンバーが削除したリモートブランチを一括削除する方法

要はgit fetch --pruneをSourceTreeからやる方法。 ・SourceTreeのリポジトリウィンドウ>ツールバー>フェッチ をクリックする ・「リモートで削除された追跡ブランチは取り除く」をチェックしてOKをクリックする サイドバーのリモートのところに表示されて…

masterブランチの名前をproductionにする方法

git

最近本番、テスト、開発の各環境用にブランチを切る運用がはやってるけど、本番環境用ブランチの名前がmasterとなるのは違和感があるので名前をproductionにしたい・・・という場合は以下で名前を変えられる。 git checkout -b production master # create a…

sourceTreeでstashする

git

ツールバーの一時退避がstashのことらしい。 言われてみれば確かにそうなんだけど、全然気付かなかった。。なんでだろ。 Stashはコード書いてる途中でブランチを切り替えたりPullしたりするとき便利ですよね。 参考:【Git/SourceTree】作業中にブランチを切…

proxyの設定

git

gitのプロキシ設定は以下でできる。環境変数のhttp_proxyとかは見てくれないんだね。 git config --global http.proxy http://proxy:port git config --global https.proxy https://proxy:port

Gitの運用方法についての記事

git

この記事のGitリポジトリの運用方法は非常に参考になる。 git による分散作業パターン | GREE Engineers' Blog 早速うちのプロジェクトでもやってみよう。 記事の中で引用されてたPro Gitという本に興味がわいたので 検索してみると、なんと日本語版の電子書…

githubでtagを追加する

下記サイトの通り。もっとgitの勉強しないとな。。 GitHub でタグを打って tgz/zip アーカイブ をダウンロードできるようにする - Goodpic