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#
提交到版本库时忽略某些文件:注意涉及身份、密码、口令、秘钥等敏感信息文件一定别提交了
echo *.o > .gitignore
License#
https://cloud.tencent.com/developer/article/1921909