1
zacharyjia 2018-09-07 09:08:20 +08:00 1
git flow / github flow / gitlab flow 了解一下?
|
2
innoink 2018-09-07 09:16:17 +08:00 via Android 1
你不处理 merge conflict 吗?
|
4
niboy 2018-09-07 09:39:52 +08:00 1
一份是本地的目录,一份专门用来同步服务器的最新代码。
每次合并,用 beycompare 比较 |
5
jy02534655 2018-09-07 09:41:45 +08:00 1
这个时候你需要的是 Git Extensions 这种傻瓜式工具
|
6
teddy2725 2018-09-07 09:44:27 +08:00
用 git 能用到代码丢失,我建议放弃写代码
|
7
wutiantong 2018-09-07 09:46:44 +08:00 1
你先学学 git 的原理吧,你所说的文件代码丢失,应该不是丢失了
|
8
zgray 2018-09-07 09:47:37 +08:00 1
除非强推覆盖,否则 log 里面找得回。找到干你代码的人,干死他。
还有,有时间还是去了解的版本管理的思路,光问不够的,不要只依靠一个工具就想解决所有问题。去看看一些开源项目,读读他们的 git 日志,看看他们的分支之类的,应该也有些帮助。 |
9
terence4444 2018-09-07 09:52:49 +08:00 via iPhone 1
试试看一下 gitflow/github flow 概念,PR 概念
|
10
nmgwddj 2018-09-07 09:58:01 +08:00 1
使用 git fetch 先将代码 fetch 下来但不合并。
使用 git rebase 替代 git merge 手动合并代码。 本地是有 commit 的,merge 时如果有删除文件可以从本地 commit 中恢复。你还是用 git 用的不是很熟悉。这个跟 github 没什么关系。 |
11
yuge0099 OP |
12
xlui 2018-09-07 10:11:48 +08:00 via Android 2
两个人在同一分支提交代码?不应该基于一个 master 开两个分支单独做,然后向 master 提 pr 嘛,如果当前分支落后于 master,拉 master 代码然后 rebase。gitflow 了解一下
|
13
SCaffrey 2018-09-07 10:19:01 +08:00 1
git branch 看看是不是切出去了= =
|
14
BarZu 2018-09-07 10:48:42 +08:00 1
1、尽量不要两个人同时改同一个文件
2、暂存、拉取、提交,记住 3 个步骤养成良好的习惯 3、注意,这是重点,尽量使用相同的编辑器,建议 vscode,禁止使用任何自动格式化工具,如果非要使用,那么每个人都必须使用同一款,相同版本,相同配置项 4、禁止 git 自动修改结尾符,不禁止这个,windows 编辑的代码以\r\n 结尾,非 windows 以\n 结尾,都可能造成冲突 5、建议使用 eslint 等代码校验工具在编码时就按提示规范好代码格式,不要犯强逼症随便去改别人的代码格式,缩进都不要改 |
15
waterlaw 2018-09-07 12:00:52 +08:00 via Android
看来是 git 不会用, 多用命令行, 网上说了会用 60-100 个命令才算熟悉使用 git.
|
17
crossoverJie 2018-09-07 13:26:55 +08:00 1
|
18
tourist2018 2018-09-07 13:54:28 +08:00
@waterlaw #15。。。100 个命令 看来这贴里的各位是没人熟悉 git 了
|
19
xiaoyang7545 2018-09-07 14:05:27 +08:00
不对啊。pull 时候应该会跟你本地的自动合并啊。应该是会重远端拉取这些文件到你的本地库。为什么会删除掉呢。
|
20
KeepPro 2018-09-07 14:21:02 +08:00
github: file a b c
本地:file a b c d e pull 的时候 d e 会被删掉? |
21
xcstream 2018-09-07 14:42:13 +08:00
master 锁定 只能去网站上 pr 合并
|
22
passerbytiny 2018-09-07 14:46:50 +08:00
只要你本地提交了,合并的时候就只会合并或冲突,不会删除。而如果你本地没提交,合并的时候只会合并或者禁止合并。就算对方用了 rebase & commit force,你本地拉取合并的时候,仍然是已你本地的提交为基准,不会删除文件。所以我是真搞不明白为啥楼主的文件回丢。
@arthasgxy 如果把 git checkout xxx,跟 git checkout -b xxx 算成两个命令,几百个都有。 |
23
JeffKing 2018-09-07 14:47:35 +08:00
hmmm...你是不是沒有在本地 commit 就直接 pull 了。。。
|
24
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 就有无限个命令了。。 |
25
zhzer 2018-09-07 14:53:54 +08:00 via Android
合并冲突是需要手动解决的
|
26
passerbytiny 2018-09-07 14:56:12 +08:00
@arthasgxy 对于新人来说,不能按照 linux 命令格式去算命令多少,而应该按照功能点去算。你看看下面这篇文章就知道 git 功能点有多少了。http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html
|
27
passerbytiny 2018-09-07 14:58:59 +08:00
@JeffKing 本地没 commit 的时候直接 pull,不会造成文件丢失。因为只要新的 commit 和本地工作空间中有同一个文件,那就是冲突,回禁止 pull/merge。
|
28
arthasgxy 2018-09-07 14:59:50 +08:00
@passerbytiny 不,我不打算进行这个话题。
因为偏离了主旨。(我同样不否认 git 功能非常多,以及新人需要掌握的非常多) 我只是想反驳他所说的:“看来是 git 不会用” 和 “网上说了” 对于前一句,就像你所说“所以我是真搞不明白为啥楼主的文件回丢。”, 同感。 对于后一句,无力吐槽。 |
30
yuge0099 OP |
31
sampeng 2018-09-07 19:25:30 +08:00
刚回答完别人。。粘贴过来
在用 svn 的经验告诉我。。所有的分支合并。。挑选合并是最靠谱的。频繁的从 dev 分支把代码 cherry pick.或者合并的时候手动的 cherry pick。而不是无脑 merge。。其实每次从 dev 分支往主干上合并并没多少东西。这样合并几乎不会有任何问题。。。 无脑 merge、rebase。只有知道没有人在我之前提交任何东西。并且的清楚知道合并和开发顺序。其实无所谓,操作完了千万别 push 上去。。检查一下没问题再 push。。。 省事一点就 git flow 之类的。其实一开始我觉得这个很牛逼。。其实用了才发现没什么卵用。项目节奏变化多端。。 |
32
sampeng 2018-09-07 19:27:37 +08:00
就两个重点。。个人用起来觉得没什么问题。可以应付暂时面临的所有问题。
cherry pick 开分支,频繁的 pull/fetch。 |
33
sampeng 2018-09-07 19:34:30 +08:00
再 ps 一句。。。
模块分离才是核心。。其他各种技巧都是假的。 无法做到干净的模块分离。成吨的冲突,神仙都救不了 |
34
melonrice 2018-09-07 19:36:48 +08:00
PR 啊。。。
|
35
waterlaw 2018-09-07 20:49:04 +08:00
@tourist2018 你别说, 还真有, [csdn link]( https://blog.csdn.net/halaoda/article/details/78661334)
|