首页
归档
友链
关于
Search
1
网易云音乐黑胶会员月月免费赠送
2,972 阅读
2
十年之约RSS聚合订阅服务上线
2,536 阅读
3
工资发放日的区别
2,221 阅读
4
rsyslogd内存占用过高解决方案
2,169 阅读
5
Nginx反代MinIO后,上传文件签名异常
2,071 阅读
零碎
标本
码海
工具
其他
登录
Search
标签搜索
北京
摄影
Java
旅行
生活
学习笔记
教程
Linux
服务器
软件
SpringBoot
日记
Windows
服务
数据库
福利
Spring
系统
SQL
前端
萧瑟
累计撰写
190
篇文章
累计收到
1,269
条评论
首页
栏目
零碎
标本
码海
工具
其他
页面
归档
友链
关于
搜索到
4
篇与
git
的结果
2023-02-18
svn迁移git仓库教程
项目交付、版本管理工具变更等情况下,迁移svn旧历史记录有很大必要,方便后续追踪文件的提交历史,文件修改记录比对等。git自带了从svn迁移至git的工具命令,可很好的对svn上的提交历史做迁移和映射,操作简单方便。但是初次接触不熟练,这里做一个总结和记录,内容尽量简单化。争取提供给刚刚接触git和准备迁移的用户一个简单易懂的方案。迁移流程图迁移教程这里分为两步来说明,第一步是比较简单迁移要件准备,已经准备好的用户可直接略过,直接进入第二步进行迁移操作。第一步:准备工作:① svn项目(SvnProject)地址及访问此svn项目权限账号: 地址:https://mytest.cn/svn/project/Example/ SvnProject / 账号:test/test@123② git新建一个仓库(如:GitProject)存放迁移项目 远程仓库地址:https://192.165.22.33/migrate/GitProject 账号/密码: my_test/mytest@123③ 待迁移svn项目有过提交记录的用户清单:如果具备①的svn账号又没有svn管理员权限,可以通过导出所有提交历史并用代码提取一下用户清单(开发人员都懂,不赘述)。获取到的用户清单为user1,user2,user3。创建文件users.txt,按如下格式存入svn账号与git账号的映射关系,“=”前为svn账号,“=”号后为git账号,尖括号为git用户的邮箱,尖括号及邮箱可无。注:如果有些用户已经离职了,其账号在git中没有,这里依然可以映射至不存在的git用户。如果SVN用户未全部列举,执行迁移时会报如下错误:报这个错误时可简单粗暴删除文件夹重新导出即可。④ :电脑上安装git客户端,客户端下载地址:https://www.git-scm.com/download/下载后安装客户端,安装及配置参考:https://blog.csdn.net/u013295518/article/details/78746007第二步:数据迁移一:导出svn记录到本地在你存放users.txt的同级目录新建一个文件,命名为你的项目名:GitProject右键文件空白处,单击Git Bash Here在bash界面,输入git拷贝命令:git svn clone https://mytest.cn/svn/project/Example/MyProject/ --no-metadata --authors-file=users.txt GitProject参数说明:git svn clone 是Git的迁移命令https://mytest.cn/svn/project/Example/MyProject/是svn服务器地址,注意需要到迁移项目的根目录一级--no-metadata 参数去除了svn上很多杂乱的参数信息,保留了清晰简洁的提交记录信息。-file=users.txt 为你的用户映射文件夹;GitProject是刚刚新建的空白项目名文件夹第一次操作,会多次要求账号密码:请注意每次提示信息,第一次密码输入是操作系统的用户密码,第二次为svn账号和密码,第三次为git的账号密码。注意按提示输入。第三步:关联git远程仓库执行cd GitProject进入迁移项目路径下:执行:git remote add origin git@192.165.22.33:migrate/GitProject.git后即已关联远程git仓库,执行可查看关联情况git remote –v未关联时:关联成功后:如果关联错了,可以使用 git remote rm origin删除错位关联后重新关联即可 git remote rm origin第四步:提交记录至gitsvn项目中的所有提交记录和历史版本都已经导出本地并关联了远程仓库,现在只需要将这些记录推送至远程仓库即可。执行git push -u origin master命令输入后需要输入git账号\密码执行成功后,就完成了整个迁移过程。登录git网站,可以看到空白仓库中多了很多提交记录和文件。引用资料:svn 迁移至git操作手册github推送项目常见错误fatal: remote origin already exists0Git 与其他系统 - Git 与 Subversion
2023年02月18日
169 阅读
4 评论
2021-11-14
利用GitHub520提供hosts文件定时更新本地hosts文件
之前自己利用 Gitea 搭建了一个Git私服,镜像 GitHub 项目的时候经常无法访问,导致镜像失败。后来发现了一个不错的项目 GitHub520 ,只要去修改本地 hosts 文件就可以访问GitHub了。但是每次去修改服务器的 hosts 文件,就有些繁琐了。后来写一个脚本,并配合 Linux 的 Crontab 定时更新,完美解决问题。脚本内容#!/bin/bash # 定时更新GitHub Host内容 # 利用项目GitHub520提供Host文件定时更新本地Host # # # Author: xiaose # Email: qingshanking@vip.qq.com # Github: https://github.com/qingshanking # Date: 2021/08/23 sed -i '3,$d' /etc/hosts # 上述作用是从第三行开始 进行修改,保留系统自带的hosts内容 curl https://raw.hellogithub.com/hosts >> /etc/hosts # 拉取hosts文件 写入本地hosts项目详情Crontab定时任务[root@localhost ~]# crontab -e ## -e: 编辑crontab定时任务 ## -l: 查询crontab任务 ## -r: 删除当前用户所有的crontab任务12345 ## 每30分钟执行一次ModifyHost 修改hosts文件 */30 * * * * /root/ModifyHost.sh更多用法,可参考Linux Crontab 定时任务
2021年11月14日
1,090 阅读
1 评论
2021-06-15
git for windows下的Filename too long
使用 git 提交代码的时候出现了错误:fatal: adding files failed百度查资料说文件没有保存,但是文件都是正常的,细看一下文件的详细错误,提示的内容是 Filename too long 原因是git可以创建4096长度的文件名,而Windows的文件名最大长度是260,因为git用了旧版本的windows api,为此踩了个坑。解决方案执行以下命令即可。git config --global core.longpaths true
2021年06月15日
268 阅读
1 评论
2021-05-31
Git常用命令笔记
Git图形化界面用的还可以,但是命令太多有些不太会了,索性做一个笔记跟大家一起学习下Git命令的用法... 一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。 下面是我整理的常用 Git 命令清单。几个专用名词的译名如下。Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库一、新建代码库# 在当前目录新建一个Git代码库 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init [项目名称] # 下载一个项目和它的整个代码历史 $ git clone [项目地址]二、配置Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。# 显示当前的Git配置 $ git config --list # 编辑Git配置文件 $ git config -e [--global] # 设置提交代码时的用户信息 $ git config [--global] user.name "[name]" $ git config [--global] user.email "[email address]” # git 修改当前的project的用户名的命令为: $ git config user.name 你的目标用户名; # git修改当前的project提交邮箱的命令为: $ git config user.email 你的目标邮箱名; # 如果你要修改当前全局的用户名和邮箱时,需要在上面的两条命令中添加一个参数,–global,代表的是全局。 # 命令分别为: $ git config --global user.name 你的目标用户名; $ git config --global user.email 你的目标邮箱名; # 临时 http 代理 # 地址和端口换成自己的代理服务器 export http_proxy=http://127.0.0.1:7777 export https_proxy=http://127.0.0.1:7777 # 永久 http 代理 $ git config --global http.proxy http://127.0.0.1:50015 $ git config --global https.proxy http://127.0.0.1:50015 # 手动修改修改配置文件方式 # 进入用户名根路径,找到 .gitconfig 文件,修改为 [http] proxy = http://127.0.0.1:50015 [https] proxy = http://127.0.0.1:50015 # 查看 http(s) 代理情况 $ git config --get --global http.proxy $ git config --get --global https.proxy # 永久 socks5 代理 $ git config --global http.proxy socks5://127.0.0.1:50014 $ git config --global https.proxy socks5://127.0.0.1:50014 # 修改配置文件方式:进入用户名根路径,找到 .gitconfig 文件,修改为: [http] proxy = socks5://127.0.0.1:50015 [https] proxy = socks5://127.0.0.1:50015 # 查看 socks5 代理情况 $ git config --get --global http.proxy $ git config --get --global https.proxy $ git config --get --global http.proxy socks5 $ git config --get --global https.proxy socks5 # 取消 http 或 socks 代理 $ git config --system (或 --global 或 --local) --unset http.proxy eg: $ git config --global --unset http.proxy $ git config --global --unset https.proxy三、增加/删除文件# 添加指定文件到暂存区 $ git add [file1] [file2] ... # 添加指定目录到暂存区,包括子目录 $ git add [dir] # 添加当前目录的所有文件到暂存区 $ git add . # 添加每个变化前,都会要求确认 # 对于同一个文件的多处变化,可以实现分次提交 $ git add -p # 删除工作区文件,并且将这次删除放入暂存区 $ git rm [file1] [file2] ... # 停止追踪指定文件,但该文件会保留在工作区 $ git rm --cached [file1] # 改名文件,并且将这个改名放入暂存区 $ git mv [file-original] [file-renamed]四、代码提交# 提交暂存区到仓库区 $ git commit -m [message] # 提交暂存区的指定文件到仓库区 $ git commit [file1] [file2] ... -m [message] # 提交工作区自上次commit之后的变化,直接到仓库区 $ git commit -a # 提交时显示所有diff信息 $ git commit -v # 使用一次新的commit,替代上一次提交 # 如果代码没有任何新变化,则用来改写上一次commit的提交信息 $ git commit --amend -m [message] # 重做上一次commit,并包括指定文件的新变化 $ git commit --amend [file1] [file2] ...五、分支# 列出所有本地分支 $ git branch # 列出所有远程分支 $ git branch -r # 列出所有本地分支和远程分支 $ git branch -a # 新建一个分支,但依然停留在当前分支 $ git branch [branch-name] # 新建一个分支,并切换到该分支 $ git checkout -b [branch] git checkout -b appoint_box(别名) origin/feature/20181128_1491627_appoint_box_1(分支名) # 新建一个分支,指向指定commit $ git branch [branch] [commit] # 新建一个分支,与指定的远程分支建立追踪关系 $ git branch --track [branch] [remote-branch] # 切换到指定分支,并更新工作区 $ git checkout [branch-name] # 切换到上一个分支 $ git checkout - # 建立追踪关系,在现有分支与指定的远程分支之间 $ git branch --set-upstream [branch] [remote-branch] # 合并指定分支到当前分支 $ git merge [branch] # 选择一个commit,合并进当前分支 $ git cherry-pick [commit] # 删除分支 $ git branch -d [branch-name] # 删除远程分支 $ git push origin --delete [branch-name] $ git branch -dr [remote/branch]六、标签# 列出所有tag $ git tag # 新建一个tag在当前commit $ git tag [tag] # 新建一个tag在指定commit $ git tag [tag] [commit] # 删除本地tag $ git tag -d [tag] # 删除远程tag $ git push origin :refs/tags/[tagName] # 查看tag信息 $ git show [tag] # 提交指定tag $ git push [remote] [tag] # 提交所有tag $ git push [remote] --tags # 新建一个分支,指向某个tag $ git checkout -b [branch] [tag]七、查看信息# 显示有变更的文件 $ git status # 显示当前分支的版本历史 $ git log # 显示commit历史,以及每次commit发生变更的文件 $ git log --stat # 搜索提交历史,根据关键词 $ git log -S [keyword] # 显示某个commit之后的所有变动,每个commit占据一行 $ git log [tag] HEAD --pretty=format:%s # 显示某个commit之后的所有变动,其"提交说明"必须符合搜索条件 $ git log [tag] HEAD --grep feature # 显示某个文件的版本历史,包括文件改名 $ git log --follow [file1] $ git whatchanged [file1] # 显示指定文件相关的每一次diff $ git log -p [file1] # 显示过去5次提交 $ git log -5 --pretty --oneline # 显示所有提交过的用户,按提交次数排序 $ git shortlog -sn # 显示指定文件是什么人在什么时间修改过 $ git blame [file1] # 显示暂存区和工作区的代码差异 $ git diff # 显示暂存区和上一个commit的差异 $ git diff --cached [file1] # 显示工作区与当前分支最新commit之间的差异 $ git diff HEAD # 显示两次提交之间的差异 $ git diff [first-branch]...[second-branch] # 显示今天你写了多少行代码 $ git diff --shortstat "@{0 day ago}" # 显示某次提交的元数据和内容变化 $ git show [commit] # 显示某次提交发生变化的文件 $ git show --name-only [commit] # 显示某次提交时,某个文件的内容 $ git show [commit]:[filename] # 显示当前分支的最近几次提交 $ git reflog 可以得到cimmit id # 从本地master拉取代码更新当前分支:branch 一般为master $ git rebase [branch]八、远程同步$ git remote update --更新远程仓储 # 下载远程仓库的所有变动 $ git fetch [remote] # 显示所有远程仓库 $ git remote -v # 显示某个远程仓库的信息 $ git remote show [remote] # 增加一个新的远程仓库,并命名 $ git remote add [shortname] [url1] # 取回远程仓库的变化,并与本地分支合并 $ git pull [remote] [branch] # 上传本地指定分支到远程仓库 $ git push [remote] [branch] # 强行推送当前分支到远程仓库,即使有冲突 $ git push [remote] --force # 推送所有分支到远程仓库 $ git push [remote] --all九、撤销# 恢复暂存区的指定文件到工作区 $ git checkout [file1] # 恢复某个commit的指定文件到暂存区和工作区 $ git checkout [commit] [file1] # 恢复暂存区的所有文件到工作区 $ git checkout . # 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变 $ git reset [file1] # 重置暂存区与工作区,与上一次commit保持一致 $ git reset --hard # 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变 $ git reset [commit] # 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致 $ git reset --hard [commit] # 重置当前HEAD为指定commit,但保持暂存区和工作区不变 $ git reset --keep [commit] # 新建一个commit,用来撤销指定commit # 后者的所有变化都将被前者抵消,并且应用到当前分支 $ git revert [commit] # 暂时将未提交的变化移除,稍后再移入 $ git stash $ git stash pop十、其他# 生成一个可供发布的压缩包 $ git archive 上传本地项目到远程仓库 1、(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库 git init 2、把文件添加到版本库中,使用命令 git add .添加到暂存区里面去,不要忘记后面的小数点“.”,意为添加文件夹下的所有文件 git add . 3、用命令 git commit告诉Git,把文件提交到仓库。引号内为提交说明 git commit -m 'first commit' 4、关联到远程库 git remote add origin 你的远程库地址 如: git remote add origin https://github.com/githubusername/demo.git 5、获取远程库与本地同步合并(如果远程库不为空必须做这一步,否则后面的提交会失败) git pull --rebase origin master 6、把本地库的内容推送到远程,使用 git push命令,实际上是把当前分支master推送到远程。执行此命令后会要求输入用户名、密码,验证通过后即开始上传。 git push -u origin master 7、状态查询命令 git statusfetch vs pullgit fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。而git pull 则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。
2021年05月31日
208 阅读
0 评论