gitd的学习和使用
1. git是什么
Git 是一款源代码管理工具(版本控制工具), 我们写的代码需要使用 git 去管理。管理工具有很多 如SVN vss vcs 等 我们学习的是 git。
2.git 的安装
2.1 前往git官网下载git软件 网址:https://git-scm.com/download/win
2.2 直接双击安装即可。点击下一步,不修改任何设置 ,知道安装开始 ,就自动安装
2.3 安装完成之后,在桌面任意位置右键单击,看到git 的图标(如下图),证明git 安装成功。
2.4 Git GUI Here 是git 的图形化操作界面 Git Bash Here 是git 命令输入窗口
3. git 的使用
3.1初始化 Git 仓库(这个仓库存放的是我们的项目代码进行备份的文件)
在项目目录中右键单击,选择Git Bash Here 后单击打开命令窗口,输入命令: git init 回车. 这是就会创建一个 .git 的隐藏文件夹,他里面储存我们备份的文件。此时我们就可以在项目文件中开始写代码了。
3.2配置使用者的用户名和邮箱(配置个人信息)
每一次备份 都会把备份者的信息储存起来 --global表示全局配置,即配置一次就可以
配置用户名: git config --global user.name "zhangsan" 配置邮箱: git config --global user.email "zhangsan@sina.com“”
3.3把代码储存到 git 仓库中
3.3.1 先把代码放到仓库的大门口 命令: git add “文件的路径” 例如:git add "./readme.md 意思是把当前目录下的 readme.md 文件放到git 仓库的大门口
3.3.2 把大门口文件放到仓库的里面 命令: git commit -m "这是我们完成的第一个功能” , git commit 就是不管我们仓库门口有多少文件,此时会全部都将门口的文件放到仓库里面, -m 的作用是对此次放入到仓库代码的一个说明,m 是message 的意思,后面的说明内容需要用引号包裹。当出现如下图片的提示,说明我们的文件已经成功放到git 仓库。
3.3.3 当我们项目中有多个文件修改时,需要储存到git 仓库, 我们可以使用 git add ./ 来提交到仓库大门口(暂存区) ./ 表示项目文件夹下所有修改过的文件和新建的文件。例:
3.3.4 我们每次都要执行 git add 文件路径 比较繁琐 这时 我们只需要执行 git commit --all -m "这是一次性把代码放到仓库中(版本库)", all 表示所有的修改过的文件
3.4 工作区、暂存区、版本库的概念
当我们执行代码 git add 的时候 把代码放到仓库大门口,大门口就被称作为暂存区。我们的项目文件中被称作为工作区(不包含 .git)。当我们执行git commit 命令时,是把文件放到仓库的里面,这里面被称为版本库。
3.5 git status 命令查看状态 (查看我们的代码是否放到了git 仓库中)
当我们了代码后,还没有执行放到git仓库的命令时(没有放到仓库大门口时,没执行git add),我们执行命令git status,有如下提示
当我们了代码后,并且将代码放到git仓库的大门口时(放到仓库大门口时,执行git add但是没实行git commit),我们执行命令git status,有如下提示
当我们了代码后,并且已经将代码完全放到git仓库时(已经执行过git commit -m " "),我们执行命令git status,有如下提示
3.6 gitignore 设置忽略文件
在gitignore 在这个文件中可以设置要被忽略的文件或者目录,忽略的文件就不会提交到 git 仓库中。 在 .gitignore 文件中可以书写被忽略文件的路径,以 / 开头,一行写一个路径,这些路径所对应的文件都会被忽略,不会被提交到仓库。如: /.idea (.idea文件被忽略) /js (在js文件夹下的所有文件都会忽略) /js/*.js (在JS文件夹下的所有js文件都会忽略)
3.7 git 日志查看
查看我们提交过多少次代码 命令: git log
通过git log --oneline 可以查看简介版本的日志
3.8 git 版本回退、 git reflog 查看版本操作记录
回退到指定的版本 命令: git reset --hard Head~0 表示会退到上一次代码提交的状态, 0 代表索引
我们还可以通过版本号实现回退 命令: git reset --hard b42839c 表示回退到版本号为b42839c 的那次提交的代码,例如
如果不小心我们关闭了 git 命令窗口 当我们再次打开时,git log --oneline 的版本日子都被清空了 我们无法记住很多版本号 这时就需要 命令: git reflog 它可以看到每一次版本切换的记录,可以看到所有提交的版本号:
3.9 git 创建分支, 查看/切换/合并 分支的操作
当我们在创建一个功能未完成时,但是有需要储存到git仓库时,我们可以自己创建一个分支(只有自己可以使用),命令: git branch dev(或者是 git checkout -b dev) 意思是我们创建了一个叫dev 的分支。在刚创建时 dev分支里面的东西(我们提交的代码)和 master 分支里面的东西是一样的。
查看分支: 通过命令: git branch 这是会显示我们创建的分支和主枝干(master) ,那个前面带有 星号※,表示是我们当前正处于的那个枝干,如图:
切换分支: 命令 git checkout 分支名 例如:git checkout dev (切换到dev分支) git checkout master (切换到master主分支)。
注意:如果我们的功能未完成就需要提交到git仓库时,我们必须先切换到自己创建的分支,然后再执行 git add 文件路径 去提交,这样才能提交到自己创建的分支上
合并分支: 命令: git merge dev 此命令是在master分之下执行 表示把 dev 分支合并到 master上。在别的分支下也可执行,表示 git branch 命令输出的前面带有 * 的分支与merge后面跟的分支合并。
注意: 如果我们想把分支提交的代码合并到主分支(master)上面,供大家一起使用,则需要先将分支通过 git checkout mater 切换到主分支上,然后通过git add ./.....再提交代码
删除分支: git branch -d 要删除的分支的名称 例如: git branch -d dev (删除的dev 分支) 注意: 该命令不能将要删除的分支下执行,如我们要删除dev分支,则不能再dev分支下执行该命令,需要切换到主分支(master)或者其他分支
如果我们在分支和主分支(master)同时做了修改,然后将分支合并到主分支(master)上时,就会出现冲突,如此下图。我们可以手动处理,如图
3.10 通过 git push 命令,把本地代码推送到服务器上
我们可以通过git 把代码上传到 gitHub 的服务器上 ,别人可以随时通过命令去下载。 GitHub网址: https://github.com/ (当做github服务器来用)
创建GitHub仓储: 进入GitHub官网 注册登陆后,点击右上角的加号,选择第一项 new repository (创建仓储)。
在命令窗口运行: git push 【地址】 master 这样就会把当前的分支长传到远程的 master 分支
示例: git push https://github.com/loverainbowBei/gitDemo.git master
成功上传到GitHub 服务器的样式 如下图:
从远程服务器拿代码(方法1 git pull 【地址】master): 当我们需要从GitHub远程服务器上把别人的代码拿过来自己用时,需要用到 命令: git pull 【地址】master 这里不一定是master 只是master情况较多,这样就把远程的数据得到了(注意: 拿远程数据时,需要现在本地创建一个仓储),多次执行,数据会合并,不会覆盖
从远程服务器拿代码(方法2 git clone 【地址】): 会得到远程仓库相同的数据,多次执行会覆盖本地内容,clone会连同仓库的文件夹一起下载下来,一般只有在第一次从远程仓库下载代码时 使用
3.11 通过ssh 方式上传代码
ssh方式上传代码。 生成公钥 和 私钥,在任意目录下打开命令窗口 命令:ssh-keygen -t rsa -C "邮箱",如下图所示,表示秘钥生成成功:
给GitHub配置ssh 公钥。
打开C盘 -->用户 --> 用户名(我这里是LiRun)-->.ssh文件夹 --> id_rsa(私钥) id_rsa.pub公钥()--> 将公钥文件用编辑器打开 -->复制里面所有代码(字符窜)-->回到GitHub官网单击登录图标 --> 选择setting --> 左侧菜单栏选择 SSH and GPG keys --> 单击右侧New SSH key 按钮 --> title 名可以随便取 key的输入框中将刚才复制的字符串粘贴进去 -->点击Add SSH key -->SSH key添加完成
把我们的代码上传到远程服务器,通过ssh方式
和https一样。先单击登录旁边的加号 --> 选择 new repositry,创建一个新的仓储,-->命名,创建完成 --> 在新建的仓储中选择SSH并且复制其地址 --> 在命令窗口输入 : git push [地址] master --> 上传成功 如下图
注意:当多人已开发时,大家都会向GitHub上传代码,同样也会一起冲突,需要我们手动修改,正常情况下我们先从GitHub上拿到最新的数据,然后自己写了以后,再将代码上传至GitHub,但是我们修改完代码上传之前,别人又一次将修改的代码上传了GitHub,此时我们在用git pull 拿到最新的代码时,那么就会造成代码冲突,这是就需要我们手动修改,冲突的代码还在编辑器都显示(别人刚刚上传的和你自己即将要上传的),我们决定要留下哪一个,然后把不需要的删除,现在本地仓储储存,git add ./ git commit -m " ". 然后再次上传到远程 git push 【地址】master。
通常我们在修改完成代码,需要上传服务器时,要先pull,又因为如果服务器的版本和本地的版本不同,我们可以先把冲突解决,然后把最新的版本上传(push)至服务器
3.12 pull 和 push 的简写
用一个变量代替服务器地址, 命令 git remote add 变量名 【地址】 例如: git remote add origin git@github.com:loverainbowBei/sshDemo.git
那么。我们再pull 或者 push 是 ,就可以写简写为 git pull/push origin master 即可
我们使用这个命令 git pull / push origin -u master 执行一次时。下一次再 pull 或者 push 时 就可以直接写 git pull 或者 git push 。因为加上 -u 执行一次之后,git 会把当前分支与远程指定的分支进行关联,他就相当于 git pull / push origin master
0f1db23
|