了解 Git 並且使用 Git 時需要知道的內容
Git的安装
制作钥匙
# 名前をデフォルトのままにする場合
ssh-keygen -t rsa -b 4096
# 名前を変える場合
# ホームディレクトリ(cdを打った時の箇所)で実行する
mkdir .ssh/
cd .ssh
ssh-keygen -t rsa -b 4096 -f 鍵の名前
touch ~/.ssh/config
设置关键信息
如果更改密钥名称或拥有多个秘密密钥时,需要进行此设置。请在.ssh/config中进行记录。
如果进行这个设置,需要注意git的克隆操作将发生以下变化,所以需要谨慎处理。
git clone git@github.com:ucan-lab/docker-laravel.git ではなく、
git clone 識別のための任意の名前:ucan-lab/docker-laravel.git
# configのサンプル
# githubの場合の例
Host github # 識別のための任意の名前
HostName github.com # ipアドレスまたはホスト名
User git # ユーザー名
IdentityFile ~/.ssh/鍵の名前 # 秘密鍵のパス
Port 22 # ポート番号。デフォルトは22
用户更改
git config user.email メールアドレス
git config user.name ユーザー名
简化日志的显示
在 .gitconfig 文件中添加以下内容。如果文件不存在,则同时创建它。
[alias]
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
lga = log --graph --all --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
安装git-secrets
-
- PowerShellを管理ユーザーで起動する
-
- Windowsキーを押し検索枠に「powershell」と入力した後、「管理者として実行する」を選択する。
- git-secretsの導入
# 該当のファイルをクローンしてくる
git clone https://github.com/awslabs/git-secrets.git
cd git-secrets
# パワーシェルではスクリプトファイルを初期設定では実行することはできないので設定を変更する
# 現在の設定確認
# Restricted → 制限されている状態
# RemoteSigned → ローカルにおいてのみ制限を解除されている状態
PowerShell Get-ExecutionPolicy
# 一時的に制限を解除する
PowerShell Set-ExecutionPolicy RemoteSigned
# スクリプトの読み込み(Done. と表示されていれば完了)
./install.ps1
# 設定をもとに戻す
PowerShell Set-ExecutionPolicy Restricted
# もとに戻っていることの確認
PowerShell Get-ExecutionPolicy
- 使用したいリポジトリ(publicリポジトリ)で下記を実行する
# この機能を使いたいgitの設定ファイル(.git)がある場所で下記のコマンドを実行する
# 該当リポジトリをgit-secretsに対応させる
git secrets --install
# AWS向けの検査設定を導入する
git secrets --register-aws
git命令
# クローン
git clone {リポジトリのURL}
# 不要なブランチを削除
git branch | grep feature | xargs git branch -d
# リポジトリを新規作成する
git init
# リモートリポジトリの内容を取得し、現在のブランチに取り込む(fetchとmergeを同時に行う)
git pull
# ブランチを作成しチェックアウトする
git checkout -b {ブランチ名}
git switch -c {ブランチ名}
# ワークツリーにある全ファイルの変更を取り消す
git restore .
# ワークツリーにある特定ファイルの変更を取り消す
git restore {ファイルパス}
# 変更したファイルの一覧を表示する
git status
# 変更したファイルの一部をコミット対象とする
git add {ファイルパス1} {ファイルパス2}...
# 変更したファイルすべてをコミット対象とする
git add -A
# コミット対象としたファイルをもとに戻す
git reset HEAD
# コミットする
git commit -m "{メッセージ}"
# 対象ローカルブランチをプッシュする
git push origin {ローカルブランチ名}
# 対象のファイルを削除する
git rm {ファイルパス}
# 特定のリポジトリの特定ブランチのみをclone
git clone -b {ブランチ名} --single-branch {リポジトリのURL}
子模块是什么
子模块是将“特定存储库”的“特定提交”关联到存储库中特定目录的机制。
除非指定存储库有更新,否则子模块不进行更新,因此子模块不会自动应用最新更改。
对于子模块的管理,建议在不需要频繁更新的情况下,如子模块项目进行重大升级时进行管理。
如果需要始终获取最新版本或进行短周期同步,则不适合使用子模块。
「サブツリー」とは什么意思?
和子模块一样,这是一种在父仓库中导入另一个仓库的机制。
与子模块的不同之处在于,子模块只能按照一个提交的哈希值导入,而子树可以导入包括另一个仓库的完整历史记录在内的所有内容。
可以将另一个仓库的内容作为父仓库分支的一个部分导入进来。
Git大文件存储 (Git Large File Storage)
这是用来管理Git不擅长处理的二进制文件版本的机制。
它适用于需要管理音频文件、视频文件等以MB为单位的文件版本。
相反,对于以KB为单位的图像文件不适用。