git的使用过程
git使用命令及应用场景
本地仓库操作(local repository:版本库.git或本地仓库)
本地有两个区(工作区 <=> 暂存区/缓存区)
git init (初始化)
git add (添加到暂存区)
git add flie1 file2...
git add /目录
git . 添加所有
git status(查看状态)
-s 输出简短的结果
git commit (提交)
-m "附带信息" 暂时存取 --> commit到 本地仓库中
文件1 文件2 ...多文件提交 -m "附带信息"
-a 直接提交到本地仓库 不需要 add .
-am 直接提交附带信息
设置提交代码时的用户信息:
git config --global user.name ' '
git config --global user.email
git reset(撤回)
当点击add . 提交到暂存区后 需要推回可以指定 文件退 git reset --hard HEAD 目标文件, 再commit后就不会被提交上去
-- soft 参数用于回退到某个版本:
--mixed 为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。
--hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交:
HEAD 表示当前版本
用符号表示:
--hard
HEAD 退回当前版本
HEAD^ 上一个版本
HEAD^^ 上上一个版本
HEAD^^^ 上上上一个版本。。。。。
用参数表示:
HEAD~0 表示当前版本
HEAD~1 上一个版本
HEAD^2 上上一个版本
HEAD^3 上上上一个版本。。。。
git rm(删除)
git rm 目标文件
git rm -f 强制删除 目标文件
为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。
git mv(移动)
git mv 命令用于移动或重命名一个文件、目录或软连接。
如果新文件名已经存在,但还是要重命名它,可以使用 -f 参数: git mv -f file newfile
git diff(暂存区和工作区文件的比较)
尚未缓存的改动(显示暂存区和工作区的差异):git diff flie
查看已缓存的改动(显示暂存区和上一次提交(commit)的差异:): git diff --cached / git diff --staged file
查看已缓存的与未缓存的所有改动:git diff HEAD
显示摘要而非整个 diff:git diff --stat
远程仓库操作(remote repository)
ssh连接
连接github账号: ssh-keygen -t rsa -C "github账号"
在C盘下用户目录中查找key .ssh 文件夹,进去,打开 id_rsa.pub,复制里面的 key。 将key复制到github账号ssh里
验证连接情况 :ssh -T xxxxxx@github.com
对远程仓库的基本使用命名
git remote
-v 显示所有远程仓库
add [本地的版本库名] [github库路径]
rm 远程仓库 删除
rename 目标仓库名 新的仓库名 # 修改仓库名
远程分支和本地分支的合并和数据获取(git fetch 和 git merge)
先拿数据git fetch(拿来) git fetch [起别名]
再将远程分支合并到本地分支git merge(合并)
场景: 远程有个需要修改的文件,git fetch [本地版本库名orgin] 拿到数据到工作区后修改,完成后用git merge origin/分支 再合并到去远程库分支去
git pull(于从远程获取代码并合并本地的版本) = fetch + merge
远程分支(origin/main) 与 本地分支(master)合并 git pull origin [远程分支] : [本地分支]
省略:如果远程分支名与本地分支名相同可以这样写(假设本地分支是main) git pull origin main
git push (推送) 从将本地的分支版本上传到远程并合并
场景:本地分支(master)推送到远程分支(origin:main): git push orgin (本地分支): (远程分支)
如果本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数: git push --force origin master:main
删除本地版本库的远程分支: git push origin --delete main
分支操作
查看分支列出你在本地的分支: git branch
创建分支: git branch 分支名
切换分支: git checkout 分支名
创建新分支并立即切换到该分支下: git checkout -b 分支名
删除分支:
删除本地分支 git branch -d 分支名
删除远程分支 git push 本地版本库 --delete [远程分支名]
合并分支: git merge
当分支合并后发生冲突时,需要对它来拉取(git fetch)后修改完再合并
git fetch -->git add 修改完的文件 ---> git commit 修改完的文件 - m "文件修改好了" --> git push 远程分支:本地分支 --> git merge 再合并远程分支
日志操作
git log - 查看历史提交记录。
git blame
- 以列表形式查看指定文件的历史修改记录。 git log --oneline 查看历史记录的简洁的版本
git log --graph 选项,查看历史中什么时候出现了分支、合并。以下为相同的命令
git log --reverse --参数来逆向显示所有日志
git log --author=用户名 查找指定用户的提交日志
指定日期
git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges
--since(从什么..开始) 和 --before(在什么之前开始) --until(直到什么时候结束) 和 --after(直到什么时候结束)。 --no-merges 选项以隐藏合并提交
git log --oneline --before={n.weeks.ago} --after={2021-n-n} --no-merges
git blame 目标文件 指定查看修改记录文件
异常问题解决:
问题一 git add . 的时候遇到warning: LF will be replaced by CRLF in ...... 解决办法
解决方法: git config --global core.autocrlf false
就可以解决了。
原因就是:
原因是路径中存在 / 的符号转义问题,false就是不转换符号默认是true,相当于把路径的 / 符号进行转义,这样添加的时候就有问题
问题二 如果还没添加远程仓库前就先 git add.到缓存中,再去添加远程仓库,再去push就会出现异常
**git pull --rebase [origin] [远程分支] ** 本地生成ReadMe文件
提交顺序不对
正确的顺序:
git init --> git remote add 远程仓库 --> git pull [origin] [远程分支] ---> git add . --> git commit -m "提交" --> git push [master]: [远程分支]
问题三
在git merge 后报错使用
git pull origin master --allow-unrelated-histories( 允许不相关的历史记录)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)