主要内容
Git
1.版本控制
用来进行版本迭代。下面学习主流的版本控制器Git。
Git是目前世界上最先进的分布式版本控制系统。
2.Git环境配置
打开 [git官网] https://git-scm.com/,下载git对应操作系统的版本。
所有东西下载慢的话就可以去找镜像!
官网下载太慢,我们可以使用淘宝镜像下载:http://npm.taobao.org/mirrors/git-for-windows/
- 先卸载。之前没有安装过直接安装即可。
直接反安装即可。清理环境变量(环境变量只是为了全局使用而已!)、然后在控制面版中将git卸载掉。 - 直接下一步安装
参考链接:Git 详细安装教程(详解 Git 安装过程的每一个步骤)
3.启动Git
安装成功后在开始菜单中会有Git项,菜单下有3个程序:任意文件夹下右键也可以看到对应的程序!
- Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多(清屏的命令clear)
- Git CMD:Windows风格的命令行(清屏的命令cls)
- Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令
4.常用的Linux命令
1)、cd : 改变目录。
2)、cd . . 回退到上一个目录,直接cd进入默认目录
3)、pwd : 显示当前所在的目录路径。
4)、ls(ll): 都是列出当前目录中的所有文件,只不过ll(两个ll)列出的内容更为详细。
白色代表是文件,绿色代表是程序,紫色代表是目录。
5)、touch : 新建一个文件 如 touch index.js 就会在当前目录下新建一个index.js文件。
6)、rm: 删除一个文件, rm index.js 就会把index.js文件删除。
7)、mkdir: 新建一个目录,就是新建一个文件夹。
8)、rm -r : 删除一个文件夹, rm -r src 删除src目录
rm -rf / 切勿在Linux中尝试!删除电脑中全部文件!
9)、mv 移动文件, mv index.html src index.html 是我们要移动的文件, src 是目标文件夹,当然, 这样写,必须保证文件和目标文件夹在同一目录下。
10)、reset 重新初始化终端/清屏。
11)、clear 清屏。
12)、history 查看命令历史。
13)、help 帮助。
14)、exit 退出。
15)、#表示注释
5.Git配置
git config -l
查看不同级别的配置文件:
#查看系统config
git config --system --list
#查看当前用户(global)配置
git config --global --list
- Git相关的配置文件:
1)、Git\etc\gitconfig :Git 安装目录下的 gitconfig --system 系统级
2)、C:\Users\Administrator\ .gitconfig 只适用于当前登录用户的配置 --global 全局
1.配置用户名(提交时会引用)
git config --global user.name “你的用户名”
eg.git config --global user.name “yyy”
这里的用户名自定义,和你自己的GitHub没有任何关系。
2.配置邮箱
git config --global user.email “你的邮箱”
eg.git config --global user.email “49xxxxxxx@qq.com”
这里的邮箱也自己配置,和你自己的GitHub没有任何关系。
3.编码配置
避免git gui中的中文乱码
git config --global gui.encoding utf-8
避免 git status显示的中文文件名乱码
git config --global core.quotepath off
4.其他
git config --global core.ignorecase false
配置完成之后显示:
6.Git基本理论
Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:
可以使用git log
命令显示从最近到最远的提交日志,红色框框住的是commit id(版本号)
。
6.0 git 一次性添加多个文件
背景:当修改了多个文件,需要逐个添加文件到暂存区,有点繁琐。
-
文件之间用空格隔开
git add file01 file02 file03
-
加参数
git add .
: 添加被修改的和新建的文件,不包括被删除的文件;
git add -u
: 添加所有被修改的和被删除的文件(已经在暂存区的文件),不包括新建的文件;
git add -A
: 添加被修改、被删除、新建的文件(即所有文件); -
添加指定目录下的某类文件
git folder/*
: 添加该文件夹下的所有文件
git folder/*.js
: 添加该文件夹下的js文件
6.1 版本回退
在Git中,用HEAD表示当前版本,也就是最新的提交1094adb…(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^ ,上上一个版本就是HEAD^^ ,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
问题:回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?
回答:在Git中,总是有后悔药可以吃的。当你用$ git reset --hard HEAD^回退到add distributed版本时,再想恢复到append GPL,就必须找到append GPL的commit id。Git提供了一个命令git reflog用来记录你的每一次命令。
总结:
- HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
- 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
- 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
6.2 撤销修改
- 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
- 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作。
- 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
git checkout -- file
可以丢弃工作区的修改。
7.使用GitHub或Gitee
首先在GitHub上创建一个仓库。
在本地的learngit仓库下运行以下命令,将本地仓库与GitHub上创建的新仓库进行关联。
git remote add origin git@github.com:michaelliao/learngit.git
# 第一次推送master分支的所有内容
git push -u origin master
# 此后,每次本地提交后,只要有必要,就可以使用命令推送最新修改
git push origin master
# 查看远程库信息
git remote -v
解除本地和远程的绑定关系,并不是物理上删除了远程库。
git remote rm origin
生成密钥
ssh-keygen -t rsa -C "你注册github时使用的邮箱"
8.IDEA中集成Git
9.分支的使用
- 查看分支:git branch
- 创建分支:git branch
- 切换分支:git checkout 或者git switch
- 创建+切换分支:git checkout -b 或者git switch -c
- 合并某分支到当前分支:git merge
- 删除分支:git branch -d
10.使用git log进入git bash中的下一个命令
问:使用Git Bash时,我输入命令:
git log
它显示了所有日志.但现在我想做第二个命令.所以我按住向下箭头到达日志的底部,它只是说(END).如何进入下一行,以便输入下一个命令?
答:在键盘上按下q键。
问题
1.git如何避免”warning: LF will be replaced by CRLF“提示?
2.git: ‘switch’ is not a git command. 问题解决办法
3.git@github.com: Permission denied (publickey). fatal: Could not read from remote repository的问题解决
4.github多台电脑使用一个账号
5.上传项目到 GitHub:如何用同一个 github 帐号在两台电脑上同步开发?/ 如何协同开发?
6.坑:ssh: connect to host github.com port 22: Connection refused
问题1:
执行命令之后,报错。重新设置密码和账户名 重新生成ssh文件都试了几遍没啥用。
$ git push -u origin master
Connection closed by ::1 port 22
fatal: Could not read from remote repository.
或
Connection reset by 20.205.243.166 port 22
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
解决方法:
重点注意:需要把加速GitHub的关闭掉。首先使用ssh -T git@github.com
看看能否连接上,结果如下
然后,在GitHub上配置SSH keys,再次测试,结果如下:
$ ssh -T git@github.com
Hi xxxxx! You've successfully authenticated, but GitHub does not provide shell access.
最后把本地的内容推送到远端
Connection reset by 20.205.243.166 port 22fatal: Could not read from remote repository.Please mak(提示了自己解决方法,和网络相关不能开启vpn)
问题2:
使用Git 报错 fatal: Unable to create … git index.lock
问题3:
vim中按两下d,快速删除一行
问题4:
git中出现>这个符号怎么退出?
ctrl + d
即可退出。
问题5:
成功解决:error: src refspec master does not match any
参考资料:
1.廖雪峰老师的Git教程,适合随用随查
理解Git!实习老板要我用Git协作 (好)
2.B站视频:【狂神说Java】Git最新教程通俗易懂
3.git提交代码、代码回滚的常用命令,及 添加多个文件和文件夹的多种方式