1. 文档阅读/查阅
https://git-scm.com/docshttps://git-scm.com/docs //官 参考手册
Git教程 – 廖雪峰的官方 站 //廖雪峰的博客-Git教程
Pro Git 中文版(第二版) // Pro Git 中文文档
Note:
学习一门技能或者其他, 首先要看下关于它的官方介绍
2. 整理输出
-1. 介绍
Git是什么p>
Git是目前世界上最先进的分布式版本控制系统(没有之一).
主要用于项目开发, 特别是团队开发. 即便是对于个人开发者.
0. 安装
0.1 Windows下: 省略.
升级: git update-git-for-windows
0.2 inux下: [centOS 7] — 主要用于服务器上安装
安装: yum install -y git
升级git版本:
步骤:
查看git版本,卸载旧版本(如果没有安装git请直接到下一步)
git –version yum remove git
安装依赖软件
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc yum install gcc perl-ExtUtils-MakeMaker
编译安装最新的git版本
cd /usr/local/src/
wget -O git.zip https://github.com/git/git/archive/master.zip unzip git.zip cd git-master make prefix=/usr/local/git all make prefix=/usr/local/git install
添加到环境变量
echo “export PATH=$PATH:/usr/local/git/bin” >> ~/.bashrc source ~/.bashrc git –version
最新的git已经安装over
补充:
linux make prefix=/usr/local all 是什么意思ll加不加有什么区别p>
prefix=/usr/local 是把prefix这个变量的赋值传到make脚本,也就是makefile里。 all是makefile中指定的一个编译目标,如果make没有加all,那么默认会执行makefile中的第一个编译目标,这是两者的不同之处。但是,在大多数的makefile中,会将all作为第一个编译目标,如果是这样,那么all加不加都是一样的,因此,真实的执行结果依赖于makefile的写法,是否把all作为第一个编译目标
参考:
上面没有成功, 于是又参考下面重新操作, 结果中途捣突然发现Git就更新到了2.25.0 [见下图], 应该还是之前的操作生效了, 但是缺少了某个步骤. TBD
Centos下升级git版本_桂安俊@KylinOS-CSDN博客_centos 升级git
Index of /pub/software/scm/git/ //git版本库 这里选择git-2.24.1.tar.xz 版本
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.24.1.tar.xz //下载2.24.1
另外可参考文档 — 结合着来
Centos安装Git_CodeLorin的博客-CSDN博客_centos git 安装 // Centos安装Git 2021-04-25 11:32:39
如何在CentOS 8上安装Git_Linux教程_Linux公 -Linux系统门户 站 // 如何在CentOS 8上安装Git
这里简单的三步 // 20210625 周五 家里
1. 下载源码压缩文件并解压
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.32.0.tar.gz // 最新版本
tar -zxvf git-2.32.0.tar.gz
2. 进入解压后的目录,从源代码安装并构建Git
sudo make prefix=/usr/local all install
3. 安装完毕后,查看git 版本
成功~~
0.3 Mac下安装
这里直接通过installer 傻瓜式安装,原因是不想安装xcode,节省系统资源,将资源留给其他服务
git-osx-installer download | SourceForge.net
没安装之前
安装之后
可以看到已经安装成功
主要是为了安装my-zsh
同时也已经成功~
1. 基本使用
git add 文件名[相对路径] 或者 git add .
git commit -m “备注信息”
git pull 远程仓库名[默认为origin,可修改] 分支名 // 提交代码之前先要拉取远程仓库相应分支代码 [也不是必须先要pull,可以直接push,如果 了冲突,会提醒需要git pull 然后解决冲突,之后push]
git push 远程仓库名[默认为origin,可修改] 分支名 // 如果有冲突解决完,按照git add/commit 之后push 没有冲突,成功push即可.
Note git push origin :develop // 本地的develop分支已经被删除,可以看到冒 前面为空,此命令可以将远程develop分支删除
2. git 分支操作
添加远程仓库
git remote add upstream //upstream是远程仓库名 默认是origin
[备注: 这里用的是GitLab,或者GitHub均可,上述命令均使用,但若用微软TFS,则需要使用 **** 命令暂时未记住,稍后补上.]
删除远程仓库
方法有四:
以下均以项目git_test为例: 老地址:http://192.168.1.12:9797/john/git_test.git 新地址:http://192.168.100.235:9797/john/git_test.git 远程仓库名称: origin
方法一 通过命令直接修改远程地址 进入git_test根目录 git remote 查看所有远程仓库, git remote xxx 查看指定远程仓库地址 git remote set-url origin http://192.168.100.235:9797/john/git_test.git
方法二 通过命令先删除再添加远程仓库 进入git_test根目录 git remote 查看所有远程仓库, git remote xxx 查看指定远程仓库地址 git remote rm origin git remote add origin http://192.168.100.235:9797/john/git_test.git
方法三 直接修改配置文件 进入git_test/.git vim config [core] repositoryformatversion = 0 filemode = true logallrefupdates = true precomposeunicode = true [remote “origin”] url = http://192.168.100.235:9797/shimanqiang/assistant.git fetch = +refs/heads/*:refs/remotes/origin/* [branch “master”] remote = origin merge = refs/heads/master
修改 [remote “origin”]下面的url即可
查看分支
git branch [–list] // 参数可选
创建分支
git branch 分支名
切换分支
git checkout
创建+切换分支
git checkout -b 分支名
合并某分支到当前分支
git merge 被合并的分支 合并到的分支
如果期间有冲突,想终止合并操作
git merge –abort
删除分支
git branch -d 分支名
Note:
如果尚未是尚未合并的分支, 需要用
git branch -D 分支名
git一般常有提示, 请认真阅读英文提示信息, 常会有下步思路.
插入
还原删除的分支: 比如执行git branch -D 之后, 想还原. // 20201015 科学馆
执行如何命令:
成功还原~~
拉取线上分支[github或者gitlab]到本地分支
[方式有三]
获取线上分支,但本地没有该分支 参考: https://blog.csdn.net/zhangxiaoyang0/article/details/79286825
方法一:
命令: git checkout -b 本地分支名x origin/远程分支名x
使用该方式会在本地新建分支x,并自动切换到该本地分支x。
采用此种方法建立的本地分支会和远程分支建立映射关系。
方式二: 命令:
git fetch origin 远程分支名x:本地分支名x
使用该方式会在本地新建分支x,但是不会自动切换到该本地分支x,需要手动checkout。
采用此种方法建立的本地分支不会和远程分支建立映射关系。
方式三: 跟方式二其实是一样的,但是更加方便,直接切换到相应分支下. ①git fetch 远程仓库名 如: git fetch disney-delta
②git checkout 相应的分支名 如: git checkout DELTA-2928_Retailer_site_db_api
添加远程分支 : git remote add upstream //upstream是远程仓库名 默认是origin
[备注: 这里用的是GitLab,或者GitHub均可,上述命令均使用,但若用微软TFS,则需要使用 **** 命令暂时未记住,稍后补上.]
查看分支:git branch [–list] //参数可选
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支:git merge
删除分支:git branch -d
// 如果尚未是尚未合并的分支,需要用git branch -D git一般常有提示,请认真阅读英文提示信息,常会有下步思路.
拉取线上分支[github或者gitlab]到本地分支
Note // 20200818 周二 科学馆
如果分支带有特殊字符,命令行下,需要进行转义,如果利用可视化工具,背后已经做了这样的工作
3. git 版本回退
本地仓库版本回退:
git log [–oneline] //查看提交记录,并记下要回退的commit id
git reset –hard commit id //commit id即上面对应的commit id 如:f634478d2f3d514b5ed77f6b1c8bd5533779fc21
本地仓库回退至远程仓库版本:
git reset –hard commit id //commit id 是远程仓库commit id,可以到远程仓库中查看.如 gitlab中8861eee5 本地commit id 与远程仓库commit id 明显长度不同,应为不同的id.
4. git rebase合并多次commit
git log 或者git log –oneline [推荐使用后者,不过看不到都是谁的提交]
//之后使用wq或者q均可. //离开可视模式.便可以重新输入命令
git rebase -i HEAD~4 //4表示要合并的提交的数量,最新的四个[从下往上数,最新的提交在下面,可以通过提交时间来确认]
或
git rebase -Idevelop //develop是基准线 rebase即重新设置基准线,即有参考才行
git add .
git rebase–continue
git log //查看确认
取消git rebase 命令 //即取消rebasing状态
git rebase –abort
详细参考:
使用git rebase合并多次commit : https://blog.csdn.net/yangcs2009/article/details/47166361
聊下 git rebase -I :
聊下 git rebase -i – 王清培 – 博客园
5. webhook 的使用[未使用到,暂不记录]
在gitlab 中使用webhook 实现php 自动部署git 代码
资源参考:
https://segmentfault.com/a/1190000009866784
https://segmentfault.com/a/1190000011561808 //比较推荐
Jenkins进阶-Gitlab使用Webhook实现Push代码自动部署(3) – 梦雨情殇 – 博客园
Gitlab上hooks:
https://code.***.io/william_ning/d****/settings/integrations
https://code.***.io/nick_cai/d****/settings/integrations//猜测
6. 查看记录
git log //查看提交记录
git log –name-status //查看最近提交修改的文, 显示状态 git log –name-only 每次修改的文件列表
高级用法: 查看某人某段时间内的提交记录 //20200403
git log –since=”2019-08-01 00:00:00″ –until=”2019-08-14 00:00:00″ –pretty git log –author=”BlessLj” –since=”2013-01-31 01:30:00″ –until=”2013-03-31 01:30:00″ –pretty
7. git push 把本地分支推到远程 20191206 周五
1.远程已有remote_branch分支并且已经关联本地分支local_branch且本地已经切换到local_branch
git push
2.远程已有remote_branch分支但未关联本地分支local_branch且本地已经切换到local_branch
git push -u origin/remote_branch
3.远程没有remote_branch分支,本地已经切换到local_branch
git push origin local_branch:remote_branch //若远程分支没有就会创建该分支 名字可以自行制定, 推荐使用相同的名字
8. 忽略某个文件提交, 即 .gitignore的使用
Git – .gitignore – 学习/实践_william_n的博客-CSDN博客
9. 本地仓库与远程仓库关联
Git 本地仓库与远程仓库关联_william_n的博客-CSDN博客
10. .gitignore的使用
Git – .gitattributes – 学习/实践_william_n的博客-CSDN博客_gitattributes 11. .gitkeep 是什么什么用p>
Git – .gitkeep – 学习/实践_william_n的博客-CSDN博客 12. Git – 如何将master/其他分支上修改代码不提交直接移到新建分支
Git – 如何将master/其他分支上修改代码不提交直接移到新建分支_william_n的博客-CSDN博客
13. Git – 强制覆盖本地代码[与git远程仓库保持一致]
Git – 强制覆盖本地代码[与远程仓库保持一致]_william_n的博客-CSDN博客_git更新本地代码和远程仓库一致
14. Git – 换行符自动转换问题 – 学习/实践
Git – 换行符自动转换问题 – 学习/实践_william_n的博客-CSDN博客_git换行符自动转换
15. Git – 执行git pull 一直 错 error: cannot lock ref
Git – 执行git pull 一直 错 error: cannot lock ref_william_n的博客-CSDN博客
16. Git 代码统计
Git 代码统计
17. 设置固定拉取的远程分支
git branch –set-upstream-to=/ current-branch
如:git branch –set-upstream-to=origin/main main
18. 版本控制[Git/SVN] – 如何将修改的文件导出
版本控制[Git/SVN] – 如何将新修改的文件导出
19. 撤消操作
Git – 撤消操作 // git-scm.com/book/zh/v2/Git-基础-撤消操作
20. 修改git文件名大小写问题
git修改文件名大小写_IceEricMoon的博客-CSDN博客
问题背景
在git本地工作区修改文件名大小写(如将test.js改成Test.js)后,使用git status指令提示nothing to commit, working tree clean,也就是说git并没有检测出文件名大小写的修改。
解决方式1
在 上找到的原因是说git是对文件名大小写不敏感的,找到的解决方案是将git配置为大小写敏感的,即使用指令
git config core.ignoreCase false
尝试了一下这个方式,然后使用git status查看状态发现确实又一个untracked file,但是没有delete file,(正常修改文件名称,非大小写修改时是有个untract文件的同时还有个delete file的),此时继续执行git-add-commit之后,会发现git仓库中会同时存在大小写两个文件,此时修改文件内容时两份文件也会同时被修改。使用git ls-tree HEAD 查看对象,会发现大小写两份文件的SHA1值是相同的,也就是两份文件指向同一个Blob对象。此时别人从git上拉代码拉下来的仍然是小写的文件名。
当然可以手动删除仓库中的多余的小写名字的文件,使用的指令是
git rm –cached test.js
然后继续执行git-commit-push提交代码。
解决方式2(推荐)
正确的做法是使用git的指令修改文件名
git mv -f test.js Test.js
这时git就可以识别出文件名的改变了,此时提交到仓库之后会发现仓库上就会只有一个大写的文件。此时从别的地方拉代码也会正确识别出文件名大小写的变化。此方法目前没有发现任何问题。
查看git mv指令的文档,文档上写的是
git-mv – Move or rename a file, a directory, or a symlink
这里还是使用的是方式1,确实有点麻烦
1. 当前项目中,执行git区分大小写文件名设置
git config core.ignoreCase false
// 但是又惹出了其他的事情,比如不能正常切换分支,
解决办法:设置回去先,git config core.ignoreCase true
解决git无法切换分支(The following untracked working tree files would be overwritten by checkout)_蓝狐软件工作室
2. 修改文件名为大写/小写
3. 执行命令git rm –cached xxx
git rm –cached app/controllers/indexController.php git rm –cached app/controllers/testController.php git rm –cached core/kernel.php git rm –cached core/lib/conf.php git rm –cached core/lib/log.php git rm –cached core/lib/model.php git rm –cached core/lib/route.php
截图如下:
提交到GitHub上如下:
GitHub – ningxiaofa/yapf: 从零开始打造自己的PHP框架[实践]
一切正常~~
后续补充
…
|