先说句废话:git是优秀的版本控制工具之一,想进互联网公司肯定要学,下文是我学习git做的笔记,如果有错误,欢迎指正。
另外欢迎在学GOlang的朋友加群交流:756817655
我是菜鸟,大佬们带带我
废话不多说,先上总结,初学的朋友可以先了解一下,再向下就是学习笔记了。
一、学完总结
* 常用
初始化本地仓库:
git init
绑定本地用户名和邮箱:
git config --global user.name "名字"
git config --global user.email "邮箱"
保存至暂存区:
(保存某一个文件) git add <FileName>
(保存根目录下的全部) git add ./
从暂存区保存到本地仓库:
git commit -m "说明"
上传到远程仓库:
git push
从远程仓库拉取覆盖本地:
git pull
查看日志:
git log
git log --oneline
git reflog
* 拓展内容
1.分支
查看所有分支:
git branch
创建分支:
git checkout -b <name分支名> <template指定分支为模板,不填默认以当前分支为模板>
切换分支:
git checkout <name分支名>
合并分支
在要保留的版本中,
-本地:合并某个分支:
git merge <分支>
-从远程拉取会自动和本地合并,需要解决冲突:
git pull
2.版本回退
查看日志后,
回退到指定版本-根据第几个算, 从0开始
回到之前版本:
git reset --hard head~0 (回到上个)
git reset --hard head~1 (回到上上个)
回退到指定版本-根据版本号(哈希值)
可以通过版本号精确地回退到指定版本号
git reset --hard ac246a0
3.简化git操作
给ssh起别名:
git remote add <origin别名> <ssh地址>
-u 至简:
git push -u origin master (master是分支名)
之后就可以在这个分支下直接 git pull、git push...
4.解决冲突
远程仓库,协同要先pull解决冲突,再push
因为代码冲突上传到远程后,不好修改,而且有冲突的话会上传不了,
pull保存到本地后,可以先解决冲突,再上传
二、git学习
说明:git初学会发现一些指令发出后没有什么响应,会以为没弄好,其实不然,一些情况下git没有消息就是好消息,就是没有问题。
下图是在一个文件夹创建了一个本地仓库,设置了name和email,创建了一个文件,而后经过add,commit 将文件保存到本地仓库的过程。期间2个config和add发出后都没有反馈,但是功能实现了。这里自己试试就明白了。
1. 初始化git仓库repository
-这个仓库会存放,git对我们项目代码进行备份的文件
-在项目文件夹右击git bash
-命令:
git init
-解释:会在指定文件夹中创建一个名为 .git 的隐藏文件夹
2. 保存使用者用户名和邮箱
-在git中设置当前使用的用户是谁
-每一次备份都会把当前备份者的信息存储起来
-命令:
配置用户名: git config --global user.name " 用户名"
配置邮箱: git config --global user.email " 邮箱"
--global 全局
3. 把代码存储到 .git 仓库中
1.把代码放到仓库门口(暂存区)
git add ./readme.txt 把指定的文件放到暂存区
git add ./ 把所有修改的文件添加到暂存区
2.把仓库门口的代码放入仓库中区(版本库)
(下图是从教程视频中截取的,自己加了3个标记,如果侵权请联系我删除)
git commit -m “这是对这次添加的东西的说明”
4. 可以一次性把修改的代码放到版本库中
git commit --all -m "一些说明"
5. 查看当前状态
-可以用来查看当前代码有没有被放到仓库中区
-命令 :
git status
6. 查看日志
1.查看历史提交的日志(详细):
git log
2.查看历史提交的日志(简洁)会得到全部日志:
git log --oneline
3.会得到最近的日志,也比较简洁
git reflog
7. git中的忽略文件(这里是学的时候顺手复制来的,没有实操过,错了勿怪)
- .gitignore,在这个文件中可以设置要被忽略的文件或者目录。
- 被忽略的文件不会被提交仓储里去. -在.gitignore中可以书写要被忽略的文件的路径,以/开头, 一行写一个路径,这些路径所对应的文件都会被忽略, 不会被提交到仓储中 +写法
' /.idea' 会忽略.idea文件 ' /js ' 会忽略js目录里的所有文件
' ·/js/*.js`会忽略js目录下所有js文件
8. 版本回退
8.1 回退到指定版本-根据第几个算
表示回到上次代码提交时的状态
git reset --hard head~0
表示回到上上次代码提交时的状态
git reset --hard head~1
8.2 回退到指定版本-根据版本号(哈希值)
可以通过版本号精确地回退到指定版本号
git reset --hard ac246a0
哈希值其实是一段很长的随机生成的秘钥,但是有前7位就能匹配到了,够用了
9. 开辟新分支
git branch 查看所有分支
创建分支:
git checkout -b <name名字> <template指定分支为模板,不填默认以当前分支为模板>
切换分支:
git checkout <name名字>
10. 合并
在要保留的版本中,
-本地:合并某个分支:
git merge <分支名>
-远程回来会自动合并:
git pull
11. 远程仓库
会遇到的坑,所以先说,这里建议多练习:
多人协同要先pull,解决冲突,再push
2个文件夹分别git init,使用同一个远程仓库,Apush完成后,此时B写了些东西后也push,就会遇到冲突了,实操了才会有感受,加油把少年。
因为代码冲突上传到远程后,不好修改,而且有冲突的话会上传不了,
pull保存到本地后,可以先解决冲突,再上传
远程仓库比如gitHUB中有https地址和ssh地址,ssh较为安全,想用他的话要先配ssh
11.1. 配置ssh
11.1.1. 查看是否存在ssh keys
$ cd ~/.ssh
若出现“No such file or directory”,则表示需要创建一个ssh keys。
11.1.2. 创建新的ssh keys
ssh-keygen -t rsa -C "邮箱地址"
一路回车即可,不要输入内容
11.1.3. cd ~/.ssh,查看生成了两个密钥
包括两个文件rd_rsa和id_rsa.pub
11.1.4. 复制公钥到github网站的ssh上
我的ssh文件在C:Users电脑用户名 .ssh目录下
记事本打开id_rsa.pub文件并拷贝,粘贴到github网站的ssh中。
是有 .pub的别搞错了
11.2. 上传数据到github或其他远程仓库
注意是把.git仓库中的内容上传,没有经过 add commit 的不会被上传
-git push 【地址】 【分支】
会把当前分支的内容上传到远程的master 分支上
例子:
git push <ssh地址> master
11.3. 从远程仓库下载覆盖本地
-git pull 【网址】 【分支】
会得到远程分支的数据:(注意本地要初始化一个仓库)
例子:
git pull <ssh地址> master
会在本地做合并处理
11.4. git clone 【网址】
会得到远程仓库相同的数据
11.5. 简化pull和push操作
11.5.1. git remote add 【远程仓库的别名】【ssh的地址】
例子:
git remote add origin <ssh地址>
这样之后就不用再输入网址了,网址用【origin】代替
之后就可以
git push origin master
11.5.2. -u,本地关联远程分支简化操作
当我们再push时,加上-u参数,那么在下一次push时,只需要 git push就可以上传代码
(加上-u后,git会把当前分支与远程的指定的分支进行关联。)
例如:
git push origin -u master
以后可以直接:
git push
*同时,由于分支已经关联,git pull也可以直接使用