新しい作業環境で開発リポジトリのmasterリポジトリをcloneしたあとにその他のブランチもcheckout/pullしたいことがある。というか、しないと作業にならない。 よく忘れるのでメモ。
![gitでリモートブランチをローカルにcheckoutする - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/43475bd1a2b0292f360a1edd755985472231b7c2/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9Z2l0JUUzJTgxJUE3JUUzJTgzJUFBJUUzJTgzJUEyJUUzJTgzJUJDJUUzJTgzJTg4JUUzJTgzJTk2JUUzJTgzJUE5JUUzJTgzJUIzJUUzJTgzJTgxJUUzJTgyJTkyJUUzJTgzJUFEJUUzJTgzJUJDJUUzJTgyJUFCJUUzJTgzJUFCJUUzJTgxJUFCY2hlY2tvdXQlRTMlODElOTklRTMlODIlOEImdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPTAxMGRlODlhNzg1MzdmYzdjYTIzOTM2ODNkY2FhMWFi%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBZdXN1a2VTdXp1a2klNDBnaXRodWImdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWMyYjZjY2UxMzVlYzEwZWY3NzNkYTZiMjg3ZWE4ZGEw%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3Dfab0243d6178c2a01c349fde9d0b8f4c)
新しい作業環境で開発リポジトリのmasterリポジトリをcloneしたあとにその他のブランチもcheckout/pullしたいことがある。というか、しないと作業にならない。 よく忘れるのでメモ。
SourceTreeから乗り換えて、生のGitを使っている中でHunkの取り扱いがわからなかったのでメモ。 Hunkのステージ(部分コミット)は git add -p 基本は「-p」オプションを付ければうまくいく。 ステージングの場合においては、 $ git add -p [file] とすることで、以下のようにHunkごとに取り込むか否かを聞いてくる。 $ git add -p dein_lazy.toml diff --git a/nvim/dein_lazy.toml b/nvim/dein_lazy.toml index 848ac2a..56daa89 100644 --- a/nvim/dein_lazy.toml +++ b/nvim/dein_lazy.toml @@ -57,4 +57,7 @@ on_i = 1 [[plugins]] #neomake repo = '
git add する時に「-p」をつけると、この部分は add するけどこの部分は add しないといった細かい指定ができて便利なのですが、同じことが reset とか checkout でもできるというのを最近知りました。 作業をしている途中で、変更した箇所を元に戻したい時はよくあります。もしまだ add していなければ、 % git checkout ファイル名 で変更内容をなかったことにして、最新のコミットの状態に戻すことができます。 ただ作業内容によっては、変更した箇所の一部だけ残して元に戻したいということもよくあって、その時にも同様に -p オプションが使えるわけです。 % git checkout -p diff --git a/chef-repo/nodes/192.168.33.50.json b/chef-repo/nodes/192.168.33.50.json ind
特にプロトタイプ的なコードを書いている時、将来的にはオプションなどで変更できるようにする予定のモノをコードに直書きで埋め込んだりするよね。簡単なものでは1行だったり、複雑なものだったらモックのクラスだったり。 今回のユースケースは「もうこのモックは必要ないな」と思って削除して、しばらくしてからまだ消しちゃダメだったと気づいたケース。 下記のコードのCODEってところを削除する。 sIDENTIFIER = "[^-+#: ]+" IDENTIFIER = re.compile(sIDENTIFIER) ENHANCER = re.compile("\+\s*(%s)" % sIDENTIFIER) SUPPRESSOR = re.compile("-\s*(%s)" % sIDENTIFIER) BODY = re.compile(":\s*(%s)" % sIDENTIFIER) COD
ワークツリーに加えた変更のうち一部分だけをaddしたいときには git add -p すると,変更部分ごとにaddするかどうかを選択できる. 逆にgit checkout -pで,一部の変更を消す(正確にはaddされていない=unstagedな変更から消す)ことができる. デバッグプリントのコードを消したいときなどに便利. どちらもyやnなどで選択した後に毎回enterを押す必要があり面倒だが git config --global interactive.singlekey true を実行しておくと,yやnなどを押した時点で決定できる. # 選択してgit addするかどうか決める git add -p [file_or_dir] # addされてない変更それぞれに対してgit checkout git checkout -p [file_or_dir] # git add/check
平素よりQA@ITをご利用いただき、誠にありがとうございます。 QA@ITは「質問や回答を『共有』し『編集』していくことでベストなQAを蓄積できる、ITエンジニアのための問題解決コミュニティー」として約7年間運営をしてきました。これまでサービスを続けることができたのは、QA@ITのコンセプトに共感をいただき、適切な質問や回答をお寄せいただいた皆さまのご支援があったからこそと考えております。重ねて御礼申し上げます。 しかしながら、エンジニアの情報入手方法の多様化やQAサービス市場の状況、@ITの今後のメディア運営方針などを検討した結果、2020年2月28日(金)15:00をもちましてQA@ITのサービスを終了することにしました。 これまでご利用をいただきました皆さまには残念なお知らせとなり、誠に心苦しく思っております。何とぞ、ご理解をいただけますと幸いです。 QA@ITの7年間で皆さまの知識
mercurialからの類推で git を使おうとしたが挫折。 gitの説明書を読んで基本的な概念と操作をまとめてみる。 参照した説明書は次の2つ。 Git - Book Git ユーザマニュアル (バージョン 1.5.3 以降用) 動作は git version 1.7.10.4 で確認した。 基礎概念 コミット ファイルツリーのある時点でのスナップショット。mercurialでのchangeset。コミットは、61c4efc3〜 のような16進数の番号が付けられている。gitコマンドの引数でコミットを指定するときはこの番号を使う。 ブランチ 開発ライン。コミットの連なり。動作上は、コミットを指すポインタと考えてよい。その意味では、ブランチは、一連のコミットの最新を指していると考えることができる。コミットの連なりは途中から分岐できるため、複数のブランチを持つことができる。gitコマンドで
皆さん、tigコマンドを活用していますか? tigは、コンソール上で使えるgitブラウザです。実はずっと、ただのきれいなgit logだと思っていたのですが、本当はそんなことはありません。かなり使えるやつなのです。 インストール ソースコード: https://github.com/jonas/tig インストール方法: https://github.com/jonas/tig/blob/master/INSTALL.adoc この辺りを参考にしてみてください。詳細は割愛します。 基本の使い方 この状態の差分を扱っていきます。いつものこれだとこんな感じ。 git logが素敵にビジュアライズされてます。この画面をmain viewといいます。 ここでエンターを押すと、下半分に差分の詳細(diff view)が表示されます。 下矢印で、Unstaged changesの差分を見てみるとこんな
jonas/tig は現在も活発に開発が継続しており、次のバージョンアップが待たれます。 2013年8月にリリースされたtig 1.2.1から現在までのmasterの差分における、 筆者が気になる新機能・修正点を紹介してみます。 ※ masterブランチの差分を追っているのみのため tig 1.3 に確実に入る保証はありません。 外部コマンドをバインドする時の接頭辞 ! がオプション扱いに User-defined commands no longer need to be prefixed with '!' キーバインドで外部コマンドを設定する時は接頭辞に ! (フォアグラウンドで実行)もしくは @ (バックグランドで実行)が必須でした。次のような形です。やけに丁寧なtigの設定ガイド(キーバインド概論編) でもこの形で紹介しています。
「upstreamのmasterブランチをマージしようとしたら大量のコンフリクトが発生した」こと、ありませんか? 私はよくあります 「せっせっとコンフリクトを解消してるけど、そろそろ時間切れ。このブランチ、いったんプッシュしたいなぁ」ということ、ありませんか? 私はよくあります ですが、未処理のコンフリクトを残したままコミットしようとしても、 $ git commit error: 'commit' is not possible because you have unmerged files. hint: Fix them up in the work tree, hint: and then use 'git add/rm <file>' as hint: appropriate to mark resolution and make a commit, hint: or use 'g
I've always thought of git reset and git checkout as the same, in the sense that both bring the project back to a specific commit. However, I feel they can't be exactly the same, as that would be redundant. What is the actual difference between the two? I'm a bit confused, as the svn only has svn co to revert the commit. ADDED VonC and Charles explained the differences between git reset and git ch
よく使う Git コマンド自分用メモです。 これらのコマンドの組み合わせでなんとか開発はできています。新しいコマンドを覚えたら随時追記。 目次 基本操作 ブランチ操作 tag 操作 stash 操作 変更をやり直す rebase -i diff log リモートブランチを全削除するワンライナー リモートブランチを全部チェックアウトするワンライナー 基本操作 git init Git 管理を開始する。カレントディレクトリに .git が作成される。 git add hoge.txt 対象をステージングエリアに追加。 git status ワークツリーとステージングエリアの状況を表示 git commit -m 'commit message' ステージングエリアの情報をリポジトリに反映。 git rm hoge.txt 対象をワークツリーとステージングエリアから削除。 git mv hoge
この記事では、detached HEAD がどういう状態なのかを git の内部構造から読み解きます。 あなたは、この2つのコマンドがどう違うか答えられるでしょうか? 問い: 下の 2 つのコマンドは同じでしょうか?違うでしょうか? A: git checkout <ブランチ名> B: git checkout <ブランチの指すSHA1> 正解は、違う です。 もし、答えに詰まってしまった場合は、ぜひこの記事を読んでみてください。 この解説の中で、下の2つのコマンドがどう違うのかが見えてきます。 (ちょっとだけ宣伝: 学生向けに git challenge というイベントを開いています。いくつか git にまつわる問題を公開しているので、興味がある方はチャレンジしてみてください!: http://alpha.mixi.co.jp/entry/2015/11/24/083300 ) deta
gitで何かを戻したい時、いつもどのコマンド叩くか忘れるのでメモ ワーキングツリーを元に戻す ファイル編集したけどまだaddしてない時 $ git checkout . $ git checkout -- . $ git checkout HEAD -- .どれもHEADの状態にワーキングツリーを戻してくれる。(結果が同じなだけで挙動は違うんだろうけど・・・) "--"が謎なんだけど、helpを見みるとこんな例があった。 If you have an unfortunate branch that is named hello.c, this step would be confused as an instruction to switch to that branch. You should instead write: $ git checkout -- hello.c なるほど、フ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く