一、Git工作流程
工作目录->暂存区->Git仓库
二、Git使用前的配置
1.配置提交人姓名:git config –global user.name 提交人姓名(昵称)
2.配置提交人邮箱:git config –global user.email 提交人邮箱
3.查看Git配置: git config –list
如果想要重新修改姓名/邮箱,再次执行上述命令即可
三、提交步骤
1.初始化仓库:git init
2.查看文件状态:git status
2.添加文件到暂存区:git add 要提交的文件名称
3.将暂存区中的文件提交到git仓库:git commit -m 提交信息
4.查看提交记录:git log
四、撤销
1.用暂存区中的文件覆盖工作目录中的文件:git checkout 文件名称
2.从暂存区中删除文件:git rm –cached 文件名称
3.将git中恢复到指定的更新记录,并且并且覆盖暂存区和工作目录:git reset –hard commitID
注:该指令执行后,不仅在暂存区和工作目录恢复了B状态,而且也在仓库中删除了B状态之后的状态,在历史提交记录中也只有A,B两次提交
commitID可通过git log 命令得到
五、分支
当我们第一次向git仓库中提交项目时,git会自动产生一条以时间点为分隔的线,这条线就是分支,分支上每一个时间点都代表一次git提交,git自动产生的这条分支,叫做主分支。git中除了主分支以外还可以创建其他分支。创建其他分支可以让我们从开发主线上分离出来,以免影响开发主线。
在开发过程中分支与分支之间是独立的,互不影响。在实际开发的过程中,除了有主分支,开发分支,还会有功能分支,功能分支是基于开发分支创建的,它的作用是开发一个独立的功能,当功能开发完整以后,再将功能分支中的代码合并到开发分支,这支功能分支就可以删除了。
1.查看分支:git branch
当前在哪一个分支上进行的操作,就是基于那一个分支创建分支,就相当基于那一个分支创建副本
2.创建分支:git branch 分支名称
3.切换分支:git checkout 分支名称
注意:在切换分支之前,当前分支上的工作一定要提交到git仓库中,要保持当前分支上的工作区处于完全干净的状态,否则就会出现问题。
4.合并分支:git merge 来源分支
如果是想把A合并到B上,需要先切换回到B上进行合并。
5.删除分支:git branch -d 分支名称
如果要删除的分支没有被合并,默认情况下这个分支是不允许被删除的
6.强制删除分支:git branch -D 分支名称
注意:如果想删除一个分支,则不能再该分支上执行删除代码(强行删除也不可以),必须切换到其他分支上才能进行删除。
六、暂时保存更改
在git中,可以暂时提取分支上所有的改动并存储,让开发人员得到一个干净的工作副本,临时转向其他工作。经常用于分支临时切换。
1.存储临时改动:git stash
2.恢复改动:git stash pop
注意:在A分支上存储,恢复时必须返回A分支
七、远程仓库
当多个人同时开发一个项目时,即多个人共享一份代码,本地仓库是完成不了共享的,此时我们需要一个公共仓库。
开发人员需要在本地仓库中进行开发,当开发完成以后,将本地仓库中的代码推送到公共仓库中,其他开发人员可以从公共仓库中拉取别人推送的代码,这样就可以实现多人协作开发了。本地仓库位于每一个开发人员的计算机上,相反,公共仓库位于可以被所有开发人员可以访问到的远程服务器上。
1.多人协作开发流程:
(1)A在自己的计算机中创建本地仓库:在项目文件中打开git
(2)A在GitHub中创建远程仓库:
(3)A将本地仓库推送到远程仓库
①
②
git push 远程仓库地址 推送分支
如果觉得远程仓库的地址过于冗长,可以给远程仓库的地址起一个别名:git remote add 远程仓库别名 远程仓库地址
也可以写:git push -u 远程仓库地址别名 分支名称
这样,以后就可以直接写gti push
③
当项目中的文件内容发生变化后,将内容先提交到本地仓库,再推送到远端
(4)B克隆远程仓库到本地进行开发:git clone 远程仓库地址
切换位置:cd 路径
清屏:clear
注意:,因为B没有权限,此时B是无法向远程仓库中提交代码的,所以需要A邀请B称为该项目的开发者
A如何发出邀请:
)
然后复制邀请链接,发给B。B登录GitHub之后,复制链接到地址栏,接受邀请即可
(5)B将本地仓库中开发的内容推送到远程仓库
(6)A将远程仓库中的最新内容拉取到本地
拉取远程仓库内容:git pull 远程仓库地址 分支名称
注意:如果远程仓库中的版本高于本地仓库,那么是不允许推送到远程仓库的,需要先拉取远程仓库到本地,然后再向远程仓库中进行提交
八、解决冲突
在多人开发一个项目时,如果两个人修改了同一个文件的同一个地方,就会发生冲突。冲突需要认为解决,即第二个人需要在本地仓库中把冲突解决掉,然后再向远程仓库中提交。