git 命令使用
git 使用
全局配置
首次安装git后进行一些配置,提交代码的时候就会将用户名和邮箱存入版本库中,其他开发人员就可以看到是谁提交的代码
- 设置全局用户名:git config --global user.name github上的用户名
- 设置全局的邮箱:git config --global user.email 邮箱
- 查看全局邮箱:git config --global user.email
- 查看所有配置信息:git config --list
因为git是分布式版本控制系统,所以, 每个机器都必须自报家门:你的名字和Email地址。
公钥配置
从github或码云上下载项目
- 切换到存放git版本库的地方
- Git clone url(github上的地址)
cd 项目名(进入项目文件夹内)master:主分支
- 注:如果不想从远程获取版本库,在本地计算上生成版本库:git init 详见-git remote
git的三个区
- 工作区(当前编辑的代码区)
- 暂存区(作为过渡层、避免误操作、保护工作区和版本区、分支处理;add)
- 版本库(版本控制)
git 命令
- git status (查看工作区)
- git add 文件名(将文件添加到暂存区)/ git add .(点或者星*) (将所有工作区的中内容加入暂存区)
执行后可能出现的状况:1.不会有任何提示,但是提交成功了;2.失败会提示fatal:xxx;3.可能会出现警告,由于linux和window的换行符不一致导致,警告内容:warning:LF will be replaced by CRLF in a.txt. 解决方式:git config --global core.autocrlf false
- git commit –m "注释内容"(提交暂存区所有文件存入版本区)/ git commit -a -m "注释" (直接从工作区存入暂存区再存入版本区,-a:存入暂存区,-m:存入版本区)
如果只输入git commit 会出问题,这时需要ESC + : + q! 退出就好
- git push(提交到远程仓库)
git分支
- git branch (查看分支)
- git branch 分支名 (创建一个新分支)
- git branch –d 分支名(删除分支)(如果出现无法删除子分支,将-d改为-D,强制删除)
- - -merged (查看当前分支下所合并的分支)
- --no-merged (查看没有合并的分支)
- git checkout 分支名(切换分支)
- git checkout –b 分支名 (创建并切换到新分支)禁止在空分支基础上去切换另一个分支,会删除上一个空分支
- git merge 分支名(合并分支;git merge dev:合并dev分支到当前分支)
- git diff branch1 branch2 (显示出两个分支之间所有有差异的文件的详细差异)
- git diff branch1 branch2 --stat (显示出两个分支之间所有有差异的文件列表)
- git diff branch1 branch2 xxx (显示指定文件的详细差异)
在本地创建分支并提交到远程
git checkout -b dev1 origin/dev
git push origin dev1
差异对比
- git diff (暂存区-与工作区+的差异对比)
- git diff --cached(--staged) (版本库-与暂存区+的差异对比)
- git diff master (版本库-与工作区+的差异对比)
日志+版本号
- git log (查看日志) : 如果版本太多,一次显示不全,想要退出此状态,请按q
- git reflog (操作记录,可以回到当前版本;查看历史记录的版本号id)
撤销
- git reset HEAD <file.name> (从暂存区撤销回工作区)/ git reset HEAD (用版本库中的文件去替换暂存区的全部文件)
- git checkout -- <file.name> (从工作区撤销回上一次提交的版本区,用暂存区指定文件去替换工作区的指定文件)/ git checkout HEAD <file.name> (用版本库中的文件替换暂存区和工作区的文件)
- git commit --amend (撤销上一次的提交命令,重新提交新的代码)
删除
- git rm <file.name> (如果工作区删除了一个文件,通过此命令可以把暂存区的文件删除)
- git rm -f <file.name> (如果删除暂存区的文件,那么工作区和暂存区的文件都会删除)
- git rm --cached <file.name> (只删除暂存区的文件,工作区的文件保留)
- git rm -r xxx (删除文件夹)
恢复/版本回退
- git checkout (commit id) <指定文件> (还原删除的文件)
- git reset --hard (commit id)(还原版本,回退到指定commit id版本)
- git reset --hard HEAD^ (返回上一个版本,回退一次提交)git reset --hard HEAD^^
- git reset --hard HEAD~
(返回上几个版本)
版本冲突
合并分支时,如果在同一个文件,在同一个地方,都修改了或新增内容会引起版本冲突。
同步到远程仓库
- git remote (查看远程仓库的名字) git remote add origin 远程仓库名字(地址)(关联一个远程库)
- git remote –v (查看远程地址)
- origin (远程仓库的名字)
- git push origin master (git会把master分支推送到远程仓库对应的分支上)
- git push -u(第一次要用-u,以后不用) origin master
- git push -u origin master -f (强制push到远程仓库)
若成功推送过一次代码后,电脑不能够自动记住github的账号和密码,执行以下命令解决:git config --global credential.helper store
多人协作解决冲突
- git fetch (从远程获取但不与当前代码合并)
- git diff master origin/master (查看两个冲突文件的异同)
- git merge origin/master (合并)
- git pull(从远程获取并与当前代码合并)
- git pull origin master(将远程库的更新拉取到本地并自动合并)
拓展
git bash跟cmd命令行不是一个东西,git是Linux的 cmd是window的
Linux的命令
mkdir xx:创建一个空目录 xx指目录名
vi x.txt 新建文件(visual editor)
输入i进入编辑模式
ESC + : + wq 保存并退出
ESC + : + q! 不保存并退出
rm -r xx:删除文件夹
pwd:显示当前目录的路径
cat xx.txt:查看xx文件内容
clear:清屏幕
ls:列出当前文件夹中所有文件
ll:列出当前文件夹中所有文件的详细信息
cd xx:进入xx目录
cd .. :返回上一级目录