[关闭]
@chyoo1991 2015-10-13T01:46:38.000000Z 字数 2423 阅读 2719

Git的失误总结

git 代码管理



说明


最近实习过程中,Git老是用的不到位。其原因有两方面:

这阵子和大伙一起开发,一方面知道了协作的问题,另一方面也明白了项目开发中对Git使用的一些需求。

这篇总结主要集中在两个方面:


使用习惯

好的习惯能避免很多很多问题。我觉得应该是好的习惯:

1.工作流


决定写代码之前,确定Git工作流:集中式?分支pull merge?


1.1 集中式

如果是集中式,只需要在master上修改和开发。但要注意在git push之前,git pull一下。当然,也可以用git fetch:

git fetch origin master # 取得远程主机origin的master分支的最新更新
git merge origin/master # 把本地分支与远程master最新的合并

git pull 或者 git merge这种方式是创建一个新的commit。如果在合并过程中出现冲突,则需要解决冲突,然后再 git addgit commit,最后git push上去。

当然,如果直接执行git push,当远程分支上有了新的更新,这时候push不会成功,就要用上述办法解决。

现在比较好奇的是我本地有多个commit,远程也新提交了多个commit,最后合并成一个commit,那么git log会是怎么样的?

对于这个问题,我的猜想是:把本地的commit log加在远程的commit log之前,再加一个merge log,不然会破坏远程的commit tree,提交的时候必须加--force了。

查证了下,我的理解还是有误。commit log 是以commit log 树的形式展示,这儿是分叉的,不是把谁加在谁前。不过,远程显示的时候,还是按照时间顺序显示commit log。

查看commit log 树的方式:

git log --graph

除了git pullgit fetch,还可以用rebase方式,这种方式可以保证commit log具有好看的线性提交记录。

  1. git fetch origin master # 取得 master的最新信息 [应该可以不用这个命令]
  2. git rebase origin/master # 将本地分支放在最新的之前,生成新的commit
  3. git push

1.2 分支

如果是pull merge方式的话,就需要开分支。此时要:

在本地开新分支的命令:

git checkout -b new_branch

在本地开发完毕,提交的时候要注意:


2.节奏


所说的节奏是自己在开发或者是修改代码的时候,应该用什么样的节奏使用Git。


3.处理异常



不常见且有用的命令

  1. git stash # 当前修改了,但没有提交,又要切换分支,就先stash一下
  2. git stash pop # 恢复当前工作区
  3. git reset --hard origin/master # 将当前工作区完全恢复成远程分支一样
  4. git reset --hard commit_id # 硬撤销到某次提交
  5. git blame filename # 查看这个文件的历史修改
  6. git revert commit_id # 撤销某次提交,反写,以新的commit保存
  7. git log --follow -p filename # 查看修改历史,对排错很有用
  8. git commit --amend # 重新提交,可以添加忘了提交到暂存区的,还可以修改提交commit
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注