git的工作流程

随着项目人员的增加,需要多人协作开发,源仓库默认有个master分支,我们需要再次创建一个develop开发分支,一般源仓库是受保护的,开发者不应该直接对其进行开发工作。master主要有两个作用:

  1. 汇总参与该项目的各个开发者的代码;
  2. 存放趋于稳定和可发布的代码。

有两种方式实现多人协作:
- 第一种方式,在源仓库下开一个分支develop,大家有更新直接提交到develop中,如果该版本比如V1.0.0完成,就可以合并到master上就好。其中,每个人是从develop下切新的分支,比如dscdev,dscdev开发一个小feature之后,也可以通过merge requests的方式向develop提pr,同时也可以邀请组内成员review代码。leader阅读完之后没问题,就可以merge到develop分支中。
- 第二种方式是每个成员都需要fork源仓库中的一份代码到自己的远程库之中。

此处假设源仓库地址为git@github.com:flutter/flutter.git,我的远程仓库地址为:git@github.com:duanshoucheng/flutter.git。在Android Studio下clone我的远程仓库到本地,然后:

  1. git remote add upstream git@github.com:flutter/flutter.git
    upstream可以自己命名。此时可以使用命令:
    1)git remote -v
    可以查看所有的远程仓库
    2)git remote show [remote-name]
    相比上一个命令,可以查看某个远程仓库更详细内容,包括仓库下有哪些分支
  2. git fetch [remote-name] // git remote update upstream
    更新远程仓库所有的数据,包括所有的分支,所以远程仓库崩溃了,可以使用 当前本地仓库重建远程仓库。
    merge的时候,可以选择某一个分支来合并到当前分支,当然本地的分支一定要提前设置好跟踪远端仓库的分支。
  3. git checkout -b [分支名] [远程名]/[分支名]
    为本地分支设定不同于远程分支的名字。[远程名]/[分支名]表示远程分支
    例如:git checkout -b develop origin/masterdevelop
    现在本地分支 develop会自动将推送和抓取数据的位置定位到origin/masterdevelop

解释几个额外的命令:
1. git fetch remote_repo remote_branch_name:local_branch_name
这将更新名称为remote_repo 的远程repo上的分支: remote_branch_name ,
并在本地创建local_branch_name 本地分支保存远端分支的所有数据。
2. git branch –set-upstream-to=origin/remote_branch your_branch
origin/remote_branch是你本地分支对应的远程分支;your_branch是你当前的本地分支。
3. git remote add origin git@github.com:flutter/flutter.git
git remote add (remote) (repoUrl)用于不相关的两个库
本地仓库关联远程仓库(一般是被fork的仓库,也是源仓库)。
添加后,远程仓库的名称就叫origin

以下是之后常用的工作流程

  1. git add .
  2. git commit -m “xxx”
  3. git checkout develop
  4. git pull -r
  5. git checkout dsc/develop
  6. git rebase develop

    可能有冲突,命令git status会提示。此时可以git diff — cached xx/xx/xx/xx.java查看冲突的详情,

    然后git add xx/xxx/xx/xx.java,或者git add .

    status查看,会有提示下一步的操作过程,最后 git rebase —continue.

    然后(重要)切换到dsc/develop分支下

  7. git push -f origin

    建议在后面添加 dsc/develop:dsc/develop,冒号前面代表本地仓库,冒号后面代表远端仓库。如果不添加后面的,可能会报错:the current branch dsc/develop has no upstream branch

  8. 可以在网页中提PR了。

注:建议开始工作时多执行:git status查看当前情况。首次使用的顺序:

1)我的fork仓库:develop //此步在网页中操作

2)我的开发分支:dsc/develop (本地分支一般和远程分支都有对应关系)

 新建分支的命令:git checkout -b dsc/develop   ,创建了一个名为dsc/develop的分支

 删除分支的命令:git branch -D dsc/develop  ,删除了一个名为dsc/develop的分支

 本地分支如果同步了远程分支,那么继续删除远程分支的命令:git push origin --delete dsc/develop(需要删除的分支名)

可能会出现的问题:

1、已经push远端,怎么回退

git reset –soft HEAD~1 //~1代表回退上一个版本.

HEAD已经指向上一个commits了,我们可以是用git reflog验证下。

继续使用git status就可以发现已经处于commit状态了。

其他用法:

1、查看分叉历史命令:

git log –oneline –decorate –graph –all

2、stash的使用

出现的场景:有时候在一个分支下开发到一半,想切换别的分支,但又不想提交已修改的。

解决方法:使用命令:git stash 可以存储修改的,内容,git stash list就可以查看所有的存储列表。

如果想使用存储的修改,可以使用git stash apply命令。这个命令是最近的一次存储,如果有很多存储,可以使用命令git stash apply stash@{2} 里面的数字取决于你需要恢复的版本。

删除的命令:git stash drop stash@{0} 括号里的数字为需要删除的版本

参考:
1。 开源中国的教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值