公司刚用 git,还不太会用,请教下怎么合并代码

2020-11-25 10:19:31 +08:00
 darknoll

公司原来都是用 svn 的,现在刚改成用 git

现在有一个 master 分支,然后每个人都有自己的分支

每个人开发的时候,最开始是从 master 上拉取代码到自己的分支,比如 A:master->A-dev; B:master->B-dev

现在两个人同时开发自己的部分,最后都要合并到 master,A 先提交,那么 A 直接合并到了 master,然后 B 提交,B 是不是要先把 master 的代码 pull 下合并?

都是这样的工作流程吗?

12164 次点击
所在节点    程序员
81 条回复
manzhiyong
2020-11-25 10:20:58 +08:00
你得先 commit,否则 pull 不下来。
jinhan13789991
2020-11-25 10:23:23 +08:00
https://git-scm.com/book/zh/v2
去官网看教程呗
janus77
2020-11-25 10:23:35 +08:00
看官方教程文档×
论坛发帖问√
hdfg159
2020-11-25 10:24:52 +08:00
一般提交本地,再 merge 进主分支,merge 就提示合并代码了
acmore
2020-11-25 10:29:21 +08:00
不用的。如果你们改的不是同一个地方,那么直接提 Pull Request 就可以,Git 会帮你做合并的事情的,你只需要关心自己的 Feature 是否是最新就好。
doracoinC
2020-11-25 10:34:24 +08:00
https://www.liaoxuefeng.com/wiki/896043488029600

花点时间在网上找些文章看一看,比你在线等回复实际多了
dalidali
2020-11-25 10:37:11 +08:00
我是习惯先将 master 合并到自己的分支,有冲突解决冲突,之后在在把自己的分支合回 master 比较好
cyrbuzz
2020-11-25 10:37:39 +08:00
B 确实需要 PULL 一下最新的 commit 与本地的 master 保持一致。

如果你不 PULL 的话直接 PUSH,Git 会提示你(fetch first),这时候你有两种选择:

1. PULL 一下保证与远程仓库的 commit 保持一致,然后用 git merge B-dev 合并 B 的代码,这时候可能会出现冲突,冲突需要手动进行合并,未冲突的情况会直接走默认合并策略进行合并。关于合并策略可以参考这个: https://morningspace.github.io/tech/git-merge-stories-2/。

2. PUSH 的时候加-f,然后就能强制推到 master 不用 PULL,然后可能会被打(逃~)。
Flywith24
2020-11-25 10:37:55 +08:00
我猜你是白嫖 git 教程的。推荐一个可视化的网站吧: https://learngitbranching.js.org/?locale=zh_CN
chenyu8674
2020-11-25 10:38:45 +08:00
SVN 和 GIT 的逻辑不同,前者面向内容,后者面向变更
先尝试着熟悉这一点,不然用起来会很别扭
oueryini
2020-11-25 10:38:50 +08:00
下个 sourcetree
ChengLuffy
2020-11-25 10:39:33 +08:00
多人协作还是新手偏多的话建议 fork,内网环境搭 gogs 或 gitea 都不错
yufpga
2020-11-25 10:41:15 +08:00
每次合并之前,pull master 分支并不是必须的。因为你最后 push master 的时候,如果远程 master 分支有未 pull 的内容,会要求你先 pull master,否则你无法将本地的修改 push 到 master 上去. 另外还可以参考 git-flow 的流程.
kkkwar
2020-11-25 10:42:39 +08:00
darknoll
2020-11-25 10:44:38 +08:00
@flywith24 瞧你说的
tiktokxxxx2020
2020-11-25 10:50:53 +08:00
不会用不去看文档,不去看书,在这发什么贴........
vision1900
2020-11-25 10:51:01 +08:00
按照你的描述是这样的。如果远程分支有你本地没有的改动,需要先 Pull, 如果没有冲突,完事大吉,Commit 本地改动之后 Push 就完了。
另一种方法是用 rebase, 相较 Merge 有诸多好处,有的团队甚至明令禁止用 Merge, 看你们谁管事儿了
oahebky
2020-11-25 11:00:22 +08:00
git clone <url>
git branch <name>
[git add *]
git commit -am "***"
git checkout master
git pull --rebase
git checkout <name>
git ⬛⬛⬛
git ⬛⬛⬛

(手机坏了?,不是,点赞自动显示隐藏部分 :-)
hws8033856
2020-11-25 11:01:47 +08:00
@chenyu8674 没觉得两者有多大区别
git 多了一个本地库,除此之外,两者使用逻辑都差不多
undefinedfalse
2020-11-25 11:03:49 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/728992

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX