20210411のGitに関する記事は4件です。

git cherry-pickで特定コミットを反映しよう

初心者でも理解できるgithub講座 cherry-pick編 git cheery-pickとは? 特定のコミットだけを取り出してきたいときに使えるコマンドです。 使用例 git branch構造 main ├── aaa ブランチ ├── bbb ブランチ 例えば、上記のように、mainブランチを親としてそれぞれaaaとbbbブランチを切ります。 そして、aaaでファイルを変更し、追加・コミットします。 このaaaでコミットされたものをbbbブランチにも反映する時などに、cheery-picを用います。 git cherry-pick コマンドで特定コミットを反映 まずは、aaaブランチでファイルを作成し、追加(git add)とコミットを行います。 git logコマンドでコミットを確認しましょう。 git log commit 0497a98eed98112e8af84f9c6d816c96ab24734c (HEAD -> aaa) Author: ~ Date: Sun Apr 11 20:41:31 2021 +0900 aaaでコミット(コミットメッセージ) commit fd037f8ba24b05b9b1214edfd3ed8258f063a694 (origin/main, origin/HEAD, main, bbb) Author: user <~users.noreply.github.com> Date: Sun Apr 11 20:35:41 2021 +0900 mainブランチに戻り、 git checkout -b bbb ブランチを切り替えました。 いよいよ、aaaブランチでコミットを取り出します。 特定コミットの反映コマンド git cherry-pick コミットID git cherry-pick 0497a98eed98112e8af84f9c6d816c96ab24734c #コミットIDはgit logコマンドで確認できます。 cheery-pickで特定コミットをbbbブランチに反映しました。 確認してみます。 git log commit 31874f15070ed95ee9b1717d065205bfb238c3fe (HEAD -> bbb) Author: ~ Date: Sun Apr 11 20:41:31 2021 +0900 aaaでコミット commit fd037f8ba24b05b9b1214edfd3ed8258f063a694 (origin/main, origin/HEAD, main) Author: ~ <~@users.noreply.github.com> Date: Sun Apr 11 20:35:41 2021 +0900 このようにgit cherry-pickで特定コミットを反映できます。 今回は、ローカル上で行いましたが、リモートブランチの特定コミットや複数のコミットも取得可能です。 以上
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【GitHub】IssueをPull requestで閉じる方法

はじめに Issueをプルリクで閉じる方法があって便利なので紹介します! 手順 Issueを作成します 今回は、レイアウトが崩れています!とゆうタイトルで作成しました。Issue番号は1ですね このIssueをPull requestで閉じます プルリクの説明の欄にclose #[Issue番号]を記入することで閉じる事ができます close以外にもfixやresolveなど閉じるコマンドがあります、詳しくは参考を読んでみてください! Mergeさせると... Issueが閉じました!以上です 参考
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Git】リモートからローカルに取り込むコマンドまとめ

