首先大家先明白git不过就是一个版本控制器 还有svn(这个需要联网才可以使用,属于集中式管理,而git为分布式管理,在本地也有版本库,这样即使一个地方的版本库出现问题也不用担心了)也属于版本控制器中的一种,而github和oschina开源中国 gitee码云 是属于远程仓库(也就是用于保管你的的代码的远程库) 一般来说你放在上面的代码都是开源的,不公开的项目存放是需要费用的,当然你也可以搭建一个属于自己的git仓库git服务器 然后将个人的项目存放在上面
因为我本人也是一个普通的大三学生也即将进入实习,但此前还未使用git多人合作过,但也有大致的了解,接下来我会带领大家学习git
大致流程如下:
注册github账号 下载git
使用ssh密匙
git上配置个人信息
github上创建仓库
git推送项目到仓库上面
还有其他各种操作
github上搭建个人page项目展示(纯静态)
注册github和下载git软件
1、进入官方网站
https://github.com
2、找到右上角的sign in
注册 填写个人信息即可
3、下载软件
上网搜git官网自行下载
安装完后可以在桌面看到这个图标
或者单击鼠标右键可以看到
git bash 选项
使用密匙ssh登录
在未使用密匙之前每次将项目推送到github的仓库上时候都需要填写账号密码,这换谁都感觉操心所以使用ssh是最好的了
首先如果你是第一次使用git就得先完成以下
git init初始化一个仓库 当前路径下会生成一个隐藏文件目录.git这个是一个管理git仓库的文件夹
注意
当前生成的git仓库还是一个空的仓库也就是不属于任何人的仓库
设置用户账号和邮箱
Git config --global user.name ‘webcyh’
Git config --global user.email ‘1992281294@qq.com’
则下面的是设置编辑器默认使用的vim编辑器有关vim编辑器可以查看我之前编写的vim的使用 这个如果玩的好 鼠标基本用不上了
Git config --global core.editor ‘vim’
接下来是git创建密匙ssh
执行命令
ssh-keygen -t rsa -C "你的邮箱地址" 接着回车
下面出现
中间出现的Enter file inwhich to save 后边写的是你要保存的ssh文件路径
接下来的要求输入passphrase 直接回车就行
最后到保存的路径下可以看到两个文件
第一个是私钥要妥善保管
第二个是公钥可以公开的
接下来要将公钥上的内容放到github上面
将pub后缀的文件的内容复制下来
打开github 在管理(setting)当中找到
再次点击添加密匙
将你刚才获取到的ssh密匙贴在上面保存就行
判断是否成功?
git -T git@github.com
看到上面的信息说明你的公钥已经起作用了
接着可以手动更改你当前git上保存的仓库地址后边我会给出命令添加地址的方式
首先在当前目录下查看隐藏的目录可以看到.git 打开可以看到
打开可以看到目录文件如下
简单介绍一下里边文件的用处
这里为了可以查看git的使用可以使用
git --help命令此时,可以看到显示的git的相关参数为了后面的方便使用可以将内容重定向到一个文件夹当中
使用
git --help>>./test.txt 输出内容到指定文件当中
cat test.txt查看文件内容
内容如下
usage: git [--version] [--help] [-C <path>] [-c <name>=<value>] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path] [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare] [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>] <command> [<args>] These are common Git commands used in various situations: start a working area (see also: git help tutorial) clone Clone a repository into a new directory init Create an empty Git repository or reinitialize an existing one work on the current change (see also: git help everyday) add Add file contents to the index mv Move or rename a file, a directory, or a symlink reset Reset current HEAD to the specified state rm Remove files from the working tree and from the index examine the history and state (see also: git help revisions) bisect Use binary search to find the commit that introduced a bug grep Print lines matching a pattern log Show commit logs show Show various types of objects status Show the working tree status grow, mark and tweak your common history branch List, create, or delete branches checkout Switch branches or restore working tree files commit Record changes to the repository diff Show changes between commits, commit and working tree, etc merge Join two or more development histories together rebase Reapply commits on top of another base tip tag Create, list, delete or verify a tag object signed with GPG collaborate (see also: git help workflows) fetch Download objects and refs from another repository pull Fetch from and integrate with another repository or a local branch push Update remote refs along with associated objects 'git help -a' and 'git help -g' list available subcommands and some concept guides. See 'git help <command>' or 'git help <concept>' to read about a specific subcommand or concept.
接下来我会介绍git的工作流程先看下面的图片展示
以上可以看出 主要包括三部分 工作区(也就是你当前包含.git目录的目录)、版本库 、以及暂存区 也称为索引
暂存区位于.git 当中的index
在这里为了更加形象的描述
这里可以将则三部分看成三个目录
工作区、暂存区、版本库
比如当前在工作区添加test.txt 文件
在使用git add * 或者 git add file1 file2 后暂存区被更新 同时同时工作区修改或者添加的内容被写入对象库当中的一个新的对象当中同时该对象的id被记录在暂存区的index上
使用git commit 提交时 当前暂存区的目录被记录在版本库当中,同时当前master指向的就是暂存区的目录
git reset HEAD 将master指向的目录更新到暂存区 工作区不受影响(因为此时暂存区可能已经更新了但并没有commit 更新到版本库上因此可以使用该命令恢复到上一次的版本 注意此时还没有push到远程库 但此时也算是一个版本了只是尚未开源)
注意:
此时删除工作区额test.txt文件后再次git add *也会更新到暂存区 此时相当于并集 覆盖掉暂存区的相同部分但暂存区原本存在test.txt 即使工作区删除test.txt但暂存区还是存在该文件应该按一下步骤执行命令
1、首先使用 git diff查看暂存区和工作区有哪些不同如下
此时暂存区状态如下 说明暂存区新添加一下文件 同时此时工作区也有该文件
删除工作区的test.txt文件
git status 说明工作区有文件被删除
此时暂存区还是存在该文件 如果直接commit到版本库也是可以的
接下来执行
git status
还是显示工作区有文件删除(工作区和暂存区目录不一致会显示出来) 这个说明上次的工作区并没有同步到暂存区在而同步到版本库因此
下次将暂存区同步到版本库之前先使用
以下命令
git diff 查看暂存区和工作区的区别
由上面我们知道暂存区还有个文件test.txt没有被删除
执行
git rm --cached test.txt删除暂存区的test.txt文件
再次使用
git diff 此时暂存区和工作区已经同步了
这个时候就可以将内容保存到版本库当中了
在以上过程中可能会用到一下命令但相当危险 也许一不小心前面做的内容都没了
git checkout . 或者 filename将暂存区的内容更新到工作区 如果工作区的内容还未更新在暂存区就会丢失
使用
git checkout HEAD . 或者 filename可以将master指向的目录更新到暂存区和工作区
使用
git rm 删除暂存区内容和工作区内容
或者Git rm --cached 只删除工作区内容
最后还有一个比较重要的一点
分支管理
git branch 查看所有分支 或者查看当前所在的分支
git checkout test 选择当前操作的分支
git branch -d test 删除分支
git branch test 添加分支
git merge 合并分支
git diff 查看冲突
git merge 再次合并
查看日志信息
git log 这个会详细显示最近的提交的内容以及日期
git log --oneline 只显示每次提交的commit内容
git log --oneline --reverse
查看某段时间内的提交
git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges
给提交添加标签
git tag -a v1.0 给这次提交添加标签
给之前的提交贴标签
可以这样
首先使用
git log --oneline 查看提交的版本
见前面的记录的id复制下来
git tag -v1.0 id
这样再次log可以看到已经打上标签了
将当前的版本恢复到某个版本
git reset -hard 版本id
git push origin -f master 强制覆盖调取远程库上的版本
后边还有如何搭建个人git服务器作为远程仓库
后续。。。。