banner
Zein

Zein

x_id

gitのベストプラクティス

image

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 にマージ

image

バグ修正が完了するたびに変更履歴をステージングエリアに追加し、最後に一度にローカルリポジトリにコミットして、バージョン情報として記録することができる
3 つのディレクトリ(実際にはそうではない)として理解できる:ローカルリポジトリはリリースディレクトリ

image

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

image

image

ライセンス#

https://cloud.tencent.com/developer/article/1921909

image

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。