用 GitHub 之类合作开发有什么规范吗?

2018-09-07 09:01:33 +08:00
 yuge0099
目前和别人合作开发小项目,代码更新快,本地代码不能及时更新最新的代码。使用 pull 自动 merge,总会造成文件丢失,代码丢失的情况。想问一下一般大家是怎么处理的。
4382 次点击
所在节点    程序员
36 条回复
xcstream
2018-09-07 14:42:13 +08:00
master 锁定 只能去网站上 pr 合并
passerbytiny
2018-09-07 14:46:50 +08:00
只要你本地提交了,合并的时候就只会合并或冲突,不会删除。而如果你本地没提交,合并的时候只会合并或者禁止合并。就算对方用了 rebase & commit force,你本地拉取合并的时候,仍然是已你本地的提交为基准,不会删除文件。所以我是真搞不明白为啥楼主的文件回丢。
@arthasgxy 如果把 git checkout xxx,跟 git checkout -b xxx 算成两个命令,几百个都有。
JeffKing
2018-09-07 14:47:35 +08:00
hmmm...你是不是沒有在本地 commit 就直接 pull 了。。。
arthasgxy
2018-09-07 14:51:49 +08:00
@passerbytiny
这个。。命令不都是这样来计算么?
git add [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]
[--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]
[--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing] [--renormalize]
[--chmod=(+|-)x] [--] [<pathspec>…​]

(来自 https://git-scm.com/docs/git-add

如果能按照你这么算。。。那真的 xxx 都能分别算了。。。 这样 git 就有无限个命令了。。
zhzer
2018-09-07 14:53:54 +08:00
合并冲突是需要手动解决的
passerbytiny
2018-09-07 14:56:12 +08:00
@arthasgxy 对于新人来说,不能按照 linux 命令格式去算命令多少,而应该按照功能点去算。你看看下面这篇文章就知道 git 功能点有多少了。http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html
passerbytiny
2018-09-07 14:58:59 +08:00
@JeffKing 本地没 commit 的时候直接 pull,不会造成文件丢失。因为只要新的 commit 和本地工作空间中有同一个文件,那就是冲突,回禁止 pull/merge。
arthasgxy
2018-09-07 14:59:50 +08:00
@passerbytiny 不,我不打算进行这个话题。
因为偏离了主旨。(我同样不否认 git 功能非常多,以及新人需要掌握的非常多)

我只是想反驳他所说的:“看来是 git 不会用” 和 “网上说了”
对于前一句,就像你所说“所以我是真搞不明白为啥楼主的文件回丢。”, 同感。
对于后一句,无力吐槽。
yuge0099
2018-09-07 19:01:28 +08:00
@KeepPro 是遇到这样了
yuge0099
2018-09-07 19:05:15 +08:00
@KeepPro
在处理 conflict 的时候 git 显示
remove file1
remove file2 大概是这样。
sampeng
2018-09-07 19:25:30 +08:00
刚回答完别人。。粘贴过来

在用 svn 的经验告诉我。。所有的分支合并。。挑选合并是最靠谱的。频繁的从 dev 分支把代码 cherry pick.或者合并的时候手动的 cherry pick。而不是无脑 merge。。其实每次从 dev 分支往主干上合并并没多少东西。这样合并几乎不会有任何问题。。。
无脑 merge、rebase。只有知道没有人在我之前提交任何东西。并且的清楚知道合并和开发顺序。其实无所谓,操作完了千万别 push 上去。。检查一下没问题再 push。。。

省事一点就 git flow 之类的。其实一开始我觉得这个很牛逼。。其实用了才发现没什么卵用。项目节奏变化多端。。
sampeng
2018-09-07 19:27:37 +08:00
就两个重点。。个人用起来觉得没什么问题。可以应付暂时面临的所有问题。

cherry pick
开分支,频繁的 pull/fetch。
sampeng
2018-09-07 19:34:30 +08:00
再 ps 一句。。。

模块分离才是核心。。其他各种技巧都是假的。

无法做到干净的模块分离。成吨的冲突,神仙都救不了
melonrice
2018-09-07 19:36:48 +08:00
PR 啊。。。
waterlaw
2018-09-07 20:49:04 +08:00
waterlaw
2018-09-07 20:52:18 +08:00

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

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

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

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

© 2021 V2EX