
最近和大学的室友一起做比赛项目 我们大家都是各自维护分支 然后往 dev 上合并分支
刚遇到一个事情就是 我首先合并了分支 然后我队友也合并分支上去了 但是他更新的部分还是原来的样子
1 SpiderXiantang OP 是我提出用 git 的 现在都有点难受了 让队友麻烦那么多 |
2 zpf124 2018-09-07 17:03:36 +08:00 git push -f ? |
3 SpiderXiantang OP @zpf124 我是用桌面版的 可能直接快进模式了 |
4 zlmdaybreak 2018-09-07 17:10:18 +08:00 @SpiderXiantang 找一下教程然后大家约定一下怎么开发,合并前需要先 fetch 一下。找工作的时候他们会感谢你让他们用 git。 |
5 michaelcheng 2018-09-07 17:11:53 +08:00 本地 merge 的时候是否有先 pull develop 的代码 |
6 raysonx 2018-09-07 17:17:07 +08:00 va Android 禁止 force puah |
7 raysonx 2018-09-07 17:17:26 +08:00 via Android 打错,先禁止 force push 再说 |
8 kimoCHG 2018-09-07 17:21:02 +08:00 git rebase 了解一下 |
9 msg7086 2018-09-07 17:22:00 +08:00 先学习如何使用 Git 吧。用东西不看说明书并不见得一直行得通。 |
10 orangeade 2018-09-07 17:23:43 +08:00 先学会 Git 命令行 |
11 Deville 2018-09-07 17:35:12 +08:00 via iPhone 不要用图形化界面工具 |
12 SpiderXiantang OP @Deville 我也想用命令行 项目是大家一起写的 所以想让他们简单点 就用的桌面版本 |
13 SpiderXiantang OP @michaelcheng 桌面版本感觉会定期去 fetch 远程仓库的代码 |
14 shily 2018-09-07 17:43:55 +08:00 每次 push 之前使用 pull --rebase, 先 rebase 一下 代码。可以避免不必要的 merge 节点。 |
15 SpiderXiantang OP @shily 谢谢老哥 我这就去学习一下 |
16 shenxgan 2018-09-07 17:47:25 +08:00 个人工作中,push 前总会先 pull 一下,将线上的先合并到本地,然后再 push |
17 SpiderXiantang OP @msg7086 我只学习了廖雪峰的 75%的 git 教程 感觉 git 用起来还是很虚 |
18 Reficul 2018-09-07 19:03:18 +08:00 via Android merge 之前先 rebase(推荐)或者 merge(不推荐)上游的代码 |
19 sampeng 2018-09-07 19:17:47 +08:00 你用 svn 成吨的冲突或者一样的错误。。和版本管理软件没关系。和怎么用有关 |
20 sampeng 2018-09-07 19:21:23 +08:00 在用 svn 的经验告诉我。。所有的分支合并。。挑选合并是最靠谱的。频繁的从 dev 分支把代码 cherry pick.或者合并的时候手动的 cherry pick。而不是无脑 merge。。其实每次从 dev 分支往主干上合并并没多少东西。这样合并几乎不会有任何问题。。。 无脑 merge、rebase。只有知道没有人在我之前提交任何东西。并且的清楚知道合并和开发顺序。其实无所谓,操作完了千万别 push 上去。。检查一下没问题再 push。。。 |
21 CoderEQ 2018-09-07 19:37:25 +08:00 via Android rebase.或者 merge 了解一下吧 |
22 thedrwu 2018-09-07 19:38:49 +08:00 via Android --no-ff 或者在 config 文件里把 fast foreward 关了 |
23 thedrwu 2018-09-07 19:40:19 +08:00 via Android 也许没看懂楼主的意思,是说 push 的时候-f 了吗 |
24 hasbug 2018-09-07 19:46:07 +08:00 2 个不懂 git 的人 |
25 KeatingSmith 2018-09-07 20:22:36 +08:00 via iPhone 提交代码不要直接提交到 dev, 通过 pull request 合并代码到 dev。 |
26 bombless 2018-09-07 20:30:29 +08:00 via Android 最简单就是不要在一个分支开发,比如如果用 gitlab 可以用 merge request |
27 msg7086 2018-09-07 23:46:10 +08:00 @SpiderXiantang Git 这玩意儿,说简单也简单,说复杂可以搞得非常复杂。这货完美继承了 Linux 的血统,想要吃透 Git,没个两三年的沉淀积累,我觉得难。初期我建议试试 SmartGit 这个 GUI 工具,比较直观。后期如果想换命令行的话,可以学他的命令行玩法,我敢说他命令行玩得比这帖子里很多人都要溜。 |
28 leconio 2018-09-08 00:34:52 +08:00 via Android 手动 pull 试试,先 reset 到要提交的 commit。然后 merge 远程分支到本地,最后 force push。 |
29 geelaw 2018-09-08 01:07:19 +08:00 via iPhone 对于 GitHub 用户的我来说,我通常只用 GitHub 的 pull request …… |
30 jasperjia 2018-09-08 02:56:02 +08:00 新手先用 GUI,sourcetree 中的分支图表对于你前期理解 git flow 很有帮助,吃透 git flow 后再上命令行。 |
31 RainyH2O 2018-09-08 05:57:18 +08:00 git 就好好把 pro git 看了,特别是内部原理那章 廖雪峰的入个门还行,但毕竟没把原理讲明白 见到 force,hard,rebase 之类的,没懂原理千万要慎用 甚至 git checkout branch file 都是有丢本地文件的风险的 这点 pro git 就有讲到,总归你用一条指令或是一次操作之前你就得清楚仓库,历史树,缓存,本地即将会发生什么 话说 GUI 还是有用的, 但不要依赖,主要是用来看每条指令发生了什么,理解原理最重要 不过你这描述老实说让人看不懂,你是说远程库没更新到你队友的提交? 那不就压根没 push 成功? |
32 dangyuluo 2018-09-08 07:30:22 +08:00 你这描述不清啊。不过常用的方法是: 1. 禁止 `git push --force`, 仅允许使用`git push --force-with-lease` 2. 修改开发流程,不要所有人都在同一个分支上开发。做什么 feature 就单独开一个分支,然后 master/dev branch 仅允许 merge request,不接收任何人 push。 |
33 shm7 2018-09-08 07:35:04 +08:00 via iPhone 楼上有理,但是任然解决不了要从主分支合并到开发分支的“ bug ”,事实上公司的 build cicd 之类的也会这么干。都是为了不冲突啊,保证 git 分支的基础 commit 是一样的,因为 git 就是一个 commit 基于前一个 commit |
34 WuwuGin 2018-09-08 09:00:56 +08:00 via Android 怕不是本地代码落后版本,然后强行 push 了。正常的命令行操作是先 pull 再 push。尽量不要用 gui 的 git,鬼知道会有什么问题。 |
35 Deville 2018-09-08 09:37:10 +08:00 via iPhone @SpiderXiantang 命令肯定是要懂的,不然图形化工具出错了怎么回滚都会懵逼。先了解节点概念,了解 merge 和 rebase 的节点管理差别,另外推荐 rebase .. |
36 sherardxu 2018-09-08 10:44:50 +08:00 先命令行再 GUI 会好很多 命令行还不熟悉的话 找一个靠谱的 GUI 也行 我用 jetbrains 家的 IDE 比较多 大部分使用时间没什么问题 但是偶尔遇到本地有更改 GUI 不显示 导致后续操作冲突 还是去命令行看 git status 靠谱 |
37 shalk 2018-09-08 11:19:01 +08:00 via iPhone 我觉得是你们处理冲突的问题,尤其是 eclipse gui,我遇到有人在冲突时,把别人修改的其他文件拖拽成恢复原样。这样提交之后,这个文件的修改就丢了。历史记录里很难追踪到罪魁祸首。 |
38 watzds 2018-09-08 15:02:18 +08:00 via Android 少改同一个文件,估计是合并时冲突,选择了放弃自己的版本 |
39 DongDongXie 2018-09-08 15:39:47 +08:00 提交之前先切换到 master 分支 pull 最新代码,然后切回自己的分支,再 rebase 就可以更新到最新了吧 |