最近和大学的室友一起做比赛项目 我们大家都是各自维护分支 然后往 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 via 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 1
先学习如何使用 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 1
每次 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 1
在用 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 就可以更新到最新了吧
|