1、如果项目中有个地方不小心搞错了,或者自己坏掉了
$ git reflog
这条命令能列出你在 Git 上的所有操作记录,你只要找到 HEAD@{index} 前面所对应的操作 索 引,并使用下面命令即可:
$ git reset HEAD@{index}
注:使用时需将HEAD@{index}替换为对应索引。
2、想改东西,但代码已经提交了
首先,添加下当前已改动的代码:
$ git add .
然后,运行下面这条命令,它就会把你刚刚添加的代码合并到最后一次提交上了:
$ git commit --amend
3、想重写一下提交历史
还是上面提到过的那条代码,运行一下,就可以重写提交历史啦
$ git commit --amend
4、不小心把新分支的代码提交到主分支上
先创建个新分支(some-new-branch-name):
$ git branch some-new-branch-name
然后把刚刚的提交从主分支中移除
$ git reset HEAD~ --hard
需要注意的是,上面的代码只会切换到最后一条提交记录上,如果你已跑到其它提交记录上怎么 办?没关系,你可以用 git reset HEAD@{number} 再跑回来。
等你跑回来之后,我们再切换到新分支上:
$ git checkout some-new-branch-name
现在主分支干干净净,刚刚不小心提交的代码也被移到新分支上了。
需要注意的是,上面的代码只对本地仓库有效,如果你已经把代码提交到远程仓库上,那就得跟 队友商量下解决方案了。
如果你队友在旁边,可以让他帮你在线上主分支上 reset 然后 push -f 一下就好啦~
5、不小心把代码提交到错误的分支上
先撤销最后一次提交,但保留变更代码:
$ git reset HEAD~ --soft
$ git stash
再切到你想要提交的正确分支(name-of-the-correct-branch)上,并把变更代码提交上去:
$ git checkout name-of-the-correct-branch
$ git stash pop
$ git add .
$ git commit -m "your message here"
也可以用cherry-pick这个命令来完成上面这些操作。具体的操作步骤如下
首先,切换到正确的分支上
$ git checkout name-of-the-correct-branch
然后使用cherry-pick来获取最新一条提交记录
$ git cherry-pick master
最后再把主分支那条提交错误的记录删除
$ git checkout master
$ git reset HEAD~ --hard
6、运行diff后啥都没有
遇到这种情况,应该是文件没有加入到暂存区的缘故。解决方案很简单,咱们要么把文件加 入 到暂存区,要么就直接使用下面这条命令:
$ git diff --staged
这样,就可以看到未存入暂存区文件的 diff 效果啦。
7、如果本地项目很乱,可以执行下面的语句
$ cd ..
$ sudo rm -r fucking-git-repo-dir
$ git clone https://some.github.url/fucking-git-repo-dir.git
$ cd fucking-git-repo-dir
是的,这就是备胎(线上仓库)的强大之处,只要你备胎尚在,你就可以大大方方的把本地仓库删了,clone 备胎,从头再来。
8、本地代码提交到远程仓库,或者从远程仓库拉取代码
输入 git add . (. 表示所有的)或者 git add + 文件名 (此命令可以将文件保存到缓存区) 注意:不要忘记 敲空格
$ git add .
输入 git commit -am "此处填写上传文件描述" ,此命令主要是为了添加文件描述
$ git commit -am "添加描述"
输入 git pull origin master 命令 ,这步的作用是:将远程仓库pull到本地你新建的文件夹中
$ git pull origin master
输入 git push origin master ,将本地代码push到码云仓库
$ git push origin master
9、最后配一张 Git 命令思维导图
原图链接:https://www.processon.com/view/link/5c6e2755e4b03334b523ffc3#map