Git可以界面化操作也可以命令行操作
工作流
① 工作区:不仅包含你实际更改的文件还应当包括当前修改但未add存入暂存区的文件变化信息
② 暂存区:临时存储文件的变化信息,记录file文件上的修改信息(细化时间节点)
③ 历史区:记录了各个版本,可查看代码更新,也可回滚到其他版本
三个区域的提交过程:
工作区->暂存区(临时储存)->历史区(生成版本),如需要回滚(直接从历史区把需要的版本覆盖工作区)
注意:有重大改变的版本或是在一次修改工作整体完成之后才使用commit。而在这之间需要保存的修改,一般都是存放在暂存区。
工作流命令
初始化git(不能嵌套使用git)
git init
以某个文件夹作为git管理的目录,初始化后会产生一个.git文件夹(勿删)
添加暂存区
git add . 或者 -A 或者 文件名
添加到历史区
git commit -m"initial"
-m
参数必须添加(第一次提交叫根提交)
注意:空文件夹默认不会提交,默认添加.gitignore文件(.idea和.DS_Store和node_modules)
添加暂存区添加历史区
git commit -a -m 'info'
此命令只能针对提交过的文件
使用
查看提交进程信息
git status
如果是红色:未添加到暂存区中
如果是绿色:添加到暂存区中
如果是没有:添加到历史区中
查看提交记录
git log
比较区的不同
git diff //不加参数即默认比较工作区与暂存区
git diff --cached //比较暂存区与最新本地版本库(本地库中最近一次commit的内容)
git diff HEAD //比较工作区与最新本地版本库(如HEAD指向的是分支,那HEAD还可以换成主干)
git diff --cached 版本号 //比较暂存区与指定指定版本的差异
git diff 版本号 //比较工作区与指定版本的差异
git diff 版本号1 版本号2 //比较两个版本号之间的差异
工作区的修改撤销
git checkout 文件名
工作区的修改撤销到最近一次git add 或 git commit时的内容
注意:如果文件名是.
就是把暂存区全部覆盖工作区
暂存区的修改撤销
git reset HEAD 文件名
清空add命令向暂存区提交的关于文件的修改
注意:此命令仅改变暂存区,并不改变工作区
历史区版本号
git reflog //所有的历史区版本号
回滚历史区
git reset --hard 版本号
分支命令
查看分支
git branch
创建分支
git branch 分支名
切换分支
git checkout 分支名
注意:分支上添加文件需要提交后才能归这个分支所有,否则你改的只是工作区内容,而且不提交是无法切换支线的
创建并切换分支
git checkout -b 分支名
合并分支
git merge 分支名
① 默认会将分支上所有提交的内容全部合并(分支提交了两次版本,会把分支的两个版本都合并到主支),也可以选择
git cherry-pick 版本号
来合并某一个历史② 合并之后,就是master和dev共有的,合并文件改变,master和dev都改变
③ 合并完成后,一般把dev这个分支删除
问题:同行修改合并时会冲突,需手动更改后,再提交历史区(不同行不冲突,需注意顺序)
避免:
- 首先要建立分支,分支修改,提交到历史区
- 然后在回到主支上,修改主支,提交到历史区
- 最后再合并主支和分支
删除分支
git branch -D 分支名
不能在当前分支上,并且字母D尽量大写
仓库命令
链接远程仓库
git remote add 别名 自己远程仓库链接
查看/删除/更新远程仓库链接
git remote -v //查看
git remote rm 别名 //删除
git remote update 新别名 //更新
克隆到本地
git clone 远程地址 文件夹名
这里文件夹名就是设置拉取到本地时候文件夹名
拉取最新代码
git pull origin master
如果git pull -u origin master
第一次这么写,后面只需要git pull
即可
推送到远程仓库
git push origin master
git push origin master --force //强制推送本地的代码
线上和线下的修改可能冲突,可以强制以本地为准推送
推送之前可能需要拉取远程的内容,合并后再次推送,如产生冲突,需解决冲突。
执行命令导出
history >1.txt //1.txt里面就是执行过的命令
LINUS命令
PWD打印当前目录
print working directory
删除文件夹
rm -rf .git
rm -rf . //删除整个文件,不要用
创建目录
mkdir 目录名
改变目录
cd 目录位置
显示清单
ls
创建文件
touch 文件
编辑文件
vi 文件名
i //插入模式(编辑)
esc+:wq //保存并退出
q! //强制退出
查看文件内容
cat 文件名
扩展: q
用于命令行过小或是结束时
实际工作
将仓库中的代码pull
下来
创建分支
git branch dev //自己的分支名称
切换分支
git checkout dev
修改代码后
git add .
git commit -m''注释'
git push origin dev //自己的分支名称,在githup上生成自己的子分支
切换到主分支
git checkout master
主分支上拉代码
git pull origin master
合并分支
git merge dev
git add .
git commit -m '注释'
git push origin master
下次再改代码的时候切换到自己的分支上进行修改
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。