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
每次修改完 bug 把修改記錄添加到暫存區,最後再一次性提交到本地倉庫,記錄為一次版本信息
可以理解為 3 個目錄(實際上不是):本地倉庫是發布目錄
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
License#
https://cloud.tencent.com/developer/article/1921909