git统称为仓库response。它分为工作区和.git区,工作区就是除开.git文件夹的当前文件夹。.git区又包含暂存区,head指针和分支信息。
工作区和暂存区当存在修改内容时,是无法pull push merage等操作的。工作区和暂存区修改内容所有分区都能看见。只有把他们commit到某一个分支后,其他分支才看不到。
命令:
git add
提交到暂存区
git add .不包括删除文件
git add -u 不提交新建文件
git add -A git add -all上面2个命令的集合。
暂存区文件所有分支都能看,但是提交暂存区只能提交到某一个指定分支。
git commit
暂存区提交到当前分支
git commit -m '描述' 暂存区提交到当前分支
git status
查看本地仓库状态(在工作区、暂存区有无文件、解决冲突时查看具体冲突文件名等):
git branch
分支信息相关
git branch yss 创建分支
git branch -a 查看所有分支包括远程分支
git branch -vv查看本地分支和远程分支的关联信息。
git branch --set-upstream-to=origin/dev设置本地分支和远程分支的关联:
解释:当前分支关联到远程的dev分支。注意仓库关联是先建立好了的,分支关联是后建立的。
git checkout
git checkout -b yss 创建分支并head指向该分支(切换到该分支)
git checkout -b dev origin/dev 创建分支并head指向该分支并关联远程分支
git checkout yss 切换分支
git checkout . 清除修改文件(未add和commit的),该命令只能清除修改文件,对于新增的文件和文件夹清除需要执行
git clean
git clean -d清除新增文件(未add和commit的)
git reset
回滚
git reset .已经add了的用该命令重置。
git reset <时间id> 已经commit了的,使用该方法回滚。可以通过git log --oneline --all –graph查看回到指定时间线。
git pull
拉取:注意暂存区和工作区有修改内容,是无法pull的。
git push
推送:同样暂存区和工作区有修改内容,是无法push的。
git merge
合并git merge dev 解释:把dev分支merge到当前分支。
git remote
远程仓库
git remote -v查看本地仓库关联的远程仓库地址
git log
查看所有分支合并信息
git log --oneline --all --graph
--oneline显示单行 --all所有分支 --graph左侧显示时间线
常用命令:
git log --oneline --all –graph
git status
git checkout master
git merge dev 注意是当前分支被dev合并。
git的回滚以及撤销
1、还未进行add和commit操作
git checkout .
该命令只能清除修改文件,对于新增的文件和文件夹清除需要执行
git clean -d
2、对于已经add了的
git reset .
已经add了的用该命令重置。
3、对于已经执行了commit命令的分支。
git reset <时间id>
可以通过git log --oneline --all –graph查看回到指定时间线。
规范操作:
1、关联一个本地分支和远程分支做为pull和push用,如dev分支。
2、在本地新建一个yss分支做为本地开发使用
操作步骤:
1、先把dev分支pull一次,保障本地最新。
2、创建个本地分支yss,切换到yss分支,并merge dev分支到yss,保证yss最新。
3、在yss分支上写代码。
4、写完代码后,把所有工作区修改内容commit到yss分支上。
5、切换到dev分支,从git服务器重新pull一次最新代码,注意一定要先pull一次,保证把服务器代码最新的pull到本地dev分支。
6、merge yss分支到dev分支上。
7、再把dev分支push到远程dev分支上。
解决冲突:
步骤6很容易出现冲突,原因在于yss分支操作的时候,别人在服务器上push了文件,而文件被dev分支pull下来后与yss的文件有冲突。解决方法:
1。当执行了merge却有冲突时,此时处于一种暂时分支状态,在该状态上使用git status查看冲突文件。如果是文本文件,可以直接查看冲突位置进行修复。
2.也可以退出暂时分支(退出命令在git status查看时可以看到退出命令),把dev分支最新的冲突文件覆盖yss分支,当然这样yss分支上的修改就被丢失了。然后重新提交合并等操作。
创建本地分支,并与远程分支关联
1、git init //初始化git
2、git remote add origin <git仓库地址> 添加远程仓库地址
3、git pull 拉取
4、git checkout master
注意当初始化一个git本地仓库的时候,由于并没有commit过,所以head指针不会指向任何分支,查看分支信息的时候是不会显示任何分支。
由于没有本地文件创建修改,此时执行git add . 和git commit -m也是无效的。
要使本地分支和远程分支关联,此时需要git pull远程仓库,再执行一次切换到master分支,就会自动关联这个分支。
注意当本地先有相同名字的分支后,再执行git pull,再切换才会自动关联上。所以先创建多个和远程分支相同名字的分支,再pull再切换本地分支,就会都关联上。
重命名本地分支和远程分支:
git branch -m oldbranchname newbanchname//重命名本地分支
git push origin :oldbranchname//删除对应远程分支
git push origin newbranchname//本地重命名分支提交到仓库上