git config#
git config --global user.name "xj"
git config --global user.email "[email protected]"
git config --global credential.helper store
確認:
git config --global --list
git config --global user.name
git config --global user.email
パラメータ:(Local)
--global グローバル設定、すべてのリポジトリに適用
--system システム設定、すべてのユーザーに適用
ローカルリポジトリの作成#
mkdir learn-git
cd learn-git
git init
git clone https://github.com/ekmett/ad.git
ローカルリポジトリをリモートリポジトリに関連付ける#
echo "remote-repo" >> [README.md](http://readme.md/)
git init
git add [README.md](http://readme.md/)
git commit -m "最初のコミット"
____既にリポジトリが存在する場合は以下を実行し、そうでない場合は上下両方を実行
git branch -M main #現在のブランチをmainにリネーム
git remote add origin [[email protected]](mailto:[email protected]):xj/repo.git #リモートリポジトリ[email protected]:xj/repo.gitに関連付け、originとして宣言
git push -u origin main:main #ローカルの "main" ブランチをリモートリポジトリoriginのmainブランチにプッシュ
git remote -v #現在関連付けられているリポジトリを確認
git remote set-url origin <new_path> #リポジトリのURLをリセット
git remote remove origin #リポジトリを削除
gitflow#
main ブランチ:hotfix/release のマージのみを受け入れ、直接 push による変更は許可されない;マージごとに x.x.x バージョン番号(メジャーバージョン、マイナーバージョン、パッチバージョン)が生成される
hotfix: main から分岐し、修正後に main にマージ
dev: main/hotfix から分岐し、開発完了後に release にマージ
release: dev から分岐し、テスト完了後に main にマージ
feature-xx: dev から分岐し、開発完了後に dev にマージ
バグ修正が完了するたびに変更履歴をステージングエリアに追加し、最後に一度にローカルリポジトリにコミットして、バージョン情報として記録することができる
3 つのディレクトリ(実際にはそうではない)として理解できる:ローカルリポジトリはリリースディレクトリ
git status ファイルの状態を確認
git log コミットバージョン履歴を確認
git log —oneline
git diff ステージングエリアと作業ディレクトリの差異を確認
git diff HEAD 作業ディレクトリと現在のバージョンの差異を確認
git diff -- cache ステージングエリアと現在のバージョンの差異を確認
git diff 59cf93 59cf712 2つのバージョンの差異を比較
またはgit diff HEAD~1 HEAD file3.txt 2つのバージョンfile3の差異を比較
git ls-files ステージングエリアを確認
コミット#
**git add** fileName
git add . //現在のディレクトリ内のすべての未追跡ファイルを追跡
**git commit filename -m "これは更新説明です"
git commit** -am "説明" ステージング+コミット
git push ssh関連付け後にこのコマンドを使用;
git push remote_repo xvjin_dev
git checkout -- 最近のコミット状態に戻す
削除#
git rm file.txt lsとgit ls-filesを使用すると、作業ディレクトリとステージングエリアの両方で同時に削除されたことがわかる
git commit -m "削除"
git clean -f 未追跡ファイルを強制的に削除
git rm -r dir ディレクトリ内のすべてのものを再帰的に削除
git rm --cached file.txt キャッシュから削除
更新#
**git pull** origin main originリポジトリのmainブランチをプルしてマージ
git fetch origin main プル
git pull mylibrary main --allow-unrelated-histories 最初にリモートブランチをローカルにプルする際に必要な場合がある
ブランチ管理#
git branch xvjin-dev ブランチを作成
git switch xvjin-dev ブランチを切り替え
git checkout xvjin-dev ブランチを切り替え(古い方法)
git merge xvjin-dev xvjin-devを現在のブランチにマージし、現在のブランチに1つのコミット記録が追加される;マージ後もxvjin-devは存在し、削除は手動で行う必要がある
(dev)>>git rebase main 現在のdevブランチをターゲットブランチmainにリベースする;このマージは線形の履歴を形成し、比較的クリーンである
git branch -d xvjin-dev マージ後にブランチを削除
git branch -D xvjin-dev マージされていないブランチを強制的に削除
git branch -a すべてのブランチを確認
git remote show origin originリポジトリの更新履歴を確認
git log ローカルリポジトリの更新履歴を確認
マージコンフリクト#
1)git diff 差異を確認
2)手動でマージに失敗したファイルを修正
3)修正したファイルをコミットすると、自動的にコンフリクトファイルのマージが完了する
git merge --abort マージを中止
特定のバージョンに戻る#
git reset --soft HEAD^ リポジトリの特定のlogバージョンに戻り、作業ディレクトリとステージングエリアの内容を保持
git reset --hard HEAD~1 リポジトリの特定のlogバージョンに戻り、作業ディレクトリとステージングエリアの内容を保持しない
git reset --mixed 59cf9334cf957 リポジトリの特定のlogバージョンに戻り、作業ディレクトリを保持し、ステージングエリアの内容を保持しない
git log --oneline --grahp --decorate --all バージョン番号のハッシュをグラフィカルに表示し、上記のリセットに使用
git reflog 履歴操作を確認
git checkout -- filename 作業ディレクトリの変更を破棄し、キャッシュエリアのデータで現在の作業ディレクトリを上書き
ssh 設定#
OpenSSH コア操作 | GitHub SSH 接続_哔哩哔哩_bilibili
ssh プロトコルに基づいてリモートからプルしてローカルリポジトリを作成;またはリモートリポジトリにプッシュする際:ssh キーを設定
1)./.ssh/ に rsa(または ed25519)タイプの 4096 ビットキー id.rsa を生成するよう指定し、エンターを押してキーのファイル名を指定;デフォルトのキーのファイル名は id_rsa;同時に公開鍵ファイル id_rsa.pub も生成される
ssh-keygen -t rsa -b 4096 -f ./.ssh/id.rsa
ssh-keygen -t ed25519 -C "<ラベル:一般的にgithubのメールを書く>"
2)次に:.ssh ディレクトリから公開鍵を探してコピーし、リモートリポジトリの設定に追加;最後に.ssh/config ファイルを設定(Windows では C:\Users.ssh)(Linux では)
vi ./config
:
IdentityFile ~/.ssh/秘密鍵ファイル #sshが要求されたときに自動的に秘密鍵のパスを読み込む
#github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id.rsa
これは、ホスト github.com に接続する際の優先認証方式が公開鍵認証であり、ローカルの秘密鍵のパスが~/.ssh/id.rsa であることを意味する
3)テスト
ssh -T git@ホスト(上記のhost) //テスト
Git LFS#
git lfs version #確認
インストールが完了したら、GitリポジトリでGit LFSを初期化します:
git lfs install
Git LFSで大きなファイルを追跡します。すべてのPDFファイルを追跡したい場合は、次のコマンドを使用できます:
git lfs track "*.pdf"
変更を追加してコミットします
次に、変更をGitリポジトリに追加してコミットする必要があります:
git add .gitattributes
git add <large_files> # 追跡したい大きなファイル
git commit -m "Git LFSで大きなPDFファイルを追跡"
.gitignore#
バージョン管理にコミットする際に特定のファイルを無視します:注意が必要な情報、パスワード、トークン、秘密鍵などの敏感な情報ファイルは絶対にコミットしないでください
echo *.o > .gitignore
ライセンス#
https://cloud.tencent.com/developer/article/1921909