Git团队开发(二)

git和svn对比:

 

SVN需要一个单独的服务器

Git不需要: 文件中、U盘中、云上、github、OSChina...

 

一、建立代码仓库(专门用于团队开发的代码仓库)

 

切换目录 cd /Users/wjq/Desktop/git演练/公司/weibo

建立空白代码库(专门用于团队开发) git init --bare

注意: 这个仓库仅仅是用于管理代码, 不参与开发

 

二、项目经理初始化项目

》2.1先克隆一份空得仓库到本地

 

切换目录 cd /Users/wjq/Desktop/git演练/经理
 

git clone /Users/wjq/Desktop/git演练/公司/weibo/
 

 

》2.2忽略不需要加入版本控制器的文件以及文件夹  参考网址:https://github.com/github/gitignore
 

.gitignore

注意: 配置忽略文件只需要到github上搜索.gitignore拷贝别人写好的代码即可

配置.gitignore一定要在和.git隐藏文件夹同一级的目录下

》2.3生成好.gitignore文件之后, 还需要将.gitignore文件添加到版本控制

git add  .gitignore

git commit .gitignore -m””

》2.4新建项目

》 source conrol—>commit  将代码提交到本地仓库

》source conrol—>push 将代码提交到远程仓库

 

git中默认就会创建一个分支, 这个分支叫做origin/master, 相当于svn中的trunk

专业人员只需要在git仓库的hooks文件夹中写一些指令, 就可以完成自动测试(压力测试、自动测试、集成测试、冒烟测试、。。。)

 

》 和SVN一样, 如果服务器仓库的代码被修改了, 我们再提交代码也会报错。

fetch first == out of data

 

总结:

git和svn最大的区别

》1.git每次修改新增都需要add

》2.git每台电脑都有一个仓库

》3.git是先提交到本地仓库, 再提交到远程仓库

 

git的分支管理

 

分支管理 - Tag

# 查看当前标签

$ git tag

 

# 在本地代码库给项目打上一个标签

$ git tag -a v1.0 -m 'Version 1.0'

 

 

注意: 此时此刻打上的这个标签仅仅是一个本地标签。(和服务器没有关系)

#查看某个标签的信息用

git show v1.0 

#删除某个标签

git tag -d v1.0 

# 将标签推送到远程代码库中

$ git push origin v1.0

 

将所有标签一次推送到远程代码库中

 

git push origin --tags

 

删除远程的标签,你可以到github上删除,也可以

 

  • 先删除本地的

git tag -d v1.0

 

  • 删除远程的

git push origin :refs/tags/v1.0

# 使用tag,就能够将项目快速切换到某一个中间状态,例如产品开发线上的某一个稳定版本

# 签出v1.0标签

$ git checkout v1.0

 

# 从签出状态创建v1.0bugfix分支

$ git checkout -b bugfix1.0

 

# 查看远程分支

$ git branch -r

 

# 删除远程分支

$ git branch -r -d origin/bugfix1.0

 

开发流程:

 

1.开发2.发布3.保存稳定版本4.继续开发5.出现bug

6.分配员工到分支上修复bug

>员工从服务器下载最新代码

》员工利用git checkout v1.0指令快速切换到1.0版本

》根据提示:开启一个新的分支开始修复代码

git checkout -b 1.0bug_fix

 

7.合并修复后的代码到主线

8.备份稳定版本

 

分支管理 - branch

 

分支查看

git branch 查看本地分支 (*标识的是你当前所在的分支

git branch -r 查看远程分支

git branch -a 查看所有分支

分支创建

git branch 分支名 创建本地分支

git checkout 分支名 切换本地分支

git checkout -b 分支名 创建+切换分支

备注:要想基于某一个分支创建新分支,先切换到这一分支下再创建新分支

git checkout --track origin/分支名 远程分支和本地分支需要区分好,所以,在从服务器上拉取特定分支的时候,需要指定远程分支的名字

注意该命令由于带有--track参数,所以要求git1.6.4以上!这样git会自动切换到分支。

git push origin 分支名  远程分支就是本地分支push到服务器上。比如master就是一个最典型的远程分支(默认)

git push origin <local_branch_name>:<remote_branch_name> 提交分支数据到远程服务器(一般当前如果不在该分支时,使用这种方式提交)

git pull origin 分支名  从远程获取某一分支

git checkout -b 分支名 origin/分支名  创建远程的dev分支到本地

分支删除

git branch -d 分支名  删除本地分支

git push origin :分支名 删除服务器远程分支(分支前的冒号代表删除)

 

分支合并

合并到master中

git checkout master 切换到master

git merge 分支名 合并某一分支到master分支

 

git merge最简洁用法

一、开发分支(dev)上的代码达到上线的标准后,要合并到 master 分支

git checkout dev
git pull
git checkout master
git merge dev
git push -u origin master

二、当master代码改动了,需要更新开发分支(dev)上的代码

git checkout master 
git pull 
git checkout dev
git merge master 
git push -u origin dev

 

参考一

假设每个人有个开发分支,想隔一段时间就把自己的开发分支上的代码保持和测试分支一直,则需要如下操作:
我想将test分支上的代码完全覆盖dev分支,首先切换到dev分支
git checkout dev

然后直接设置代码给远程的test分支上的代码
git reset --hard origin/test

执行上面的命令后dev分支上的代码就完全被test分支上的代码覆盖了,注意只是本地分支,这时候还需要将本地分支强行推到远程分支。
git push -f
————————————————

参考一

git push origin develop:master -f
把本地的 develop 分支强制(-f)推送到远程 master

但是上面操作,本地的 master 分支还是旧的,通常来说应该在本地做好修改再去 push 到远端,所以我推荐如下操作

git checkout master // 切换到旧的分支
git reset --hard develop // 将本地的旧分支 master 重置成 develop
git push origin master --force // 再推送到远程仓库

————————————————

 

 

举个例子:

这时如果你很幸运,直接合并成功。悲伤的事情总是时有发生,“合并发生冲突”是常有的事,因此一旦出现类似下面的提示

 

  1. CONFLICT (content): Merge conflict in ...

  2. Automatic merge failed; fix conflicts and then commit the result.

就得自己动手解决冲突了,git会用

 

  1. <<<<<<<HEAD

  2. master原有的内容(当前分支内容)

  3. =======

  4. debug分支中冲突的内容(另一分支内容)

  5. >>>>>>>debug

  6.  

 

这样的格式提醒你,只要修改保留实际需要的内容后即可解决冲突,解决冲突后就可以执行git commit。

解决冲突的具体步骤:

第一步:编辑文件,删除特殊符号

第二步:把文件修改到满意的程度,保存退出

第三步:git add [文件名]

第四步:git commit -m "日志信息"     (注意:此时commit一定不能带具体文件名)

 

好了,我们合并了master和debug,

想看看git是怎么记录合并的,没问题,

 

git log --graph --pretty=oneline --abbrev-commit

就可以直接看到分支合并的过程

 

备注:vscode 用git 拉取代码,提示:在签出前,请清理存储库工作树 解决办法

// 手动解决
git stash
git pull
git stash pop


// 放弃本地修改,直接覆盖
git reset --hard
git pull

解释命令作用
git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。

git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。

git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。

git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
 

-> stash save(把自己的代码隐藏存起来) -> 重新pull -> stash pop(把存起来的隐藏的代码取回来 ) -> 代码文件会显示冲突 ->  打开文件解决冲突 ->commit&push

手动解决完冲突文件后,然后

git add .

git commit -m '注释信息'

git push  

即可

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值