尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

git 操作汇总

git 操作汇总 目录1.配置git客户端1.1 git 配置gerrit账号、邮箱global配置1.2 git 配置review账号global配置1.3 git配置gerrit仓库信息local配置1.4 参考2. git提交操作序列3. git查看日志4.版本回退5.版本各分支的切换6.提交冲突的处理7.git stash保存当前工具与冲突解决8.git tag创建注解标签并提交9.仓库所有者不正确的报错10.仓库分支的相关操作11.仓库创建12.优化提交历史13.lfs的使用与回退1.配置git客户端配置分为3层系统层配置-global配置-local配置global配置各仓库有效local配置单个仓库有效1.1 git 配置gerrit账号、邮箱global配置git config --global --unset user.name #删除配置的账号git config --global user.name ABC #配置账号为ABC用于登录git config user.name # 查看账号git config --global --unset user.email #删除配置的邮箱git config --global user.email EMAIL #配置邮箱为EMAIL用于关联通知git config user.email # 查看邮箱这里的gerrit账号本质为commit的作者以gerri账号设置commit的作者当--global变为--local则仅配置单独的仓库而非全部仓库1.2 git 配置review账号global配置git config --global --unset gitreview.username #删除配置的reviewgit config --global gitreview.username ABC #配置review账号一般同gerrit登录账号git config gitreview.username #查看review账号1.3 git配置gerrit仓库信息local配置一般仓库会自带.gitreview文件gerrit.hostxxx #gitreview的网址的主机或域名提交代码评审所在gerrit.portyyy #gitreview的网址的端口提交代码评审所在gerrit.projectzzz #gitreview的仓库对应项目gerrit.defaultbranchuuu #gitreview的仓库对应分支比如master1.4 参考git的安装与基本使用方法 - 简书 (jianshu.com)2. git提交操作序列git status #查看此次修改的文件git add files #将此次修改的文件提交本地暂存区git reset HEAD #将提交到本地暂存区的文件回退为工作区git commit -m message #将本地暂存区的文件提交到本地仓库git reset --soft HEAD^ #将提交到本地仓库的文件回退到本地暂存区git commit --amend #将最近一次提交进行修改比如修改提交的messagegit pull -r #更新本地仓库可能会由冲突需要提前备份解决冲突后continuegit review #将本地仓库的提交推送远程仓库并进行评审[反向提交]想在恢复到最新提交前的代码并在此基础上修改后提交若不希望--forec强制覆盖可以使用反向提交既保留历史又能完成提交反向提交操作序列git revert HEAD --no-commit # 撤销最后一次提交但不自动提交恢复最新提交前的代码进行相关修改git add ./git commit -m xxx/git push 完成修改的提交保留最新提交的历史又完成基于前一个提交的后续修正3. git查看日志git log --follow file #查看file的历次修改情况git log --stats #查看日志的详细信息展示修改哪些文件git log -p file #查看file的具体修改信息git log --oneline --format%h %an %s #单行显示提交hash/作者/提交信息git log --oneline --prettyformat:%h %ad %s --dateshort #单行显示提交时间4.版本回退git checkout $commit_id #回退指定的commit_idgit log --oneline #可以快速查看commit_id即每行的一个域git checkout master #恢复到当前最新的主分支git checkout file #将文件的改动摒弃恢复到仓库的版本5.版本各分支的切换git clone url #仓库的master分支git tag #查看仓库的各tag标签tag-namegit checkout tags/tag-name #切换到指定的tag分支在上面进行相关的开发验证git checkout master #切换回master分支git pull #保持master分支与远程仓库一致6.提交冲突的处理执行git status;git add xxx;git commit ;git pull -r发送冲突后将冲突的文件进行修改找到里面 行部分说明冲突区域修改冲突区域git add 冲突文件;git rebase --continue完成提交如果这里想回退git reflog 查看git commit 的hashgit reset --hard hash回退到commit的时刻重写git pull -r;修改冲突git add ;git rebase --continue即可7.git stash保存当前工具与冲突解决git stash #保存当前工作开发中的功能修改bug进行提交:git add/git commitgit stash pop #将保存的工作恢复到工作区遇上冲突需要修改冲突:vi修改git add标记为已解决冲突之后继续提交git commit/git pull/git push8.git tag创建注解标签并提交git tag -a v1.1.0 -m Release version 1.1.0 commit #给指定提交commit创建注解标签v1.1.0git show v1.1.0 #验证新创建的注解标签message是否正确git tag #确认本地已完成新的注解标签创建git push origin v1.1.0 #推送新创建的注解标签到远程仓库git remote -v #查看当前的远程仓库名注解错误需要修改该tag的注解删除远程仓库的该tag git push origin --delete tag_name删除本地仓库的该tag git tag -d tag_name本地仓库重新提交正确注解的tag同名git tag -a tag_name -m 新的注解信息推送远程仓库git push origin tag_name9.仓库所有者不正确的报错git 的操作报错fatal: detected dubious ownership in repository at xxx仓库目录的所有者为xxx现在以root用户登录服务器进行该仓库目录的git操作会报上述错误要么更改仓库目录的所有者为root要么以xxx登录服务器选择以xxx登录服务器在xxx账号下操作git可解决问题10.仓库分支的相关操作创建一个新的分支以便进行开发更新master分支后我们创建一个新的分支f1git checkout -b f1修改代码合并到本地git add/commit推送新分支f1到远程仓库git push -u origin f1后续修改合并到远程仓库git add/commit/pull/push其他人加入该分支进行开发下载master分支后查看远程仓库的全部分支git branch -r选择远程仓库的f1分支创建同名分支f1并切换git checkout -b f1 origin/f1删除该本地分支git branch -d f1-D强制删修改代码合并远程分支1git add/commit/pull/push合并该分支f1的增量代码到master切换到mastergit checkout master拉起master最新提交避免冲突git pull origin master 或git pull -r合并分支f1的增量代码到mastergit merge f1合并指定提交(推荐)git cherry-pick ${hash}解决冲突后继续合并git cherry-pick --continue解决冲突vi/add/commit推送分支f1的增量代码到远程mastergit push11.仓库创建一般在远程仓库里通过gerrit等创建空的仓库本地git clone仓库后创造修改后git commit/git pull/git push/git review完成提交到远程仓库12.优化提交历史开发分支完成feature的开发最近提交10个commit需要将开发分支的最新10个commit按功能点重新合并为2个commit然后再合入master分支操作开发分支git diff HEAD~10..HEAD --stat #最近10个提交的修改统计开发分支git rebase -i HEAD~10 #优化最近10个提交为2个提p/s wq开发分支git diff HEAD~2..HEAD --stat #优化为2个提交后的修改统计要一致即可开发分支git push --force-with-lease origin localbranchname:remotebranchname #强制覆盖提交master分支git cherry-pick 开发分支的优化后的2个提交即可13.lfs的使用与回退背景git仓库可能限制文件大小为64M超过限制的文件无法上传需要使用lfs工具管理这些无法上传的文件文件存储于别处默认仓库前缀开始的lfs地址也可以配置公司的制品库(开通lfs支持)git触发lfs时去这里拉取这些大文件安装linux安装安装git后没有内置lfs需额外安装apt install git-lfs;git lfs install #安装lfs工具并配置windows安装安装git fow windows后默认内置lfs若没有内置可以重新执行git的安装程序重新勾选即可使用与配置设置lfs的全局配置git lfs install取消lfs的全局配置git lfs uninstall一般设置全局配置即可设置好lfs的管理的文件后并关联这些存储的url提供权限git lfs ls-file看到设置的文件及其idshagit config -l |grep lfs.url看到存储的位置需要配置完成关联若存储带权限lfs.url需要提供user:passwdgit config lfs.url https://$user:passwd/lfs-files-url设置url与权限之后正常的git clone就可以自动下载这些大文件若因为先git clone后git config lfs.url导致没有下载大文件可以手动下载使用git lfs pull即可回退当不需要这个设置的时候我们这样回退到安装之前的状态删除使用lfs的仓库删除~/.gitconfig文件里有关lfs的过滤器sudo apt remove --purge git-lfs #卸载lfs工具14.windos系统克隆仓库遇上文件冲突linux系统区分大小写A.txt与a.txt是2个文件windows系统不区分大小写A.txt与a.txt被认为是相同的问题当仓库里存在A.txt与a.txt在linux系统克隆仓库并没有问题在windows系统克隆仓库将会出现文件的冲突当前git没有办法解决这个问题我们采用的方式是将冲突的文件所在目录打包为tar.gz文件规避这个问题git仓库里的tar.gz用于固定不常修改的项目用于解决文件冲突的目录但当tar.gz文件过大超过仓库的设置limit将无法上传只能使用lfs提供大文件的引用解决15.由git提交生成对应的补丁patch仓库A正常进行git提交同源仓库B无法联网不能同步仓库A的更新这时可以将仓库A的提交变为补丁手动合入到仓库B操作如下进入仓库A将最近n个提交变为补丁git format-patch -n -o /path/to/patches_dir从/path/to/patches_dir目录将补丁*patch拷贝到仓库B对每一个补丁执行命令git apply --index 0001-fix.patchgit commit -m xxxx解决冲突即可合入对应的补丁同时设置新的提交信息/作者
返回列表