git常用操作
比较全面的网站 https://www.cnblogs.com/miracle77hp/articles/11163532.html
结合实际情形总结:
1.git add *之后想要撤回,有git reset和git rm两种,详情看 https://www.cnblogs.com/sunshine-xin/articles/3521481.html
git rm -r --cached . 删除全部本地缓存 --cached表示只是删除git中缓存,不是删除物理文件
取消跟踪某个文件 https://zhuanlan.zhihu.com/p/133414092
2.子模块的问题(添加子模块) 命令git submodule add <子模块git项目地址> <路径> 例子: git submodule add [email protected]:helloobaby/idasdk76.git ida-plugin/idasdk76
3.删除远程分支 先git remote -v看看有没有反应 没有的话git remote add orgin(远程仓库名) url(远程仓库地址ssh/https) 然后git push makefile --delete main 删除makefile项目的main分支,如果main分支为当前或默认分支,则先切换才能删除,否则提示删除请求拒绝
4.从git上克隆(下载)了一个项目,我需要push到自己的仓库里。(替代github 的fork)不管是克隆还是下载,第一步首先是在github要创建一个容纳这个项目的空仓库。 (1)如果是克隆下来的话,参考 https://www.cnblogs.com/likwo/p/6102428.html 但是这个git的commit是原作者的,所以等于是把别人仓库原模原样搬过来,github显示的也还是原作者的commit (2)如果是下载下来的话,估计就比克隆下来多了一行代码"git init"
5.回滚操作 (1)
git reset --hard (commit_id) //git log可以获得commit_id,一长串的那个
这条命令是把你的工作区恢复到上一次commit的样子
命令提示:(1)不会删除未跟踪的文件,未跟踪的文件对git来说是完全不管的状态,git clean -df可以删除未跟踪文件 (2)如果你没有commit当前的更改,执行这条命令的时候在工作区的文件修改就全部丢失了,所以你要保证当前工作区较上一次commit的修改没用了再执行这条命令。
6.子模块未能成功克隆的问题 git clone --recursive 由于网络原因经常会失败,那么之后该如何解决才能克隆子模块。命令 git submodule update --recursive,直到成功克隆为止。
7.项目clone下来后发现少子模块 git submodule update --init,和上面差不多
8.git回退版本 https://blog.csdn.net/ccorg/article/details/80115408 git log git reset git push -f (-f很危险,会覆盖很多信息,非常不推荐使用)
8.git完全删除子模块 rm -rf 子模块目录 删除子模块目录及源码 vi .gitmodules 删除项目目录下.gitmodules文件中子模块相关条目 vi .git/config 删除配置项中子模块相关条目 然后git commit就行
不追踪某个文件的更改,但是需要把他保留本地/云端仓库内
git rm --cached 之后commit会让云端应用更改,云端就没有这个文件了。虽然本地还有。
目前的解决办法是手动把这个文件的内容恢复到云端的同样内容,这样git就不追踪了,commit完之后马上把文件内容恢复回来继续开发
参考https://www.cnblogs.com/lovelyli/p/13359421.html
git克隆子模块下来后,更改子模块的版本 参考https://stackoverflow.com/questions/61163082/why-does-git-submodule-update-fail-with-fatal-remote-error-upload-pack-not-o