对于远程仓库的代码,我们要想本地开发然后提交代码,最基本的流程如下:
$ git clone git@..... //克隆代码到本地,此时所在的分支是master
...//进入本地代码文件夹
$ git pull origin master //拉取master上的代码,确保本地代码是最新的
$ git checkout -b dev-123 //新切一个开发分支,分支名:dev-123
$ git push origin dev-123 //把当前分支推到远程,这样别人就可以看见该分支,并统一在此分支上开发
... //开发过程略
$ git status //查看当前本地代码库状态
$ git add . //把修改的文件放入暂存区
$ git commit -a -m"备注信息" //代码提交到版本库
$ git pull origin dev-123 //再拉取一边,确保最新
$ git push origin dev-123 //代码推到远程仓库
...//全部开发结束
$ git checkout master //切到master
$ git pull origin master
$ git merge dev-123 --no-f -m"备注信息" //合并开发分支到master
$ git push origin master //把合并后的master推到远程
//最顺利的流程结束
当然,在实际开发中由于多人开发,难免会遇到代码冲突,如何解决呢?
第一种情况:pull代码时发生错误。
$ git status //查看当前是哪些文件发生的冲突
..//解决冲突
$ git add .
$ git rebase --continue
...
第二种情况: push发生冲突
$ git status
$ git add .
$ git commit -a -m"备注"
...
总结:代码冲突时会有提示信息,按照提示信息进行操作即可,无需记住上面的流程。
其他git常见命令
ctrl + l :清空编辑区
git diff readme.txt //查看修改了什么
git log //查看commit信息,可用于版本回退
git reflog //查看命令历史,用于到未来的那个版本
git reset --hard HEAD^ //回退到上一个版本
git reset --hard HEAD~5 //回退到上5个版本
git reset --hard 33562555 //到commit_id的版本
git reset HEAD readme.txt //把暂存区的修改撤销掉,重新放到工作区,就是撤销add操作
git reset HEAD . 全部撤销add操作
git checkout -- readme.txt //把文件在工作区的修改全部撤销
git rm readme.txt //从版本库删除一个文件 , 删除完要git commit
git remote add origin git@git.... //关联本地库和远程库
git push -u origin master //把本地库的所有内容推送到远程,由于是第一次推送,远程库是空的,所以要加上-u
// 这样不但把本地推送到远程,还把本地master分支和远程master分支关联,以后再用就写
//git push origin master
git clone git@.....把远程库克隆到本地
git checkout -b dev //创建dev分支,并切换 相当于 git branch dev //创建 git checkout dev //切换
git branch 查看当前分支
git merge dev //把dev分支的内容合并到master分支上
git branch -d dev //删除dev分支
当出现bug 但是dev分支内容还不能提交时,把现场储存起来。
git stash 保存本分支现场
git stash pop 恢复现场并删除stash
git stash list //查看保存现场的内容
git remote //查看远程库的信息 git remote -v 更详细的信息
git中,每一次提交都会生成一个commit
git revert会生成一个新的commit,将之前的某个commit的修改恢复过来
git reset会将HEAD移动到某个commit上,换种说法就是将某个commit变成最后一个commit
$ git pull <远程主机名> <远程分支名>:<本地分支名>
git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。
git fetch:相当于是从远程获取最新版本到本地,不会自动merge
git fetch origin master 从远程origin的master分支下载最新版本到origin/master
git fentch <远程主机名> //将某个远程主机名的更新全部取回到本地
git fentch <远程主机名> <分支名>
所取回的更新在本地上用“远程主机名/分支名”的形式读取
git branch -r //查看远程分支
git branch -a //查看所有分支
取回远程主机的更新以后,可以在它的基础上,使用git checkout命令创建一个新的分支。
git checkout -b newBrach origin/master //表示,在origin/master的基础上,创建一个新分支。
撤销修改:
git checkout application/views/red_theme/yirongfu/header.php
git checkout . 本地所有修改的没有提交的都撤销
撤销一次merge git merge --abort