【masterに取り込み、更新】リモートのmasterが更新されたため、ローカルのmasterに単純に取り込みたい [branch上] $ git checkout master [master上] $ git fetch $ git merge [now:masterに更新かかった状態] [その他] $ git branch [新しいbranch切る] $ git branch -D [先程までのいらないbranch] 【master更新〜ブランチ取り込み】ブランチで開発中、リモートmasterに更新がかかった場合 [ブランチ上] $ git stash [master上] $ git checkout master $ git fetch $ git merge $ git checkout [先ほど作業していたブランチ名] [ブランチ上] $ git merge origin/master $ git stash apply [先程、退避した履歴] $ git stash drop [先程、退避した履歴] ローカルのmasterに更新をかける git stash:変更の退避(addはしたけど、commitしてないもの)。commitしたくないけど、逃したい場合に有効。 【状態】 ・ローカルのmasterと同じ状態 (master→ブランチに切り替えして、一度もcommitしていなければ) git checkout master: 同じ状態にしてから、masterに切り替える。(そうでないと、ブランチの状態がそのままmasterに反映されるから。) 【状態】 ・現在、ローカルのmasterにいます。 git fetch :もしくは、git fetch origin master。 ここでおさらい。 ここで出てくるmasterの種類は3種類。 ①(リモート)master ②(ローカル)origin/master: リモートmasterを追跡する、リモート追跡ブランチ。かつ、ローカルmasterの上流ブランチ。 ③(ローカル)master: origin/masterを上流ブランチとする、作業ブランチ。 git fetchは①→②に取り込むコマンド。 【状態】 ②(ローカル)origin/masterに、①(リモート)masterの更新がかかった git merge:もしくは、もしくは git merge origin/master ②→③に取り込むコマンド。 【状態】 ③(ローカル)masterに、②(ローカル)origin/masterの更新がかかった。 (これで、masterのリモート〜作業ブランチまで全て同じ状態) ※ git fetch と git mergeを同時に行ったものが、git pullになります。 何をしているかわからずコマンドを打っている段階では、git pullは使わない方がいいですね。 ローカルブランチに更新をかける git checkout [先ほど作業していたブランチ名]:ブランチに、戻ります。 【状態】 ・現在、ブランチに移動。ブランチの状態は、リモートのmasterを取り込む前のmasterの状態と同じ git merge origin/master:すでに、fetchしてあるので、origin/masterをブランチにも取り込みます。 【状態】 ・これで、ブランチも最新状態 git stash apply [先程、退避した履歴]:ここで先程退避した、ものを引っ張ってきます。 ($ git stash listで確認してください。) 【状態】 ・ブランチは、最新の状態に、現在編集途中のものを取り込んだ状態になります。 $ git stash drop [先程、退避した履歴]:先程逃したものは必要ないので削除しておきます。 完成!! 【ブランチ取り込みのみ】ブランチで開発中、リモートmasterに更新がかかって取り込みたい場合 $ git stash $ git fetch $ git merge もしくは git merge origin/master $ git stash apply [先程、退避した履歴] $ git stash drop [先程、退避した履歴] 上の説明と、同じなので省略。 git pullについて コマンド 説明 pull fetch + merge fetch ダウンロード push アップロード merge リモートを、ローカルに合流(logに残しにくいが、初心者はコッチ)→checkoutはmaster rebase リモートを、ローカルに合流(logに残しやすいが、ミスしやすい)→checkoutは作業ブランチ 注意点 ①コミットが済んでいないのに、checkoutでブランチを切り替えるのはやめましょう。 なぜなら、(例)branch1→masterに切り替え ブランチで更新した内容がそのままmasterに反映されるから。 ②編集途中の現branchから、別branchに切り替える時 →現branch内容が、別branchにも反映される 参考 【初心者向け】git fetch、git merge、git pullの違いについて 【git stash】コミットはせずに変更を退避したいとき
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Git] Untrackedなファイルをadd --patchする流れがとても面倒なのでワンラインにしてみた

untrackedファイルをadd --patchするには、 git add --intent-to-addを対象ファイルに対して行わなければならず、 尚且つgit add --intent-to-addを実行した対象ファイルを 一つ一つgit resetしなければgit commitができなくなるというもので、 本来であれば以下のような流れが必要になる。 git add -N $UNTRACKED_FILES git add -p git reset $UNTRACKED_FILES git commit これはファイル数が多くなれば、とても面倒。 ということで以下のようなワンラインを作成してみた。 $ git config --global alias.add-patch-with-untracked ! git status -s | cut -c4- | xargs git add -N && git add -p && git status -s | grep '^ ' | cut -c4- | xargs git reset 上記のような面倒な手順が、 git add-patch-with-untracked git commit で完結するようになる。 上記を追加するには、直接~/.gitconfigをいじってしまうのが早い $ git config --global --edit ~/.gitconfig [alias] add-patch-with-untracked = ! git status -s | cut -c4- | xargs git add -N && git add -p && git status -s | grep '^ ' | cut -c4- | xargs git reset 以上。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む