Git简单教程
小白最近想做个自己的网站,于是先来研究一波Git,放一个比较详细的教程参看https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
以下是自己总结的
一、git安装配置
先从官网下载windows版的然后默认配置安装,这里就略过了
配置用户信息
点击git-bash,会弹出命令行,输入
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
–global:添加了此命令,那么更改的配置文件就是位于用户主目录下的,以后的项目都将默认使用此用户信息。若需要为某个项目使用其他用户信息,只需要去掉–global重新配置即可,新的配置保存在当前项目的.git/config中。
查看配置信息
$ git config --list //也可以将--list换为具体的某个环境变量如:user.name
创建repo
选择一个目录,可以用已有的或者mkdir新建,cd进去以后使用git init把当前目录作为仓库并初始化
二、基本使用
上传
初始化后,目录下会生成一个名为.git的目录,我们要将当前目录下的几个文件纳入git版本控制下,需要先用git add让git对文件开始跟踪,之后提交。(注意要放在你建立的仓库文件夹下才能跟踪)
把一个文件放到Git仓库只需要两步
使用 git add 命令将想要快照的内容写入缓存区, 而执行 git commit 将缓存区内容添加到仓库中。
$ git add readme.txt //把readme添加到仓库,一次commit可以多次add
$ git commit -m '此版本项目说明' //-m后面输入的是本次提交的说明,这样你就能从历史记录里方便地找到改动记录。
查看项目当前状态
$ git status -s //-s:简短输出
查看版本改动
$ git diff //尚未缓存的改动
$ git diff --cached //已缓存的改动
$ git diff HEAD //已缓存和未缓存的所有改动
$ git diff --stat //显示摘要
查看提交历史
$ git log
–oneline 查看历史记录简介版本
–graph 查看什么时候出现了分支、合并(后面写)
–reverse 逆向显示日志
–author 指定具体某一个作者
–since 和 --before 指定日期
–decorate 查看标签
其他log命令:https://git-scm.com/docs/git-log
克隆仓库
$ git clone <repo> <directory> //directory:本地目录
撤销修改
$ git checkout -- readme.txt
命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
git reset HEAD <file> //命令用于取消已缓存的内容,HEAD表示最新版本
删除
$ rm test.txt
一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用rm命令删了。在add以后,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了。现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit。文件就从版本库中被删除了。
另一种情况是删错了
$ git checkout -- test.txt
回退到上一个状态
三、远程仓库
终于到了使用github这一步了,写博不易
首先,注册一个github账户,本地Git仓库和GitHub仓库之间的传输是通过SSH加密,所以我们需要配置验证信息:
1. 创建ssh
检查ssh
打开终端,运行 cd ~/.ssh
如果路径下无文件跳过下一步操作,如果有文件代表已有ssh key,需要进行备份
备份已有ssh
mkdir key_backup
mv id_rsa* key_backup
生成ssh key
ssh-keygen -t rsa -C "email@example.com" //注册的邮箱
之后回车,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对。
2. 将ssh key添加到github上
在setting里面找到ssh and GPG keys,输入id_rsa.pub里的内容,title随意命名
3. 测试链接是否成功
在终端输入
ssh -T git@github.com
这里会要求你输入SSH key密码,如果刚才生成SSH key时未输入密码,密码就为空。
我这里报了一个错
The authenticity of host ‘github.com (13.250.177.223)’ can’t be established.
搜索以后发现是缺少文件,输yes即可
4. New repository(新建仓库)
在github右上角找到你的仓库,创建一个新的仓库
创建好以后,根据提示,关联本地和GitHub仓库
$ git remote add origin https://github.com/yuanfeisiyuetian/blogrepo.git //找自己的复制,这个是我的仓库
$ git push -u origin master
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。
从远程仓库下载新分支与数据
git fetch
从远程仓库提取数据并尝试合并到当前分支
git pull
四、分支管理
几乎每种版本控制系统都支持类似的分支,使用分支从开发主线中分离,在不影响主线的同时继续工作
创建分支命令:git branch (branchname)
切换分支命令:git checkout (branchname)
git checkout命令加上-b参数表示创建并切换,相当于以上两条命令
列出分支命令:
git branch #当前分支前面会标一个*号
合并分支命令:git merge
–no-ff参数,表示禁用Fast forward,可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
删除分支命令:git branch -d (branchname)
合并冲突
就是些时间问题,我个人开发应该不太会遇到叭大概
emmmm原理请参考最上面的链接
git status可以查看冲突文件,手动修改以后重新add,commit
git log 可以查看分支合并情况
其他
bug分支
详细说明
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
Feature分支
详细说明
开发一个新feature,最好新建一个分支;
如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。
多人协作
详细说明
查看远程库信息,使用git remote -v;
本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
rebase
详细说明
rebase操作可以把本地未push的分叉提交历史整理成直线;
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
重要的一点!
把要忽略的文件名填进.gitignore,Git就会自动忽略这些文件
.gitignore文件的编写,emmmm以后更新