Git コマンドティップス

ブランチクローン作成

$ git clone --single-branch --branch branchname https://github.com/user/repo.git

オリジナルからクローンをローカルに作成、クローン内のファイル修正後、フォークしたリモートに修正内容をコミットする場合

  • オリジナルクローン作成 git clone
  • クローンファイル修正(ローカル環境で)
  • git addコマンドまたはgit commitコマンドにより修正内容フィックス
  • オリジナルからフォーク作成
  • リモート追加 git remote add
  • 追加したリモートを指定してgit push

https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes

The git remote add command takes two arguments:

  • A remote name, for example, origin_name
  • A remote URL, for example, https://github.com/user/repo.git

For example:

オリジナルからフォークしたリモートの追加

$ git remote add origin_name https://github.com/user/repo.git

追加したリモートの確認

$ git remote -v

origin_name https://github.com/user/repo.git (fetch) 
origin_name https://github.com/user/repo.git (push)

ローカル環境でファイル修正後、

修正したファイルのステージング

$ git add .

ローカルレポジトリに修正内容反映

$ git commit

ローカルレポジトリの内容をリモートレポジトリに反映させる

$ git push origin_name

Git-Branch

$ git checkout -b iss53
Switched to a new branch "iss53" Branch iss53を作成し移動

This is shorthand for:

$ git branch iss53 --->Branchの作成
$ git checkout iss53 --->Branch iss53へ移動

デフォルトのレポジトリをクローン後、ブランチレポにチェックアウト
このブランチレポから新規ブランチを作成(チェックアウト)

$ git clone http://repository
$ git checkout branchname
$ git checkout -b new-branch-name

git cloneのアップデート

本家リモートからそのままクローンしたレポジトリをアップデートする場合

fetchとmergeを同時に実行

$git pull

fetchのみ実行

$git fetch

submodule update

git submodule

https://git-scm.com/book/en/v2/Git-Tools-Submodules
https://git-scm.com/docs/git-submodule

branchまたはtagによるGitレポジトリクローン

https://git-scm.com/docs/git-clone

git clone [--template=<template_directory>]
	  [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror]
	  [-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>]
	  [--dissociate] [--separate-git-dir <git dir>]
	  [--depth <depth>] [--[no-]single-branch] [--no-tags]
	  [--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules]
	  [--[no-]remote-submodules] [--jobs <n>] [--sparse]
	  [--filter=<filter>] [--] <repository>
	  [<directory>]

オープンソースによる会議システムJetsiをDockerコンテナで構築するため、以下最新の安定版をクローン

$ git clone -b stable-4857 --single-branch https://github.com/jitsi/docker-jitsi-meet.git
Cloning into 'docker-jitsi-meet'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 1829 (delta 1), reused 4 (delta 0), pack-reused 1823
Receiving objects: 100% (1829/1829), 750.95 KiB | 941.00 KiB/s, done.
Resolving deltas: 100% (888/888), done.
Note: checking out 'd32d74fa138c828b3de34fe7b0fb35c7fc3e0dc8'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

tagによるレポジトリも同様に--branch指定

$ git clone --depth 1 --branch <tag_name> <repo_url>

--depth 1 はオプションで、改訂履歴の深さを表す。ある時点でのtag付レポのみをクローンする場合はdepth 1を指定。

$ git clone --single-branch --branch <branchname> <remote-repo>

レポジトリ内の特定フォルダ(ファイル)のクローン(ダウンロード)

sparse-checkout

sparseコマンドによる部分クローン機能は、以下2.25パージョンから導入。

Ubuntuで最新版を導入するため、以下のPPAを追加しバージョンを最新版に更新。

$ sudo add-apt-repository ppa:git-core/ppa 
$ sudo apt update
$ sudo apt install git

Linux Realtek-Wifiドライバの部分クローン

$ mkdir linux_driver
$ cd linux_driver
$ git clone --filter=blob:none --no-checkout --depth 3 https://github.com/torvalds/linux.git
$ cd linux
$ git sparse-checkout init --cone

git sparse-checkout により、部分クローンするフォルダを指定

$ git sparse-checkout add drivers/net/wireless/realtek/rtlwifi
$ git checkout