| 
 为了使时间线不出现回环,使时间线性。push代码前先按以下两种方式同步代码 方法一 - git stash     # 先缓存本地修改
 
 - git pull      # 同步远端修改
 
 - git stash pop # 取出本地修改
 
 - git commit    # 正常提交代码
 
 - git push origin xxx     # 推送代码
 
 
  复制代码 方法二:- git commit
 
 - git pull -r # ps : 注意一定要加-r
 
 - git push origin xxx
 
  复制代码 说明注: 如果本地修改了文件后没有commit, 是无法执行这个命令的。 如果本地的改动暂时不想提交, 可以执行 git stash把更改暂存起来,代码取下后用git stash pop恢复。  
rebase:如果本地执行了commit, 取代码的时候没有加上 –rebase选项, 那么代码取下后, 分支线就有可能变成以下样子: - *   commit 4763ad3a3fe0997ac3b8b961e5b48b112e5c90d3
 
 -   |\  Merge: 2cfc4bb bd310c9
 
 -   | | Author: zhao11 <zhao11@gmail.com>
 
 -   | | Date:   Fri Nov 21 20:17:31 2014 +0800
 
 -   | |
 
 -   | |     Merge branch 'master' of git@github.com:zmkj/zmkj.git
 
 -   | |
 
 -   | * commit b0c04ba1081c1774fc5736682230038fcaa28d7b
 
 -   | | Author: Tiaot11 <Tiaot11@gmail.com>
 
 -   | | Date:   Thu Nov 20 17:25:23 2014 +0800
 
 -   | |
 
 -   | |     修改3
 
 -   | |
 
 -   * | commit 2cfc4bb285586517cd40846b39ce649d89bf19bd
 
 -   |/  Author: zhao11 <zhao11@gmail.com>
 
 -   |   Date:   Fri Nov 21 20:15:39 2014 +0800
 
 -   |
 
 -   |       修改2
 
 -   |
 
 -   * commit af140294a9e9d0382d75a79ff739402d4f5fa4f1
 
 -   | Author: zhao11 <zhao11@gmail.com>
 
 -   | Date:   Thu Nov 20 09:01:31 2014 +0800
 
 -   |
 
 -   |     修改1
 
 -   |
 
  复制代码使用git log --graph可以查看,针对以上例子的情况, 可以使用: - git rebase b0c04ba1081c1774fc5736682230038fcaa28d7b
 
  复制代码rebase的参数是一个提交记录sha1,这里选的是log为“修改3", 也可以选其他,根据具体情况而定。 执行完rebase命令后没意外的话分支线应该就正常了, 还是用git log --graph进行确认(分支线正常, 没有干掉正常的提交记录) 确认无误后就可以push到github了, 注意, 如果在github上的分支线已经是这样“乱”了的话, push的时候要加上–force选项(谨慎!!!), –force即强制把自己本地的代码库覆盖github上的。  
rebase到底做了什么事情:rebase就是选取某个提交作为起点, 沿着这个提交点往下构建一条新的分支线, 分支线以外的提交以patch的形式一个一个地打到这条分支线上。  
 
 
 
 
 
 |