- 查看状态: git status
- 将新文件加入到暂存区 : git add 文件名
- 将暂存区的文件提交到本地库: git commit 文件名
在提交的时候,需要有一段文字来记录,你本次做的提交或者说修改是干什么的,想当于是注释。git commit 文件名 这个命令或默认的进入到编辑器。
- 将暂存区的文件提交到本地库(并直接写好注释提交,就避免里进入编辑器):git commit -m " 注释内容" 文件名
- 所有添加到暂存区的内容是可以撤回来的:git -rm 文件名
- 查看历史信息,或者说版本信息(详细的信息):git log
- 查看历史信息,或者说版本信息(比较美观的显示部分信息):git log --pretty=oneline
- 查看历史信息,或者说版本信息(更简洁的显示部分信息):git log --oneline
- 查看历史信息,并且给我们没明确的显示想要回到历史版本需要移动的步数:git reflog
版本号哟有一个头指针,所谓的回退操作就是移动头指针的位置
- 回退到某一个版本(根据哈希值版本号) git reset --hard 版本号(是一个哈希值)
- 回退到某一个版本(不推荐):git reset --hard HEAD^ 这代表从当前版本回退一步,后边加数字n就是回退n步
- 回退到某一个版本(不推荐):git reset --hard HEAD~n 这个意也是代表回退n步
git reset --hard 版本号
--hard 还有两个兄弟 分别是 soft 和 mixed
稍微的说一下三者的区别,了解就好:hard 是同时挪动 本地库 暂存区 工作区;soft 只挪动本地库,mixed挪动本读库和暂存区,因为平时不怎么会用到,所以只需要记住 hard就可以了。
分支操作- 创建分支 : git branch name
- 查看分支 : git branch -v
- 切换分支 : git checkout name
- 合并分支 : 首先要回到主线(marst)上 (假设我们是想要合并到主线上) 然后再 :git merge 想要合并的分支名字
- 合并冲突的解决 : 产生冲突是必然的,肯定有这样一个情况,就是分支和主干修改了同一块代码,并且,修改的内容不一致。原本我以为不一样的地方都叫冲突,然而做了测试才发现,并不是这样的。
我这里有必要列一下成产中的代码修改情况:
第一种:是大家都修改了相同地方的代码,并且修改的最终内容还不一样,这百分百的冲突。
第二种:分支对主干上的代码进行了修改,然后合并到主干上来,这不会产生冲突。
第三种:主干对原来的代码进行了修改,分支也对主干上的代码进行了修改,并且修改的地方还不一样。这样的情况合并到主干上的代码,不算冲突,并且,同时保存两份修改。在实际开发中并不会在主线上直接进行修改,都是通过分支进行修改的。加上在工作中,在提交之前,需要在自己的分支更新成最新的代码,也就是说先将已经发布的master merge 到自己分支上,这样才是最完全的分支,然后主线再merge 分支的新增功能。
先在github上建立一个远程库,想让远程库和本地库进行交互,必定需要有一条路连接两者。那就是远程库的地址
为了方便操作,我们可以将这个地址记在git上
- 查询git 的记录情况 : git remote -v
- 在git上添加remote记录 : git remote add name(这个就是一个好记的代理者) 要记录的内容
比如:git remote add origin https://github.com/faceAngus/demo.git
- 从本读库向远程库推送 :git push 指定好的远程库地址别名 分支名称
第一次向远程库推送,需要输入托管中心的密码。
另外一个人加入开发一个人自己玩似乎没有意思,那就叫上别人一起来开发把,想做协同开发,需要自己的伙伴来,同伴肯定有本地库,伙伴就不需要建立远程库了,一个远程库,大家一起用就好了。
第一次伙伴进来需要clone一下远程库到本地库。
想要克隆谁的远程库就要谁的地址。
- clone 远程库到本地库 的指令 :git clone 要克隆的远程库地址
克隆完了会产生三种效果:
1.完整的把远程库下载到本地
2.创建远程库地址别名
3.初始化本地库
到clone完为止,只能产生克隆完的效果。可以修改代码,所有的更新只能停留到本地库,并不能往远程库推。接下来需要的是老大邀请你进入成员组
邀请步骤如下截图:
假如你的小伙伴叫做 tim ,你已经把tim邀请进来了。那么tim可以随时进行推送操作了。
从远程库拉取代码到本地库:
再假如 tim 将自己的代码推到了远程库,你本人在自己的远程库并不能看到,所以这就有了拉取操作,将远程库的内容先拉下来看看,在决定是不是要保留,拉取操作分为两步,分别是
- 先看一下,将远程的内容下载到本地:git fetch 远程库别名 主干名
- 合并操作:git merge 远程库名 主干名
- 拉操作干脆狠一点(相当于是以上两个操作的合并):git pull 远程库名 主干名
解决冲突的要点:
git 很好的一点就是:如果不是基于最新的版本,就不能推送,想要推送可以,先将远程库的代码拉取下来,如果拉取下来以后冲突了,那就得解决冲突。这样就保证了主干一定不会冲突,冲突只会在分支上产生,并且产生了以后就得解决才能往主干上推。
优雅的跨团队开发:先贴一个图:了解一下流程
通过这个图我们可以发现,git 真的是太流畅了,对于自己团队的人很好管理,万一需要别的团队(乙方),只需要一个fork给另外一个团队,这就相当于是别的团队复制了一个远程库,但是属于自己所有,自己在上边怎么玩都可以,将功能实现了以后,通过pull request 可以提交到甲方去,甲方老大审查一下,没问题,merge到主干上来。跨团队整个流程就显得很优雅。
跨团队开发步骤:
- 先将自己的项目地址发给乙方团队
- 乙方团队打开这个项目地址去Fork
- Fork完了以后,就可以在本地进行修改,添加功能等操作了。然后推送到本地库,然后推给甲方团队的远程库
接着:
再接着:
给甲方团队发点关于项目的描述性的信息:
然后乙方到目前为止就做完了该做的事,然后等着甲方接收,merge ,就领工资了。
- 接下来是甲方:
点开看到:
可以查看乙方写的代码怎么样,过关不。
如果乙方代码合格:就合并代码
合并完了,远程库就修改完毕了。接下来甲方如果有需要就将代码拉取到自己的本地库就可以了,整个跨团队开发的过程就完成了。