git是什么
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件(两周开发出来的)。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
Git是目前世界上最先进的分布式版本控制系统。
为什么用git
1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
2、Git 把内容按元数据方式存储,而 SVN 是按文件: 所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
3、Git 分支和 SVN 的分支不同: 分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
4、Git 没有一个全局的版本号,而 SVN 有: 目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
5、Git 的内容完整性要优于 SVN: Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
这么牛逼,为什么不用呢?
怎么用git
-
git常用方法
两种方式使用:
http(https)方式:克隆项目时使用http(https)协议,需要输入gitlab的用户名和密码,不建议使用(每次push也都需要输入,比较麻烦,不过大多git客户端支持记录密码)。
ssh方式:克隆项目时使用ssh协议,需要先在本机创建公钥,然后将公钥填充到gitlab–>个人设置->SSH Keys中。建议采用此方式,一劳永逸(除非换电脑)。
-
初次使用git的配置
##########本地git配置########## 当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改: ##方式一: git config --global user.name "你的名字" git config --global user.email "你的邮箱" #方式二:将如下内容保存到:$HOME\.gitconfig中. [user] name = 你的名字 email = 你的邮箱 ###git提交模板设置,gitcommit_template ##设置提交模板格式,编辑$HOME\gitcommit_template,写入如下内容: -------------------------------------------------------- # ==[ 提交总结:简要描述本次提交,要求限制在25个字以内,描述完后下面空一行 ]=====| # ==[ 提交原因:新功能/Bug fix ]=================================================| [提交原因] # ==[ 详细描述:新功能提交时使用 ]===============================================| [详细描述] # ==[ Bug ID:针对Bug,填写BugID,未记录的bug填写“未记录的问题” ]====| # ==[ 多个BugID用空格分开 ]======================================================| [Bug ID] # ==[ Bug 原因:描述Bug产生的原因 ]==============================================| [Bug 原因] # ==[ 解决方法:针对Bug ]========================================================| [解决方法] # ==[ 其它:描述其它关联情况或需特殊说明的问题等 ]===============================| [其它] -------------------------------------------------------- ##设置提交模板 git config --global commit.template /Users/loong/.git_template
-
ssh方式认证gitlab
##########ssh认证配置########## #1.本机电脑打开gitbash,生成ssh登录的公钥和私钥 ssh-keygen -t ed25519 -C "email@example.com" #直接使用ssh-keygen也可以,默认rsa加密类型 #2.一路回车即可,中间会提示输入秘钥密码,可以不填,如果填写,push时需要输入此密码。 #3.进入到创建密钥过程中提示保存的目录中,打开.pub文件结尾的文件,复制 #4. gitlab公钥配置:将3中复制的内容粘贴到 gitlab--> 右上角用户头像--> 设置--> SSH Keys-->key中,填写标题并保存。
奇淫巧技
-
git stash
常用git stash命令: (1)git stash save "save message" : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。 (2)git stash list :查看stash了哪些存储 (3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1} (4)git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num} -p ,比如第二个:git stash show stash@{1} -p (5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1} (6)git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1} (7)git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储 (8)git stash clear :删除所有缓存的stash
-
git 挑选部分提交进行合并
git cherry-pick commitid
-
git分支合并保留源分支的提交记录
git rebase
-
gitignore妙用,参考github维护的忽略文件集
-
git 代码合并三种方式
- git merge 分支名
-
git pull (git fetch && git megre)
用于拉取关联的远程分支提交记录,并合并。
-
git rebase
可用于合并本地分支(git rebase 分支)、也可以合并远程分支(git fetch && git rebase ),如有冲突,解决冲突后,使用
git rebase --continue
执行 rebase 操作。 -
几个浏览器插件推荐,遗憾的是只支持github