Git 大家都是怎么用 git 的呢?

tassandar · 2012年01月10日 · 最后由 RobinWu 回复于 2012年02月04日 · 3756 次阅读

新手小白一个,最近刚刚开始学着用 git,感觉除了 commit,branch,和 check out,其他用的各种不熟练,而且似乎感觉 merge 起来好难受呀。 感觉是不是方法不对,请教一下大家都是怎么用 git 的呢?

如果碰上下面这种情况各位大大会怎么输怎么做呢?求详细指点啊。

  1. 服务器一份资料,自己机子一份资料,放在 github 托管。 感觉最近写的差不多了,登陆服务器想把某个项目代码开一个分支覆盖掉原来代码进行测试。(有增有改,怎么强制 merge?)。
  2. 在机子里面的 branch 里面写了一份代码,想要 merge 到 master 里面,某几个文件夹里面文件覆盖原来的,其他的不变,怎么做呢?一个一个 merge 好麻烦啊。
  3. 和别人一起开发一个项目,他说他 fork 好了,我想某几个 pull 下来并且 merge,其他七七八八的例如他机子上的配置,都不想要,(有没有”都不想要“的命令)。。。
  4. 开一个 branch A,然后写了一半 commit 了一下,然后继续写,又 commit 了一下,这时候我觉得后面这部分 commit 写的烂掉了,想试试其他方法,回到前面的 commit,开一个 branch B,然后继续写,写完觉得不错,想直接把这个 branch B 变成 master(master 不想要了。)

啊。。好崇拜那些随手一写代码就写得好漂亮,命令一输什么都可以做好的人啊。。。

  1. 看不明白
  2. 不想变的部分你不提交就行啦,如果不想整个分支都 merge 到 master,可以考虑用 cherry-pick
  3. 将不想要的部分写到.gitignore 中就可以了
  4. 将 master 分支删除,然后将 branch B 重命名为 master git branch -D master && git branch -m master

如果你期待别人能回答好你的问题,首先麻烦将问题描述得清楚点吧,看你的问题描述我都有点不知所云的感觉啊

  1. 应该另外 clone 一份用来测试
  2. Merge 不处理冲突就不是 Merge 了。你可以处理冲突的时候 git check branch path/to/dir 把某分支里的目录签出覆盖当前,但我觉得这不是处理冲突时候的思路,试想你忘了 master 里有些修改是你需要的。
  3. 配置文件作成 xxx.example.yml,部署的时候复制一份填写,.gitignore 文件里面填写配置文件的路径,不签进版本控制。
  4. 把 B merge 进 Master

我感觉楼主版本控制的时候没有一个清晰的思路,似乎是写到哪算哪,随意抛弃历史,这样版本控制的可追溯好处你都用不上了。应该看看 2 楼的链接。

还有谁都不是一下写出漂亮代码的。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号