1、git是什么呢?
维基百科给出的定义: git是一个分布式版本控制软件,最初由(Linus Torvalds)创作
2.git的作用是什么?
版本控制
3、git的优势哪里?
同类型软件有svn、cvs,git相比于他们最大的优势就在于git是分布式的
4、初始github
全球最大的同性交友网站:https://github.com/
5、git的入门级命令(为什么建议使用命令行的方式操作git)
命令行会了,图形界面的操作时完全没问题的,反之,则不然
有些地方如linux服务器,没有图形界面,如果碰到问题需要使用git,不会命令行操作啥都干不了
git 本地操作:
git --help:调出Git的帮助文档
git +命令 --help:查看某个具体命令的帮助文档
git --version:查看git的版本
git init:生成空的本地仓库
git add +文件:将文件添加到暂存区
初次commit之前,需要配置用户邮箱及用户名,使用以下命令:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
git commit -m +提示信息:将暂存区里的文件提交到本地仓库
git remote:查看仓库别名,用于管理远程仓库
git remote add +仓库别名 +仓库地址:添加远程仓库信息
git remote remove +仓库别名:删除本地仓库配置信息
git push -u +仓库别名 +分支名称:把项目上传到远程仓库并默认绑定远程仓库地址(需要登录远程仓库帐号密码)
例如:git push -u origin master:往名字为origin的仓库的master分支上提交变更
git fetch +仓库别名 +远程分支名称: +本地分支名称:拉取远程仓库的变更到本地仓库
git merge +仓库别名/+远程分支名称:将远程指定的分支合并到当前分支上
git pull +仓库别名 +远程分支名称: +本地分支名称:拉取同步远程仓库代码
不建议使用pull,pull等同于fetch之后再merge
git status:用于查看git的状态
git rm +文件:用于git文件的删除操作
如果只是 git rm --cache +文件:仅删除暂存区里的文件
如果不加--cache会删除工作区里的文件并提交到暂存区
git checkout +文件名:从暂存区将文件恢复到工作区,如果工作区已经有该文件,则会选择覆盖
git checkout +分支名称 +文件名:从给定分支中拉取文件,并覆盖工作区里的文件
文件的几种状态:
新建文件--->Untracked
使用add命令将新建的文件加入到暂存区--->Staged
使用commit命令将暂存区的文件提交到本地仓库--->Unmodified
如果对Unmodified状态的文件进行修改---> modified
如果对Unmodified状态的文件进行remove操作--->Untracked
git branch 分支名称:创建分支
git branch:查看分支,分支前面有*号,代表该分支为当前所在分支
git branch -d 分支名称:删除分支,不能删除当前所在的分支
git branch -m 旧分支名 新分支名:重命名
git checkout 分支名:切换分支
如果在分支上面对文件进行修改之后,没有commit就切换到另外一个分支,
这个时候会报错,因为没有commit的文件在切换分支之后会不覆盖。所以Git 报错提示。
git checkout -f 分支名:强制切换到分支,如果当前有未提交的变更,会直接丢弃
-f 参数一定一定要非常非常小心使用,一般情况下不建议使用,除非真的要强制去执行
git log:用于查看git的提交历史
git log命令的作用:
commit bb4a8f4ec9fcf76e844374041f91e2abd849ffa6:commit id
Author:青子 <2788386852@qq.com>:作者跟邮箱概要信息
Date:Wed Jan 23 16:28:39 2019 +0800:提交时间
"提交信息":commit的时候,使用-m选项说写一段概要说明
git log -数字:表示查看最近几次的提交
git log -p -2:显示最近两次提交的不同点
git log --author name:查看具体某个作者的提交
git log --oneline:输出简要的信息(只显示过去的历史版本)
git log --graph:以一个简单的线串联起整个提交历史
git log --help:输出信息的定制
git reflog:显示全部历史版本
git diff用于比较差异,使用场景:1、解决冲突;2、制作补丁
git diff:不加任何参数,用于比较当前工作区跟暂存区的差异
git diff --cached:比较暂存区文件 与上一次commit 的差别
git diff --staged:比较暂存区文件 与上一次commit 的差别
git diff HEAD:比较工作区文件 与上一次commit 的差别
git diff 分支名:查看当前分支跟指定的分支的差异
git diff 分支名1 分支名2:查看两个指定分支(已提交的)的差异,分支2 跟分支1的差别
git diff 文件名:查看指定文件的差异
git diff commitid1 commitid2:用于列出两个历史提交的差异
git diff --stat:用于罗列有变更的文件
git reset HEAD 文件名:移除不必要的添加到暂存区的文件
git reset HEAD^:去掉上一次的提交
git reset commitid:去掉上一次的提交
git reset --soft HEAD^:修改上次提交的信息吧即commit -m "修改这里的内容"
git reset --soft 只是将HEAD引用指向指定的提交,工作区跟暂存区的内容不会改变
git reset --mixed (默认选项)将HEAD指向指定的提交,暂存区的内容随之改变,工作区内容不变
git reset --hard 将HEAD指向指定的提交,暂存区跟工作区都会改变
git reset --hard commitid:回退到指定的版本
6、为什么要使用.gitignore文件
大量与项目无关的文件全推到远程仓库上,同步的时候会非常慢,且跟编辑器相关的一些配置推上去之后,别人更新也会受其影响。所以,我们使用该文件,对不必要的文件进行忽略,使其不被git追踪
一把情况下,.gitignore文件,在项目一开始创建的时候就创建,并推送到远程服务器上。这样大家初次同步项目的时候,就是用到该文件,避免以后,团队成员把与项目无关的文件,传到远程服务器上
对于已经提交到远程或本地仓库的文件,.gitignore配置之后不会生效。我们必须先删除本地暂存区里的文件,之后在加上.gitignore 文件,最后再把变更提交到远程仓库上。
git rm --cached 文件名 从暂存区删除某个文件
git rm -rf --cached 文件夹 表示递归删除暂存区该文件夹的所有东西
7、冲突与解决
git diff --name-only --diff-filter=U:查看冲突的文件
git ls-files -u:也可以显示没被合并的文件