git使用中遇到的问题

版本管理真是一点都不好玩儿......用这个博客记录一下之前遇到的问题。

目录

二、从指定的历史版本创建分支

三、fetch、merge、pull、rebase命令

四、覆盖上次提交(文件/备注信息)

五、windows下修改权限

六、查看config

七、删除分支(本地分支/远程分支)

八、查看本地仓库与远程仓库的区别


一、撤销上次远程push

1、git log

查看日志,选择上上次push的版本号

2、git reset --soft <版本号>

重置回上上次push,选择soft,此条命令执行完后再次git log查看发现没有了上次push的记录。

3、git push origin main --force

将上上次push强制提交,此时在网页查看发现上次push已撤销。

二、从指定的历史版本创建分支

1、git log找到对应历史版本的SHA值,是一个40位的串

2、从历史版本新建分支并切换到新的分支:git checkout -b 新分支名 历史版本SHA值

这一步执行完后可以git branch查看当前分支名,git log查看最近一条记录是不是指定历史记录

3、将修改的新文件推送到远程仓库:

git add .

git commit -m "信息"

git push origin 本地新分支名

三、fetch、merge、pull、rebase命令

终于会在本地使用rebase了。git真的有后悔药可以吃哈哈哈。

前提背景:我们已经提交四次commit,先后我们分别叫做A B C D,现在我们想把D做的工作与B合并。

以前我只会reset回B,再amend一次B,再提交一次C......

现在的操作:git rebase -i  比A更前一次的提交hash值(git log查看距今5次的提交hash值)

会出现界面如下,从上至下分别为我们的提交A B C D

git使用中遇到的问题_第1张图片

我们只需要把D的提交改为B之后,并将pick改为squash,s也可。保存退出。

再git push一次即可。

参考:

Git的git fetch, git merge和git pull, git rebase操作_祝你幸福365的博客-CSDN博客_gitfetch和gitmerge

git rebase详解(图解+最简单示例,一次就懂)_风中一匹狼v的博客-CSDN博客_git rebase

Git:Rebase和Merge之间的区别,看完这篇文章你就懂了!_IT技术分享社区的博客-CSDN博客

四、覆盖上次提交(文件/备注信息)

1、将已修改文件上传至暂存区:git add xxx

2、修改备注信息:git commit --amend

如果没有修改的,直接ESC,:q!退出。

3、重新push:git push -f origin main

至此已修改完成,可以git log查看版本号不同了,还可以查看各个版本之前不同点。

git使用中遇到的问题_第2张图片

五、windows下修改权限

提交后发现权限由100755->100644,我们这时就可以修改权限后重新覆盖上次提交。

1、git commit --amend查看哪些文件的权限变了

2、git update-index --chmod=+x  xxx.sh修改文件的权限

3、git push -f origin master重新强制提交覆盖上次提交

六、查看config

1、cd && ls -a

2、vim .gitconfig即可查看修改config

七、删除分支(本地分支/远程分支)

删除本地分支:git branch -D  [分支名]

删除远程分支:git push origin --delete  [分支名]

tips:有时候远程分支已经被删除,但是git branch -a 查看的时候,仍然会看到那个分支,那么我们需要清除远程分支的本地缓存:git fetch -p origin

八、查看本地仓库与远程仓库的区别

查看当前的工作目录与另外一个main分支的区别:git diff upstream/main

你可能感兴趣的:(Linux,git)