命令: git init
效果:
注意:.git目录中存放的是本地库相关的子目录和文件,不能删除和修改。
作用:区分不同的开发人员身份
格式:
用户名:pms
Email:[email protected]
注意:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系。
命令:
项目级别/仓库级别:仅在当前本地库范围内有效
git config user.name pms
git config user.email [email protected]
系统用户级别:登录当前操作系统的用户范围
git config --global user.name pms
git config --global user.email [email protected]
级别优先级:
git status
--添加文件
git add 文件名
--添加所有文件
git add .
将新增、修改文件添加到暂存区。
git commit -m "message" 文件名
将文件提交到本地代码库。
git log
commit d209d21c49646cc5bb406bbef583e4a8030f5490
Author: pms .com>
Date: Tue Feb 18 10:37:43 2020 +0800
add readme file
--简洁模式
git log --pretty=online
c56f2046c0dbc3b4ae46b62a7bfb4bb83ff0e319 (HEAD -> master) update
d209d21c49646cc5bb406bbef583e4a8030f5490 add readme file
git log --oneline
c56f204 (HEAD -> master) update
d209d21 add readme file
--HEAD@{移动到当前版本需要多少步}
git reflog
c56f204 (HEAD -> master) HEAD@{0}: commit: update
d209d21 HEAD@{1}: commit (initial): add readme file
基于索引值【推荐】
git reset --hard 索引值
使用^符号:只能后退
git reset --hard HEAD^
一个后退一步,N个后退N步。
使用~符号
git reset --hard HEAD~1
HEAD~n 后退到第n步
回退到删除前版本
git reset --hard [指针位置]
git diff 文件名
--将工作区中的文件和暂存区进行比较
git diff 【本地库历史版本】【文件名】
--将工作区中的文件和本地库历史记录比较
创建分支
git branch [分支名]
--创建并切换
git branch -b [分支名]
查看分支
git branch -v
切换分支
git checkout [分支名]
合并分支
切换到被合并的分支上
执行merge命令
--在master中新建分支
git checkout [新建分支名]
--在master中合并新建分支
git merge [新建分支名]
解决冲突
git push <远程主机名 可省略> <本地分支名> <远程分支名>
--将远程库地址取别名存到本地
git remote add pmsgithub https://github.com/pengmengsheng/pengmengsheng.github.io.git
--将本地master分支提交到远程origin对应的master分支
git push origin master
git clone https://github.com/pengmengsheng/pengmengsheng.github.io.git
命令的结果:
完整的把远程库下载到本地
创建origin远程地址别名
初始化本地库
pull命令相当于 fetch+merge两个操作命令
也就是我们经常使用的Master分支,这个分支最近发布到生产环境的代码,最近发布的Release, 这个分支只能从其他分支合并,不能在这个分支直接修改
这个分支是我们是我们的主开发分支,包含所有要发布到下一个Release的代码,这个主要合并与其他分支,比如Feature分支
这个分支主要是用来开发一个新的功能,一旦开发完成,我们合并回Develop分支进入下一个Release
当你需要一个发布一个新Release的时候,我们基于Develop分支创建一个Release分支,完成Release后,我们合并到Master和Develop分支
当我们在Production发现新的Bug时候,我们需要创建一个Hotfix, 完成Hotfix后,我们合并回Master和Develop分支,所以Hotfix的改动会进入下一个Release
所有在Master分支上的Commit应该Tag
分支名 feature/*
Feature分支做完后,必须合并回Develop分支, 合并完分支后一般会删点这个Feature分支,但是我们也可以保留
分支名 release/*
Release分支基于Develop分支创建,打完Release分之后,我们可以在这个Release分支上测试,修改Bug等。同时,其它开发人员可以基于开发新的Feature (记住:一旦打了Release分支之后不要从Develop分支上合并新的改动到Release分支)
发布Release分支时,合并Release到Master和Develop, 同时在Master分支上打个Tag记住Release版本号,然后可以删除Release分支了。
分支名 hotfix/*
hotfix分支基于Master分支创建,开发完后需要合并回Master和Develop分支,同时在Master上打一个tag
https://github.com/nvie/gitflow
在~/.gitconfig 文件中加入
excludesfile=文件路径,文件路径使用“/”
处理方法:将命令行里的http改为git重新执行。
解决方法参考:https://blog.csdn.net/Len_lele/article/details/112645080