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 系統配置,對所有用戶生效

創建 local Repository#

mkdir learn-git
cd learn-git
git init

git clone https://github.com/ekmett/ad.git

local Repo 關聯 remote Repo#

echo "remote-repo" >> [README.md](http://readme.md/)
git init
git add [README.md](http://readme.md/)
git commit -m "first commit"
____若已存在倉庫則執行以下,否則上下都執行
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>                 #重置倉庫地址
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

每次修改完 bug 把修改記錄添加到暫存區,最後再一次性提交到本地倉庫,記錄為一次版本信息
可以理解為 3 個目錄(實際上不是):本地倉庫是發布目錄

image

git status 查看文件狀態
git log查看提交版本記錄
git log —oneline

git diff    查看暫存區和工作區差異
git diff HEAD   查看工作區和當前版本差異
git diff -- cache   查看暫存區和當前版本差異
git diff 59cf93 59cf712 比較兩個版本差異
或git diff HEAD~1 HEAD file3.txt比較兩個版本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 合併到當前所處分支,且當前分支多出一條提交記錄;合併後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 協議從遠程拉取創建本地倉庫;或 push 到遠程倉庫時:配置 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 email>"

2)然後:從.ssh 目錄下查找並複製公鑰到遠程倉庫設置;最後:配置.ssh/config 文件(win 在 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 "Track large PDF files with Git LFS"

.gitignore#

Github Repo not found

The embedded github repo could not be found…

提交到版本庫時忽略某些文件:注意涉及身份、密碼、口令、秘鑰等敏感信息文件一定別提交了

echo *.o > .gitignore

image

image

License#

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

image

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。