参考链接:https://www.liaoxuefeng.com/wiki/896043488029600
1、只删远程仓库文件,但不删本地文件
- 把xxx.iml加到`.gitignore`里面忽略掉
2. git rm -r --cached xxx.iml //-r 是递归的意思 当最后面是文件夹的时候有用
3. git add -A
4. git commit -m "ignore xxx.xml"
5. git push
2、查看所有版本提交记录,包括回退版本记录(防止版本回退后,找不到最新版本)
git reflog
3、撤退修改
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时用命令:
git restore filename
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令 git restore --staged filename,就回到了场景1,第二步按场景1操作
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,使用版本回退
4、远程仓库
本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa
和id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh
目录,里面有id_rsa
和id_rsa.pub
两个文件,这两个就是SSH Key的秘钥对,id_rsa
是私钥,不能泄露出去,id_rsa.pub
是公钥,可以放心地告诉任何人。
第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub
文件的内容:
![6ab37922187f663d8ee3b74abd9208c3.png](https://img-blog.csdnimg.cn/img_convert/6ab37922187f663d8ee3b74abd9208c3.png)
![182cf9e690fd267fe96d24e5120136ac.png](https://img-blog.csdnimg.cn/img_convert/182cf9e690fd267fe96d24e5120136ac.png)
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
5、操作远程仓库关联
查看关联的远程仓库地址:git remote -v
关联远程仓库地址:git remote add origin xxx
修改远程仓库地址:git remote set-url origin xxx
删除远程仓库地址:git remote rm origin
6、保存与恢复工作现场
保存工作现场:git stash
恢复工作现场:git stash pop
PS:在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick <commit>
命令,把bug提交的修改“复制”到当前分支,避免重复劳动
7、分支
查看远程分支:git branch -r
查看所有分支:git branch -a
8、标签
创建标签:git tag <tagname> [<commit id>]
查看所有标签:git tag
查看指定标签信息:git show <tagname>
- 命令
git push origin <tagname>
可以推送一个本地标签; - 命令
git push origin --tags
可以推送全部未推送过的本地标签; - 命令
git tag -d <tagname>
可以删除一个本地标签; - 命令
git push origin :refs/tags/<tagname>
可以删除一个远程标签。
8、fork仓库如何保持同步更新
1.给 fork 配置一个 remote
主要使用git remote -v
查看远程状态
git remote -v
# origin https://github.com/shengjk/flink.git (fetch)
# origin https://github.com/shengjk/flink.git (push)
添加一个将被同步给 fork 远程的上游仓库
git remote add upstream https://github.com/apache/flink.git
再次查看状态确认是否配置成功。
git remote -v
origin https://github.com/shengjk/flink.git (fetch)
origin https://github.com/shengjk/flink.git (push)
upstream https://github.com/apache/flink.git (fetch)
upstream https://github.com/apache/flink.git (push)
2. Syncing a fork
(1).从上游仓库 fetch 分支和提交点,传送到本地,并会被存储在一个本地分支 upstream/master
git fetch upstream
(2).切换到本地主分支
git switch master
(3).把 upstream/master 分支合并到本地 master 上,这样就完成了同步,并且不会丢掉本地修改的内容。
git merge upstream/master
当然也可合并为一步操作
git pull upstream master
如果想更新到 GitHub 的 fork 上,直接git push origin master
就好了。
这里推荐使用rebase,因为merge之后,会有记录,然后在提交PR,会很难看
9、配置别名
例如:git config --global alias.co checkout
参考:https://www.liaoxuefeng.com/wiki/896043488029600/898732837407424