Git学习

分布式代码管理器

SVN是集中式团队开发工具模式
Git是分布式

两者最大的区别在于开发者可以在本地提交。每个开发者机器上都有一个服务器的数据库。

一般开发者的角度:
1.从服务器上克隆数据库(包括代码和版本信息)到单机上
2、在自己的机器上创建分支,修改代码
3、在单机上自己创建的分支上提交代码
4、在单机上合并分支
5、新建一个分支,把服务器上最新版的代码fetch下来,然后和自己的主分支合并
6、生成补丁(patch),把补丁发送给主开发者
7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
8、一般开发者之间解决冲突的方法,开发者之间可以使用pull命令解决冲突,解决完冲突之后再向主开发者提交补丁

主开发者的角度(假设主开发者不用开发代码)
1、查看邮件或者通过其他方式查看一般开发者的提交状态
2、打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁可用,哪些不用)
3、向公共服务器提交结果,然后通知所有开发人员。

优点:
适合分布式开发,强调个体
公共服务器压力和数据量都不会太大
速度快,灵活
任意两个开发者之间可以很容易地解决冲突

缺点:
资料少
学习周期相对而言比较长
不符合常规思维
代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息

Git常用命令的使用
clone现有仓库
git clone URL(URL支持git ,ssh,http,https等各种协议)
git中文件的各个状态
unstaged --git仓库中没有此文件的相关记录
modified --git仓库中有这个文件的记录,并且此文件当前有改动
staged --追加,删除,修改的文件被暂时保存,这些操作并没有提交到git仓库
commited --追加或修改的文件被提交到本地git仓库(git仓库中大部分都是这种文件,所以git status不显示这些文件)

查看git仓库中各文件状态
git status

初始化一个仓库
git init
在当前文件夹下生成.git目录,完成初始化,此时文件夹下的所有文件处于unstaged状态

追加文件
git add test.c
test.c的文件变为staged状态,其他文件还是unstaged状态
修改文件
echo “aaa” >>test.c
test.c的状态变为modified
删除文件
从git仓库和磁盘上删除文件
git rm test.c (当前目录中删除了test.c,在git仓库中暂时删除了test.c,相当于staged状态)
从git仓库中删除test.c
git commit -m “my message”(git仓库以后不再维护test.c)
删错了,恢复刚才的操作
git reset HEAD test.c(恢复到删除前的状态,当前目录中已删除的test.c也恢复了,test.c仍为commited状态)
仅从git仓库中删除文件
git rm --cache test.c(当前目录中没有删除了test.c,仅在git仓库中暂时删除了test.c,相当于staged状态)

git log(查看各次的提交信息)
git checkout commit号(恢复到未删除前的commint号,此时删除的文件也恢复到磁盘上了)
git checkout master(备份好删除的文件后,再回到最新状态)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值