git基本角色
Workspace:工作区,包括需要通过Git进行版本控制的目录和文件,除了.git之外的都属于工作区。
Index / Stage:暂存区,或者叫待提交更新区,在提交进入repo之前,我们可以把所有的更新放在暂存区。
Local Repository:仓库区(或本地仓库),一个存放在本地的版本库;HEAD会只是当前的开发分支(branch)
Remote:远程仓库
Directory:使用Git管理的一个目录,也就是一个仓库,包含我们的工作空间和Git的管理空间。
Stash:是一个工作状态保存栈,用于保存/恢复WorkSpace中的临时状态。
**
项目开发初始
**
代码下载 (地址http可能出错,使用git@)
git clone XXX(代码地址)
代码拉取后,一般新建自己的本地仓库,如devPHP
新建分支
git checkout -b devPHP //创建新的分支,存代码
**
开发结束后,提交代码,申请合并
**
IDEA中terminal使用git指令,提交代码;本地拉取代码文件中,右击git bash,使用git 指令也可以提交
git status //查看修改内容,使用status命令,在根目录下输入
git branch // 目前分支,以及所有分支
git diff //看到更改的内容,查看修改文件, 其中减号代表删除部分,加号代表添加部分
git add . //添加全部修改文件,到暂存态,纳入到版本控制
git add filename //某个具体文件添加到暂存区
git commit -m '提交文件的注释' //提交代码到本地仓库
git push origin branchName //push到远程的本地仓库
push到远程的本地仓库后,提Merge request,申请合并到master
在代码master地址,可以看到Merge request,其中包含具体的commit和change文件代码。
**
提交过程中,可能遇到问题
**
rebase解决冲突
(1)不能pull到DevPHP reject!!push失败了,说明我本地master分支的提交历史已经落后远端了,需要先pull一下,与远端同步后才能push
拉取最新代码,通过git拉取代码的时候,默认拉取的是master分支
git pull
或者
git pull --rebase (拉取最新代码到工作区) //********git pull --rebase origin master/devPHP
拉取最新的,git pull 之后,再push刚刚提交的
git push origin devPHP
(2)git pull 之后依然不行,error:fail to push
- 参照提示修改
- 最好不要在phpstorm中运行git指令,在代码保存文件位置运行git bash,提交代码
(3)同步之后 输出框就提示 - remote: HTTP Basic: Access denied
解决方法:
1.控制面板–》选择用户账户–》选择管理你的凭据–》选择windows凭据–》-普通凭据-》选择git的信息–》编辑或删除
也可直接在搜索框 搜索 windows凭据
可进行编辑更新git信息。也可以直接删除,后续可创建。
等你再次去同步代码的时候,提示你输入用户名和密码,输入即可同步。
**
其他常用指令
**
(1)查看下一提交历史
git log
退出git log 状态
commit(提交)比较多,git log 的内容就会比较多;
保存并退出:
1)按 Esc 键退出编辑模式,英文模式下输入 :wq ,然后回车(write and quit)。
2)按 Esc 键退出编辑模式,大写英文模式下输入 ZZ ,然后回车。
不保存退出:
按 Esc 键退出编辑模式,英文模式下输入 :q! ,然后回车。
按 Esc 键退出编辑模式,英文模式下输入 :qa! ,然后回车。
(2)撤销未提交的修改,修改后文件没有提交,git 放弃本地某个文件的修改,或所有修改
git checkout 文件名
git checkout *// 放弃所有文件的所有修改
git reset --hard 版本号 // 返回到某个版本,放弃所有修改
(3)已经被add过的,可以先对其取消添加,在撤回提交,使用reset命令
git reset HEAD src/com/example/MainActivity.java //变回未添加状态
git status //可看出该文件变回未添加状态
git checkout src/com/example/MainActivity.java //撤销修改
git log //查看提交记录,记录提交id,提交人,提交日期,提交描述这四个信息
(4)当前进度保存起来
git stash //把现有的修改藏起来
git stash list //显示保存进度的列表,git stash命令可以多次执行。
git stash pop //恢复最新的进度到工作区,git默认把工作区和暂存区的改动都恢复到工作区
git stash clear // 删除所有存储的进度。