物理情報工学ソフトウェア開発演習
おことわり この記事はプログラミング&業務未経験の新入社員に、Gitについて1時間くらいでバババッと説明した内容をもとに作ったものです。自分がもし誰かにGitについて教えて貰える立場にいたら、最初にこれを教えて貰いたかったという気持ちで作りました。 とりあえず「1人のプロジェクト」で「1時間で」Gitをそこそこ知って使えるようになることを目的としています。実際のチーム開発ができる水準までこの記事だけで達するのは無理ですが、今後Gitを使う必要がある人にとって学習の足がかりになればいいな、という内容です。 それと、新入社員に教えるという都合上、表現がやや正確でなくざっくりしたところがあるかもしれませんが、質の悪い誤解を招くようなものでなければご容赦下さい。 全体像 まずはGitとは何かをざっくり分かって貰った後で、VSCode上での操作を行って貰います。 Windowsでの説明を行いますが、
ソフトウェアの分散型バージョン管理システムである「Git」に複数の深刻な脆弱性が判明した。アップデートが提供されている。 ログにおいてフォーマットを指定している場合に、一部演算子の処理に問題があり整数オーバーフローが生じる脆弱性「CVE-2022-41903」が判明したもの。また「gitattributesファイル」のパース処理にも整数のオーバーフローの脆弱性「CVE-2022-23521」が存在するという。脆弱性を悪用されるとリモートよりコードを実行されるおそれがある。 CVE番号を採番したGitHubでは、これら脆弱性についていずれも共通脆弱性評価システム「CVSSv3.1」のベーススコアを「9.8」、重要度を4段階中もっとも高い「クリティカル(Critical)」とレーティングしている。 くわえてWindows版の「同2.39.0」では、GUIツールおけるクローン機能に信頼できない検
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の最新の変更同士の違いを表示します。
January 8, 2022 完全に個人的なメモ。たまに捻ったことをやろうとした時に無駄に時間を使ってしまったので。 一度 ignore 対象となったファイルを ignore から外すことは無理です。 以下の /ignored-directory/unignored.md は ignore されたままです。! は効きません。 ですので ignore を書くときは対象外にしたいファイルを含めないようにうまいこと書いてあげましょう。 上記ができないのはパフォーマンス上の理由だそうです。 Git 2.7.0 で一時的にこれが実装されたが v2.7.1 で戻されている # 本記事で書きたかったことがこれです。ネットで調べると 2.7 で実現できるようになったという情報を見てしまいハマったので。 2.7.0 -> 2.7.1 https://github.com/git/git/commit/8c
みなさんこんにちは、電通国際情報サービス(ISID)Xイノベーション本部ソフトウェアデザインセンターの佐藤太一です。 この記事では、Git を使った仕事のやり方(以降は Git ワークフローと記載)を設計する上での検討事項を説明します。 これによって、読者の皆さんがGitワークフローを適切に定義できるようになることを主たる目的としています。 また、筆者の能力不足によって記載しきれなかった考慮事項について、より深く Git を使いこなしている識者からの指摘を受ける機会を得ることを副次的な目的とします。 この記事には書かれていないものの、検討すべき事項について知見のある方はブログ記事を書いたり、Twitter等のSNSで指摘してくださるとありがたいです。 はじめに 基本的な考え方 Git ワークフロー設計における考慮事項 チームの人数 monorepoの検討 参考文献 プロジェクト管理ツールと
概要 Git管理下にあるファイルをリネームした場合、 git log や git diff はそれをいい感じに処理してくれます。具体的にどういう動作をするか見てみましょう。 確認環境: /tmp/repo$ git init Initialized empty Git repository in /private/tmp/repo/.git/ /tmp/repo$ seq 100 > seq.1 /tmp/repo$ git add seq.1 /tmp/repo$ git commit -m 1 [master (root-commit) f9b660f] 1 1 file changed, 100 insertions(+) create mode 100644 seq.1 /tmp/repo$ git mv seq.1 seq.2 /tmp/repo$ git commit -m 2
Gitのワークフロー、好みが分かれる分野で自転車置き場の議論にもなりがちだと感じている。基本的にはプロジェクトの流儀に素直に従い、余計なストレスを抱えないのが良いと考えている。例えば、私はマージコミットを作るのが好みだが、OSS活動等では「squash & mergeして」って言われることもあり、そういうときは当然素直に従うようにしている。 ということで、私のGitのワークフローについてのスタンスについて書いておこうと思う。私と一緒に働く人や、働くことを検討している人の参考になればと思います。もちろん、この辺りは、良い方向に変化もさせていきたい。例えばエントリー内でも触れていますが、私は昔はforce pushを禁止したいくらいでしたが、今は使っても良い、と思うようになりました。 Natureの特にGoでのバックエンド開発はこれに近い感じだとイメージしてもらえればと思います。ただ、できてな
【末尾に追記あり】 この記事は Git のバージョン 2.6 時点での話です。2.7からは簡単にできるようになりました。 .gitignore で、あるフォルダを無視したとします。 で、その配下の特定のフォルダだけ、やっぱり git で管理したいとします。 たとえば folder1 ← このフォルダ配下は無視したい folder1-1 folder1-1-1 folder1-1-2 ← でも、このフォルダだけは無視したくない folder1-1-3 folder1-2 folder2 folder3 /folder1 は無視したい。 でも /folder1/folder1-1/folder1-1-2 は無視したくない。 とします。 ダメな例 とりあえず、.gitignore に ! 記法を使って
分散型バージョン管理システム「Git」に深刻な脆弱性が含まれていることがわかった。アップデートがリリースされている。 同システムの「credential helper」において改行を含む細工したURLを用いることで、Gitクライアントより認証情報を任意のホストに送信させることが可能となる脆弱性「CVE-2020-5260」が明らかとなったもの。 米国立標準技術研究所(NIST)の脆弱性データベース「NVD」による共通脆弱性評価システム「CVSSv3.1」のベーススコアは「9.3」で「クリティカル(Critical)」とレーティングされている。 脆弱性の判明を受けて、開発チームでは脆弱性へ対処した「同2.26.1」「同2.25.3」「同2.24.2」「同2.23.2」「同2.22.3」「同2.21.2」「同2.20.3」「同2.19.4」「同2.18.3」「同2.17.4」をリリース。また脆
Git を使って開発しているプロジェクトで、トラブル対応や機能のテストのために一時的に変更を加えた状態で作業をしたい、ただし一時的な変更なのでコミットしたくないといったことがあります。このような場合に skip-worktree を使うと、変更の追跡を一時的に無視できます。 特定のオプションを有効にしている場合に発生する問題への対応のために設定ファイルを変更している、しかしオプションはコミットしない。そうそうあることでもないですが、このようなパターンで一部変更しながらもコミットしたくないというケースがあります。そして慎重に作業を進めつつも、うっかりコミットして面倒なことに。。。 最初からコミットするつもりがない変更については明示的に外してしまうのも手です。 環境 本記事の開発環境は以下となります。 Windows 10 64bit + WSL Ubuntu 18.04.1 LTSGit 2
毎回 BRANCH_NAME を指定する作業をしていると、日に何回も push する時は、とても多くの時間がかかってしまうことがあるかもしれません。 あと、タイトルは単に消耗しているの?って言いたかっただけです。 git push origin HEAD 下記を実行することで、カレントブランチ (git st で確認)の内容を origin に対して push できます。 詳しく git document によると1 git push origin HEAD A handy way to push the current branch to the same name on the remote カレントブランチを同じ名前でリモートに対して push する便利な方法です。 とあります。 同様の stackoverflow 2によると If you want to push a differ
I am trying to exclude a file (db/irrelevant.php) from a Git diff. I have tried putting a file in the db subdirectory called .gitattributes with the line irrelevant.php -diff and I have also tried creating a file called .git/info/attributes containing db/irrelevant.php. In all cases, the db/irrelevant.php file is included in the diff as a Git binary patch. What I want is for the changes to that fi
みなさんgitのsubmoduleって理解して使ってますか? 親プロジェクトをpullしたら、submoduleがmodifiedになって混乱してgit addして...あばばばば。みたいな事ないですか? 私はsubmoduleがなかなか理解できずに結構苦労しました。^^; ブランチ単位で管理する通常のリポジトリと違い、submoduleはCommitID単位で管理するというのが一番理解しにくい部分だと思います。 今回は、プロジェクトにsubmoduleを追加、更新、削除の動きを更新を掛ける側のプロジェクトと更新を受け入れる側のプロジェクトの2つの視点から追いながら、CommitIDで管理するとはどういう事なのかを解説していきます。 (結論だけ見たい人は末尾のまとめへ) 準備 「submoduleを開発する役割のプロジェクト test_app_A」と「submoduleを取り入れる役割のプ
元々IDEとか開発ツールは専門分野(?)なので、この手のものは以前からいろいろ試しているのですが、個人の感想をまとめておきたいと思います。IDEやエディタに統合されていて利用シーンが限定されるものや、GitHub for Windowsなどのように機能に制限の多いものは省いています。 SourceTree 信頼と実績のAtlassian製 無料で使用可能(要ユーザ登録) 日本語対応しており、書籍などの情報もある リポジトリごとにウィンドウが開く(Windows版はタブで開くのに…) 対話型リベースが可能 動作がかなり重い、特にブランチが増えると実用に耐えないレベルで重くなる ただし突然死などはしない Tower2 有料(買い切り$79) 履歴一覧でブランチの関連を把握するのが難しい気がする 1ウィンドウで複数リポジトリを切り替えて使用 動作はかなり軽い 時々突然死することがある ブランチを
昨日Macで使えるGitフロントエンドの紹介を書いたところ、友人のPishenさんからForkというツールもあることを教えていただきました。 How about https://t.co/fDZq7jzQoo ?— Pishen Tsai (@pishen) 2017年8月30日 Webサイトはこちら。現時点ではMac版(動作にはMacOS X 10.11以降が必要)のみですが、Windows版も提供予定のようです。 git-fork.com リリースノートを見ると昨年から開発されていたようですが、完全にノーマークだったので早速試してみました。 1ウィンドウで複数リポジトリをタブ切り替えで操作できる ブランチの状況も把握しやすい履歴ビュー(見た目的にはSourceTreeに近い) コミット時点のファイルツリーを確認できる 動作は軽快(ただし安定度についてはまだ不明) ターミナルから起動する
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く