Open zhangsanshi opened 6 years ago
git push -f
Git
这里会以 Q&A 的形式,解决遇到的问题。争取这些 Q&A 能解决平时遇到的 80% 的问题!!!
Q&A
``` git reset HEAD fileName ```
``` git checkout -- fileName ```
在提交记录没有推送到远端的时候,代码你可以随意处置,只要不丢失重要代码即可。在未推送到远端的时候,可以通过 `git reset` 来回退代码。还有两个不常用的 `git reset --merge` 和 `git reset --keep`。 ``` 会丢失此次提交之后的所有提交,这个比较危险 git reset --hard commitid 会将 commitid 之后的提交记录都放到暂存区 git reset --soft commitid 默认,会将 commitid 之后的提交记录都放到工作区 git reset --mixed commitid ```
``` git reset HEAD . git checkout -- . # 或者 # 省略 commitid git reset --hard ```
`A` 突然找你修改一下 `B` 分支代码,此时你在 `C` 分支开发,已经修改了一些文件,但又不想提交,可以通过 `git stash`,临时保存这些代码,在处理完 `B` 分支的修改后,再回到 `C` 分支运行 `git stash pop` 即可。有时候不小心修改了一些文件但未提交,再进行切换分支的时候, Git 可能提示你文件有被覆盖的可能,此时就可以使用 `git stash` 与 `git stash pop` 来处理。`git stash list` 可以查看所有的临时保存。
代码尚未推到远端,你在 `A` 分支错误的提交了本该在 `B` 分支提交的记录,如何快速的把提交合并到正确的分支? 首先记住此次提交的 `commitid`,然后按照`本地的提交记录如何回退` 对 `A` 分支进行操作,然后回到 `B` 分支, 利用 `git cherry-pick commitid` 即可。
`git log` 可以查看分支的提交记录,但是假如你回退了本地的提交记录,又忘记了`commitid`, 现在又需要找回来,通过 `git log` 是无法找回的,但是又是很重要的代码,那么可以通过命令 `git log -g --abbrev-commit --pretty=oneline` 找到你的提交记录,命令太长?简短的是 `git reflog` 即可。拿到 `commitid`,可以选择 `git checkout commitid`,又或者 `git cherry-pick commitid`。
找到提交记录的 `commitid`,然后 `git revert commitid`,再将此次提交推送到远端即可,那么如何再恢复呢,找到 `revert` 对应的 `revertCommitid`, `git revert revertCommitid` 即可。这里需要注意的是如果需要 `revert` 分支合并产生的 `commmitid`,则需要多加参数 `git revert commitid -m [parentIndex]`,`parentIndex` 指的是 `merge` 这个动作的两个父提交的索引(如 1,2)。本地代码的回退就没有必要使用这个命令了,有点污染历史记录。这里注意!!!千万不要 `git push -f`。
如果你的代码和远端有冲突,此时运行了此命令,会覆盖掉远端的提交,导致其他人的本地此分支都和远端冲突,接着所有人都需要对冲突进行处理。所以你的代码和远端有冲突的时候,首先要做的是合并冲突,解决冲突。
在目录下新建文件 `.gitignore`,写上需要忽略的目录。但是 `Git` 无法忽略已经被 `git add` 或者 `git commit` 的文件,此时需要 `git rm` 这些文件再进行配置
``` # 用户信息修改 git config --global user.name "xxx" git config --global user.email "xxx" # 仓库地址修改 git remote rm origin git remote add origin [url] # 或者 git remote origin set-url [url] ```
`git merge --abort`
`git push --tags`
Git 是很灵活的,上面提到的命令的使用方式远不止写到这么多,建议看官方文档的详细说明,只要不把提交记录推送到远端,其实随你在本地折腾的。
git merge 和 git rebase 有什么区别?
git merge
git rebase
git push -f
Git
如何忽略文件Git
如何更改本地配置0.1. 前言
这里会以
Q&A
的形式,解决遇到的问题。争取这些Q&A
能解决平时遇到的 80% 的问题!!!0.2. Q&A
0.2.1. 暂存区的提交如何回退到工作区
0.2.2. 如何取消对文件的修改,文件未放到暂存区
0.2.3. 本地的提交记录(未推送到远端)如何回退
0.2.4. 如何将暂存区的提交恢复到未修改的状态
0.2.5. 如何临时保存文件修改
0.2.6. 如何合并另一个分支的一次提交
0.2.7. 找到被删除的 commit
0.2.8. 推上远端的提交记录如何回退
0.2.9. 为什么不推荐使用
git push -f
0.2.10.
Git
如何忽略文件0.2.11.
Git
如何更改本地配置0.2.12. 如何终止 merge
0.2.13. 如何推送 tag
0.3. Tips
Git
是很灵活的,上面提到的命令的使用方式远不止写到这么多,建议看官方文档的详细说明,只要不把提交记录推送到远端,其实随你在本地折腾的。0.4. 更多
git merge
和git rebase
有什么区别?