git的最常见的使用

GIT:

1,保存数据,文件

2,记录历史版本和版本间差异。甚至包括回退到指定版本。

3,团队协作


发展历史:

cvs:始祖,集中式

svn:集大成者,集中式

git:geek主流,分布式

github:geek社区,托管网站


集中式:需要中心服务器,需要联网

分布式:可以不联网,本地完成。效率高。



一,第一次使用git从已有项目下载

1,首先保证自己有权限下载代码,没有的话找管理员给配置权限

2,cd到你想要存放工程的位置

3,git clone 项目地址,然后输入用户名和密码,等待下载完成。


二,git上传代码

1, cd到指定工程目录

2, git branch -a 查看所有分支

3, git checkout dev 选择分支

      可使用git status 查看修改的文件

      以及git diff查看修改的代码

      对于不需要改动的文件,可使用checkout +文件路径 即可还原至修改之前

4, git pull,正常情况下,commit之前都是要pull下来

5, 若有新增文件,git add 文件路径 或者 git add ./ 

6, git commit 文件目录 -m "这里是注释"

       git commit ./ -m "注释" commit所有修改过的文件

       git commit -am "注释"  这个是commit所有修改过的文件(这一条尚未核实)


7, git push origin HEAD:dev 这个是push到指定分支

       也可直接使用git push,前提是远程工程分支名跟本地分支名是一样的。

       可通过git log 和git show查看push后的结果以及明细


三,.git文件夹

git跟svn最大的区别就是:

svn所有的分布式迭代版本都在svn服务器上,本地只有一份工程。所以,svn只需要commit就把文件同步到远程服务器了。

git在本地也有版本迭代记录的功能,就在.git文件夹里记录着。所以,git的commit只是本地git记录版本迭代,push就是把本地工程和版本的迭代文件一起同步到远程git服务器。

从这层意义上来讲,git还是牛逼很多。在保证远程有一份稳定的版本的情况下,本地随意迭代。


四,master和branch

一般很多企业的开发会有一个master版本和一个dev版本。

dev:开发者开发的版本

master:产品准备上线的版本

正常流程是这样的:

1,dev开发好了,目测没有问题

2,git commit   ,[git rebase],git push

3,再切换到master  git checkout master

4,然后把dev版本合并到master git merge dev

5,然后也可以push到远程(注意,这里就不需要commit了,因为从dev合并过来的版本把.git的版本迭代记录也合并过来了)

这里从master打包出产品给测试人员测试,测试不通过的话再回到第1步。测试通过了,就发给市场工作人员上线到正式环境。

6,回到dev  git checkout dev (这是个好习惯)


主要到上面的git rebase了没,很多开发工程师很注意细节的,为了确保每次只提交完后,本地的和远程的是一模一样的,而且据说可以保证分支不乱。

git rebase时很容易遇到需要先git stash,因为你有其他地方也修改了,但是这次你并不需要提交。那么可以git stash,就是还原那个文件。

那么,提交代码后,你又要刚才那个改过的文件,怎么办?这个时候可以参加下面git stash的使用。


在master和dev之间的合并,开发,很容易出现一种情况:

你切换到了master后,忘记了切回dev,然后一不小心就在master上面开发了。直到push完了,再git checkout的时候才发现原来是在master上面开发的。

别紧张,这个时候你把master当作dev,把dev当作master就好了。也就是说你把master合并到dev就可以了。(正常是不建议这么做的,因为master是很重要的)


冲突解决:

一,push的时候提示要pull

问题:push的时候提示要pull

原因:远程已经有其他人提交过修改,但是你push之前忘记了pull

方案:

1,先pull下来

2,然后git status查看其他人是否跟自己修改了同一个文件。

若不是,则可以直接push上去

若是,你们修改到同一个文件,那么使用git differ查看是否有冲突。 此时简单的可以自己合并修改成自己想要的样子。重要的改动的话需要找到另外一个开发者共同讨论一起合并。最后,再commit 然后push上去。


常用功能:

一、回到过去版本:

1,cd到工程目录下, git log 可以看到所有历史版本(可以获取到历史版本id)

好像是q可以回到shell编辑

2,git reset --hard 历史版本id


二、回到过去某个版本后,如果再回到未来?

1,git reflog

2,从上往下找到第一个pull:Fast-forward,复制前面的代码

3,git reset --hard 代码

这里有个地方我没有讲清楚,上面是回到未来最后一个版本。那么想要指定某个版本,虽然没有讲到,但是到了那个时候了,相信读者会知道怎么玩的。


三、还原本地修改

方法1:git checkout 文件名      :这可以还原单个文件,通过git status可以查看修改过的所有文件

方法2:git reset -hard      :这是还原全部修改过的文件


四、暂存本地修改,pull最新代码  

这也是很常用的一个功能:当你本地有修改并没有全部完全,临时需要pull下来别人的代码,但是你又不能提交自己未完成的代码。这个时候就需要暂存、再pull、再恢复、再解决冲突

1,git stash

2,git pull

3,git stash pop stash@{0}

4,若有冲突,则须先解决冲突

git冲突内容

其中Updated upstream 和=====之间的内容就是pull下来的内容,====和stashed changes之间的内容就是本地修改的内容。碰到这种情况,git也不知道哪行内容是需要的,所以要自行确定需要的内容。


分支开发之分支合并

来源:http://www.imooc.com/video/4586/0


分支开发之合并到master

来源:http://www.imooc.com/video/4587


多人开发的经验:

1,多用客户端和工具,少用命令行。这是别人说的,我不表态哦。我是觉得命令行很装逼的,用客户端的话效率会高很多。

2,每次提交前,diff自己的代码,以免提交错误的代码

3,下班回家前,整理好自己的工作区

4,并行的项目,使用分支开发

5,遇到冲突时,搞明白冲突的原因,千万不要随意丢弃别人的代码。

6,产品发布后,记得打tag,方便将来拉分支修bug


其他:

1,stash贮藏

不太懂啊。

我这么操作过一次:工程修改后,然后stash,会还原到上次pull的工程。 再unstash,又会回来修改后的工程。

2,.gitignore git忽略

目前:可以做到对新增文件ignore,但是对于修改的文件不能做到ignore。如果把该文件copy出去,在push后,再copy回来,就是可以被ignore了。

3,githug通关攻略

据说把githug玩通关了,git使用就基本无障碍了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值