用过至少三种git软件。没有一款好用的!今天就出事了。。真的还不如Xcode集成的,以后还是推荐使用命令行操作。至于分支图建议网页浏览。
事情是这样的,本地有一个用于测试的项目,平时的一些小研究,测试钻研代码都在里面。然后一直也不怎么着急放到网上去。这份本地半年多没提交了,曾经在github上面建了个库。
然后刚刚用了github Desktop提交报错,让我pull。心想莫非曾经改动过忘了pull,就pull了一下然后报错,提示我点击同步,然后就随手点了一下。然后……本地代码全没了。半年多的心血全没了……
软件的问题就在于,正常流程一点事没有。一旦报错他就开始瞎搞了,做他认为正确的事情。结果直接帮我还原到前面正确的版本,还原失败还强行还原。它自动帮我reset了一下,失败,然后又reset hard了一下。
曾经我也以为没什么是还原不了的,所有东西都可以找回来。所以我肆无忌惮。
直到我搜到了这行命令:
#将本地的状态回退到和远程的一样 强制回退,本地代码会被修改
git reset –hard origin/master
这个世界上还能有这种操作?!!
好了,不说了,我去静静。怀旧一下我那一百多个文件。
总结:本地写完代码,一定要注意放缓冲区。或者就索性直接commit,备份到服务器才是真实的,才不会被替代。即便代码出了问题,也可以备份后 再回滚到某一个版本对比着来修复问题。
这篇文章太单调,顺便加一些git命令吧:
git clone 地址 下载项目(地址在你当前位置,通过cd切换你想去的目录)
注:pull之前如果git认为你有冲突 需要先把改变的工作放到本地缓存区,有一个好的解决办法。本地缓冲区,不是add。或者当你一边写代码,一边出了bug,可以先把当前进度的代码放进缓存区,改完bug提交,注意这时候是可以正常提交push的,提交后再pop回到之前的代码进度。
git stash [save message]对当前的暂存区和工作区状态进行保存。
git stash list列出所有保存的进度列表。
git stash pop [--index] []恢复代码进度
具体流程:
git stash
git pull
git stash pop
git add .
git commit -m “”
$ git commit -a -m “” 组合提交
git push
git checkout 文件名 撤销修改
git checkout . 撤销所有修改
#回退所有内容到上一个版本
git reset HEAD^
#回退a.py这个文件的版本到上一个版本
git reset HEAD^ a.py
#向前回退到第3个版本
git reset –soft HEAD~3
#将本地的状态回退到和远程的一样 强制回退,本地代码会被修改
git reset –hard origin/master
#回退到某个版本
git reset 057d
#回退到上一次提交的状态,按照某一次的commit完全反向的进行一次commit
git revert HEAD
git push -d origin devel 删除远程分支
git branch -D devel 删除本地分支
git checkout -b devel 创建本地分支
git branch test 创建本地分支
git checkout -b yangdingjia origin/master创建本地分支跟踪远程分支
git branch —all 查看全部分支(远程)
git pull -p 拉取分支
git push origin devel 推送本地分支到远程
git merge devel 合并devel分支到当前分支
git rebase 也是合并分支但是合并后会自动把合并的分支放到树干后面 显得提交历史很干净像是没合并过一样。
rebase的过程中,也许会出现冲突(conflict). 在这种情况,Git会停止rebase并会让你去解决 冲突;在解决完冲突后,用"git-add"命令去更新这些内容的索引(index), 然后,你无需执行 git-commit,只要执行:
$ git rebase --continue
这样git会继续应用(apply)余下的补丁。
在任何时候,你可以用--abort参数来终止rebase的行动,并且"mywork" 分支会回到rebase开始前的状态。
$ git rebase --abort
网友评论