指令熟悉了,遇到问题就会多条解决方案
git log 查看提交历史记录 常用 git log --oneline
git reset <commit-id> 回退指令
- git reset --soft <commit-id> 重置工作区和暂存区,并保留修改的代码
- git reset --hard <commit-id> 重置工作区和暂存区,并删除修改的代码
- git reset --mixed <commit-id> 重置工作区并保留代码,删除暂存区内容
git reflog 可以查看所有操作,如果误操作了 可以使用该指令,在通过 git reset <commit-id>来进行回退。
git fetch origin 只获取更新,不合并,然后再git merge, 这两个操作相当于 git pull
git merge --abort 当有冲突时,放弃合并回到合并前的状态
git push -u origin xxx 推送分支并建立远程追踪关系,下次可以直接用 git push 和 git pull
git cherry-pick <commit-id>将某个(或多个)指定的提交(commit)应用到当前分支上。
git branch -m old-name new-name修改分支名称
git rm <file_name>删除一个普通文件(同时从工作目录和暂存区删除) 只有提交了才生效
git rm 作用:
#从你的**工作目录**中物理删除指定的文件(除非使用了 `--cached` 选项)。
#将文件的**删除操作**添加到 Git 的**暂存区**。
# 删除名为 "obsolete.txt" 的文件
git rm obsolete.txt
# 然后提交这次删除
git commit -m "Remove the obsolete.txt file"
git rm --cached <file_name>从版本控制中删除文件,但保留在工作目录(本地文件不删除) 这一点深有体会,在使用idea开发java时,.idea文件也会在git工作区内,每次都是避免点击它,防止误提交,终于学到了
commit提交类型:
● 类型 (Type): 必须。表示提交的目的,使用以下关键词之一:
-
feat: 新功能 (feature)
-
fix: 修复 bug
-
docs: 文档更新
-
style: 格式化 (不影响代码运行的变动, 空格, 格式化等等)
-
refactor: 重构 (既不是新增功能,也不是修改 bug 的代码变动)
-
perf: 性能优化
-
test: 增加测试
-
build: 构建流程、外部依赖变更 (例如升级 npm 包、修改 webpack 配置)
-
ci: 修改 CI/CD 配置文件
-
chore: 构建过程或辅助工具的变动 (不属于以上任何一种)
-
revert: 撤销之前的提交
报错
- fatal:refusing to merge unrelated histories 解决办法: git pull origin master --allow-unrelated-histories