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#

提交到版本库时忽略某些文件:注意涉及身份、密码、口令、秘钥等敏感信息文件一定别提交了

echo *.o > .gitignore

image

image

License#

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

image

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。