一、 命令的初级使用
- Git既试用于Linux系统,也适用于Window系统。
- ls Linux系统下显示当前目录的内容列表
dir Window系统下显示当前目录的内容列表 - mkdir 目录名 创建一个目录 如:mkdir demo ,创建一个demo的目录
- cd 目录名/ 切换到指定的目录 如: cd demo/ ,切换到demo的目录中
- touch 文件名 创建一个文件 如:touch hello.txt , 创建一个hello.txt的文件
- vim 文件名 编辑一个文件 如:vim hello.txt , 编辑一个hello.txt的文件
过程:按 i 键进入vim文本编辑器的编辑模式,之后进行输入文本的内容,然后按 esc 键,再按 : 键,最后按 wq 键进行保存文件 - cat 文件名 展示文件的内容 如:cat hello.txt , 展示hello.txt文件中的内容
- rm -rf 文件名 删除文件 如: rm -rf hello.txt , 删除hello.txt这个文件
- git init 文件名 初始化本地仓库 如: git init demo 初始化demo这个文件,用来作为git的本地仓库
- ll 统计当前的文件或者是目录总数 如: ll 显示为total 3 表示当前的文件名或者是目录名的总数为3
- ls -al 详细显示并且统计当前的文件目录
注意: ./ 当前目录 …/ 上一级目录 .git/ 当前的git目录
r 可读权限 w 可写权限 x 可执行权限 - ls -ah 只显示当前的文件目录名,不做详细展示
- git add 文件名 将文件添加到暂存区里面,建立与git的联系
如:git add test2.txt , 将test2.txt这个文件添加到git的暂存区里面 - git commit -m “提交日志信息” 将暂存区文件提交到本地仓库里面,版本库里面
如:git commit -m “git仓库的第一次提交” 将暂存区文件添加到本地仓库里面,提交日志信息为 git仓库的第一次提交 ,会有一个版本号出现
git commit 提交 -m -message,是提交的日志信息,本次提交的说明信息,说明本次提交做出了哪些修改,做了哪些事情
总结: 将文件添加到本地仓库的步骤为 (1)创建一个文件 (2)git add 文件名
将文件添加到暂存区里面 (3) git commit -m “提交修改日志信息” 将文件提交到本地仓库(版本库)里面 - 工作区、暂存区以及版本库的理解:
工作区就是为电脑能够看到的目录,隐藏目录.git就是为git的版本库,在版本库里面stage就是为暂存区,默认的分支就是为master。每一个时间节点也会创建一个分支,每一个时间节点对应的一个版本,只能有一个指针head指向一个版本。
工作区通过git add 添加到版本库的暂存区里面,再通过git commit将暂存区内容一次性提交到当前分支,也就是往master分支上提交修改。 - git diff 文件名 当文件被修改以后想要比较差异不同的时候,查看工作区与版本库里面最新版本的区别
如git diff test2.txt 比较test2.txt文件的修改后的工作区以及修改前的版本库里面的差异 - git status 查看当前工作区的状态
出现 Changes not staged for commit: 说明修改没有被缓存,需要使用git add
文件名,将文件添加到暂存区里面,如 git add test2.txt
出现 Changes to be committed: 说明修改需要被提交,需要使用git commit -m “提交信息” - git log 详细显示查看历史的每次提交版本信息,出现head指针的版本是为当前分支当前版本所在的位置
- git log --pretty=oneline 查看历史的每次提交版本信息,只显示版本号以及相关指针
- git reset --hard head^ 版本回退到上一个版本,head上有多少个^就回退到哪一个版本上
- git reset --hard commitId 根据版本的id回退到指定的版本上,commitId为版本的id号,一般只取前七位
如:git reset --hard 369ae13 回退到版本号为369ae13的这个版本上 - git reflog 看到以前的每次执行动作git
总结:对于版本的回退或者是前进,只需要通过git log 或者是git reflog查看历史的每次提交版本信息或者是以前的每次执行动作,找到commit id,提交版本的id。然后通过git reset --hard commitId ,根据指定的版本id回退到指定的版本上。 - List item
- git checkout – 文件名 撤销本地工作区间的修改,checkout 检出
当对本地工作区间的代码进行修改以后,而本地仓库的代码并没有修改,就是并没有git add,这个时候想要撤销本地工作区间的修改,可以使用git checkout – 文件名,用本地仓库的代码覆盖本地工作区间的代码。
如:git checkout – test2.txt 撤销本地工作区间test2.txt的修改 - git reset HEAD 文件名 撤销暂存区的修改,reset 重置
当对本地工作区间的代码进行修改以后,并且git add 提交到暂存区以后,但是并没有git commit,暂存区代码已经修改了,本地仓库的代码没有进行修改,这个时候想要撤销暂存区的修改,可以使用 git reset HEAD 文件名, 撤销了暂存区的修改,回到了本地工作区间的修改。如果还想撤销本地工作区间的修改,使用git checkout – 文件名。
如: git reset HEAD test2.txt 撤销暂存区test2.txt的修改 - SSH协议: SSH协议是非对称加密协议,包含传输层协议、用户认证协议和连接协议。SSH是包含秘钥和公钥这两把钥匙的,秘钥只能够有一把,但是公钥可以有多把的。传输数据通过秘钥进行加密,然后上传服务端,服务端通过公钥进行解密。如果解密成功说明公钥就可以解密私钥的数据。SSH协议的好处是传输的数据更加比较安全,而且由于是压缩后的数据,所以传输的速率是更快的。
- HTTPS协议:HTTPS协议是对称加密协议,加密者与解密者是使用同一把秘钥,非常不安全的。
- ssh-keygen -t rsa 创建ssh秘钥,会生成id_rsa秘钥以及id_rsa.pub公钥这两把钥匙。
- git remote add origin 远程仓库的地址 与远程仓库建立连接
如: git remote add origin git@gitee.com:X1827021/test01.git - git push -u origin master 将本地仓库推送到远程仓库的master分支
- git push 将本地仓库的修改信息推送到远程仓库里面
- git pull 将远程仓库里面的信息拉取到本地仓库里面
- git checkout -b 分支名 创建并且切换
如: git checkout -b dev 创建dev分支并且切换到当前的dev分支
注意: 对于分支进行修改以后,需要进行git add 将分支修改的内容添加到暂存区里面,同时git commit -m “提示修改信息” 对于进行提交到版本库里面。 - git branch 查看所有的分支,带有*号的为当前分支
git checkout 分支名 切换分支
如: git branch master 切换到master的默认分支里面
35.git merge 分支名 对于分支进行合并到当前的分支里面
如: git merge dev 将dev分支合并到当前的master分支里面
36.git branch -d 分支名 删除指定的分支
如:git branch -d dev 删除dev分支
37.git分支的应用场景:在开发一个项目的时候,如果需要处理新的项目需求的时候或者是遇到一个bug需要紧急修复的时候,切换分支,这个时候需要创建一个分支用于处理新的项目需求或者是处理bug,测试成功后,将新的项目需求的分支或者是处理修复bug的分支合并到主分支上,并且推送到生产环境,再将之前创建的分支进行删除。
注意:生成环境中,master分支为稳定版本,默认版本,最后都需要合并到master分支上。 - git stash 暂存本地文件的修改
git stash pop 恢复暂存本地文件修改的内容
git stash list 查看每个分支对应的保存位置,然后恢复指定的stash
git stash drop 删除stash的内容
git stash apply 恢复stash的内容
39.分支合并的冲突问题:
创建一个新的分支,比如dev,对其进行修改,然后再git add 以及 git commit -m “提交信息” 。 切换master分支,对其进行修改,然后再git add 以及 git commit -m “提交信息”。最后,进行合并分支 git merge dev,会出现分支合并的冲突问题。解决合并冲突问题的办法为三个,两次分支修改都保留、两次分支修改都不保留以及两次分支修改协商保留一个。在修改协商以后,进行保存。之后git add 以及 git commit -m “提交信息” ,再进行 git merge dev 合并分支,这个时候合并冲突分支问题就已经解决了。
40.git satsh 暂存本地工作区间的修改
当在新建的分支,比如dev分支进行修改的时候,但后来出现了bug,需要切换到master的分支上进行bug修复,此时dev分支修改的内容并不想要提交,这个时候可以使用git stash 将修改的本地文件暂存在本地工作区间里面,然后就可以切换到master分支上进行bug修复。 - git stash list 出栈,查看相关的修改,以及次数的显示 栈是先进后出
- git stash pop 出栈,会将暂存本地工作区间的修改进行出栈显示,这个时候就可以看到之前暂存本地工作区间的修改了
注意: 如果是有多次修改进行stash的暂存本地工作区间,那么在stash list以及stash pop的时候,在第二次出栈的时候会报错出异常,这个时候需要git checkout,进行检出,之后就可以进行stash pop出栈了。
43.git stash apply 恢复显示stash的内容,但是恢复后stash的内容并不删除,删除需要使用 git stash drop
注意: git stash pop 在恢复显示stash的内容后会将stash的内容删除
命令可以接stash 的序列号,比如: git stash pop stash@{0}
44.IDEA工具创建git工程
首先创建一个文件目录用来存放项目,进行git版本管理,一般来说是一个项目一个目录,单项目管理。然后使用IDEA工具创建一个项目放在这个目录中。在写完项目代码以后,选择顶部的VCS,之后就选择Import into Version Control,然后就选择Create Git Repository,为这个项目创建git版本库。项目代码中的文件就会变成红色,红色表示为新建文件,没有被添加到暂存区里面,需要被add添加到暂存区里面。但是这个时候需要忽略一些文件添加到暂存区里面。打开项目文件的版本库,使用git工具将.idea、target、*.iml、out等等文件添加到忽略文件里面,会生成.gitignore文件。如果后续还要添加其它的忽略文件,在这个里面进行添加就可以了。接下来选择Ctrl+A全选,右击选择Git,选择Add添加到暂存区里面。在这个时候文件就会变成绿色,绿色表示文件添加到暂存区里面,但是还未被提交。然后选择Ctrl+A全选,右击选择Git,选择Commit File,将暂存区文件进行提交到版本库里面就可以了。在这个时候文件就会变成白色,白色表示文件已经提交成功了。如果在已经提交的文件中进行修改,有做删除和添加的操作的时候,这个时候文件就会变成蓝色,蓝色表示提交过了,但是本次修改并没有提交。如果在已经提交的文件中进行添加的操作的时候,这个代码的部分就会变成有区块,变成绿色,表示添加到暂存区,但未被提交。点击区块,选择有两个箭头的图标,会出现代码修改前后的差异比较,非常方便,会出现Diff for Range。
注意:文件颜色的区分
红色文件:表示文件为新建文件,没有被添加到暂存区里面,需要被add添加到暂存区里面。
绿色文件:表示文件添加到暂存区里面,但是并没有被提交。
白色文件:表示文件已经添加到暂存区里面和提交了,正常文件。
蓝色文件:表示文件已经提交过了,但是本次修改并没有被提交。
45.IDEA工程推送项目到远程
如果想要将项目推送到远程上,比如推送到码云gitee上,那么先在码云上创建一个项目仓库,然后将远程的地址复制下来。Ctrl+A全选,选择Git,选择Repository,选择Remotes,将远程的地址进行添加进去。下一步进行Ctrl+A全选,选择Git,选择Commit Directories,进行提交代码。最后Ctrl+A全选,选择Git,选择Repository,选择Push,就可以将项目推送到远程上去了。
46.IDEA工程从远程拉取到本地
当在远程进行修改以后,想要拉取到本地的时候,Ctrl+A全选,选择Git,选择Repository,选择Pull,就可以将项目从远程拉取到本地了。