为了使时间线不出现回环,使时间线性。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的形式一个一个地打到这条分支线上。
|