Git 简介
免费、开源的分布式版本控制系统,可用于处理大小项目。
Git与其他版本控制器的区别:
其他工具以文件变更列表的方式存储信息(基于差异的版本控制),而Git:
1.提交更新或者保存项目状态时,基本会对全部文件夹创建一个快照,并保存这个快照的索引。Git对数据更像一个快照流。
2.大多数操作只需要访问本地文件和资源
3.Git 保证完整性:存储数据时,计算校验和,然后以校验和来引用,传送过程中丢失信息或者文件损坏,Git都能发现。Git数据库中保存的信息是以文件内容的哈希值来做为索引,而非文件名。
4.Git 一般只添加数据
5.Git 的三种状态:
已修改:修改了文件,但尚未存入数据库。
已暂存:对已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
已提交:修改了文件并已经存入数据库。
与三种状态相对应的是工作区、暂存区、Git目录
工作流程:
1.在工作区修改文件
2.将下次提交的更改选择性存储,放入暂存区中
3.提交更新,找到暂存区的文件,将快照永久性存储到Git目录
主要命令
git config --list# 获取Git配置信息
git add # 将工作区的修改提交到暂存区
git commit # 将暂存区的修改提交到当前分支
git reset # 回退到某一个版本
git stash # 保存某次修改
git pull # 从远程更新代码
git push # 将本地代码更新到远程分支上
git reflog # 查看历史命令
git status # 查看当前仓库的状态
git diff # 查看修改
git log # 查看提交历史
git revert # 回退某个修改
rm 文件名#删除文件
git checkout--file #丢弃对工作区的修改
完整流程
步骤如下:
SSH key的生成:
ssh-keygen -t rsa -C “你的邮箱”,然后在c盘中找到.ssh文件夹 在gitee / github的ssh中复制id_rsa.pub(公钥)中的内容到SSH
码云:
Github:
远程服务器的添加:
git remote add orgin(别名 可修改) `git@github.com:bukas/bukas.git`(你的github或者码云的项目地址)
git remote -v #查看远程服务器信息
Git常用命令
(1)mkdir 文件名 #创建版本库
(2)git init #初始化 可以用 ls - ah命令查看
(3)git add 文件 #把文件添加到版本库,多个文件用空格分开
,也就是把文件修改存入暂存区
(4)git commit -m “备注信息,最好是填了” ,#实际上把暂存区的内容提交到当前分支,然后git push推送给远端
(5)git status # 查看仓库状态
(6)git diff 文件名 # 查看修改了哪些内容,用git diff HEAD --文件名查看工作区版本和版本库最新版本的区别
# 5.6为非必须操作
版本需要回退时:
(7)git log (--pretty=online)# 加了括号中的内容表示只查看每次版本号
(8)git reset --hard HEAD^ #(一个^表示向上一个版本,可多个),
#也可以以版本号来操作如:
git reset --hard daf95#(版本号可不写完,一般是写前面几个,考虑到可能会有重复,可以多写几位)
(9)git reflog #查看历史命令,可以通过id从回退的版本返回到最新版本
(10)git checkout --文件名 #将该文件在工作区的修改全部撤销,使其回到最近一次commit或者add 状态,也可使用git reset命令
(11)文件删除
rm test.txt #你已经删除了文件,Git知道你删除了文件,版本不一致。使用
git rm test.txt 和git commit -m "信息"
#,该文件从版本库删除。如果是删错了,
用git checkout --文件名 #恢复rm命令删除的内容
(12)git push -u origin master #第一次推送master分支,需要加上-u 以后都不用加
(13)git clone 你的项目地址 #远程克隆
(14)git pull #从远程拉项目
(15)git checkout -b dev #创建分支与切换到dev,相当于以下两个命令:
git branch dev #创建名为dev的分支
git checkout dev #切换到dev分支
git branch #查看当前分支
将dev合并到master分支:
git checkout master #切换到master分支
git merge dev #将dev合并到当前分支
合并完成后,删除dev分支:
git branch -d dev
在本地创建和远程分支对应的分支,使用
git checkout -b branch-name origin/branch-name
,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用
git branch --set-upstream branch-name origin/branch-name;
从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
两种冲突的解决:
1.在commit后,执行git pull -rebase时出现冲突:
(1)找到冲突文件,解决冲突
(2)执行git add xxx (xxx为冲突文件全路径)
(3) 执行git rebase -continue
(4) 执行git pull-rebase
(5) 执行git push
2.在你本地进行了修改,你执行了git stash,然后你从服务器上pull了新代码,出现了冲突:
(1) 找到冲突文件,解决冲突
(2) 执行git add xxx(xxx为冲突文件全路径)
(3) git commit
(4) git pull –rebase
(5) git push