51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Git合作开发

Git 合作开发实例:eesast 开发 {#menu_index_1}

说明:团队仓库名为eesast,个人仓库名为yxj

将远程仓库下载、链接到本地 {#menu_index_2}

克隆原仓库到本地 {#menu_index_3}

git clone <eesast.url> --origin eesast <project_new_name>

--origin <远程仓库名>用来给默认的名字origin重命名

--origin:-o

<project_new_name>指本地新出现的文件夹的名称

fork仓库使得自己有push的权限 {#menu_index_4}

GitHub上操作,得到自己fork后的仓库链接<yxj.url>

进入clone后的仓库 {#menu_index_5}

cd <project>

添加自己的远程仓库 {#menu_index_6}

git remote add yxj <yxj.url>

add后紧跟的是远程仓库的名字,可以自定义

查看关联的远程仓库 {#menu_index_7}

git remote --verbose
git remote --verbose show eesast
git remote --verbose show yxj

--verbose:-v

开始开发自己的功能 {#menu_index_8}

注:一般团队仓库只有一个master分支

先拉取最新内容 {#menu_index_9}

git fetch eesast

将最新的内容merge到自己的master分支 {#menu_index_10}

git checkout master
(master) git merge eesast/master

这里应该不会遇到冲突,因为本地不会在master分支进行开发,除非你修改文件的时候忘记切换到新的分支

checkout到新的分支 {#menu_index_11}

git checkout -b modify

开始自己修改代码 {#menu_index_12}

拉取最新的代码 {#menu_index_13}

如果你在checkout -b之后一直把改代码这件事情扔在一边儿,那么你在开始修改之前最好再拉取一下最新的信息进行合并:

git fetch eesast
(modify) git merge eesast/master

修改 {#menu_index_14}

比如增加文件、删除文件,增加代码、删除代码等

提交 {#menu_index_15}

(modify) git add .
(modify) git commit -m"modify sth"

拉取最新代码查看是否有冲突 {#menu_index_16}

在上一次commit之后,再次修改代码之前,你需要拉取最新的代码;这时可能会遇到冲突,因为你在本地修改的时候别人可能已经在远端仓库提交了PR并且被管理者merge到新的代码中。遇到冲突需要自己解决

git fetch eesast
(modify) git merge eesast/master

在解决冲突后再次commit;如果无冲突则没有必要commit

(modify) git add .
(modify) git commit -m"solve conflicts"

再次修改 {#menu_index_17}

重复上述"修改","提交","拉取最新代码"的过程

push到远端和提PR {#menu_index_18}

push到自己的仓库 {#menu_index_19}

git push yxj modify:modify

这里的语法是:git push <远程主机> <本地分支>:<远程分支>

含义:将某一本地分支推到远程主机的远程分支;如果远程仓库没有这一分支,则创建

也可以写作:

(modify) git push yxj modify

这里的语法是:git push <远程主机> <远程分支>

含义:将本地的当前分支推到远程主机的远程分支;如果远程仓库没有这一分支,则创建

提PR {#menu_index_20}

登陆GitHub,在你的仓库可以拿着刚刚推到远程的modify分支向团队仓库提一个PR

等待开发者merge {#menu_index_21}

如果PR被拒绝,你可以继续更改代码、commit、push、提PR直到merge;也可以直接弃坑lol

开发者merge之后删除modify分支 {#menu_index_22}

删除远程分支 {#menu_index_23}

方法一 {#menu_index_24}

在团队仓库的PR界面,如果成功merge,那么你可以看到一个delete branch的按钮,可以直接点击按钮删除自己fork的仓库中的modify分支

方法二 {#menu_index_25}

git push yxj --delete modify

方法三 {#menu_index_26}

git push yxj :modify

这里的语法是:git push <远程主机> :<远程分支>(注意和push到远端仓库做区分)

删除本地分支 {#menu_index_27}

(master) git branch -d modify

确认删除可以使用:

(master) git branch -D modify

可能遇到的问题 {#menu_index_28}

使用git fetch --all将所有远端仓库(eesast和yxj)的最新"状况"拉取到本地

这时使用命令git branch -a查看所有分支,发现远端yxj的modify分支并没有删除

这说明不能通过git fetch命令获取到分支删除的更新

使用git remote -v show yxj查看分支状况,发现modify分支是陈旧的(stale)

使用git remote prune yxj删掉本地陈旧的远端分支(就是

远端已经删除掉了但是本地还没删除掉的分支)

或者拉取信息的时候使用:

git fetch -p --all

References {#menu_index_29}


CSDN | Git远程分支的删除与同步


Git Documentation



赞(2)
未经允许不得转载:工具盒子 » Git合作开发