详情

首页手游攻略 Git通过命令行上传文件的基本操作和常见错误解决实用指南

Git通过命令行上传文件的基本操作和常见错误解决实用指南

佚名 2026-08-31 20:30:02

平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“Git借助命令行上传文件的基本操作和常见错误解决”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。

目录
  • 1. Git简介
  • 2. User的设置(用户绑定)
    • 2.1 文件设置
    • 2.2 命令行设置
  • 3. SSH Key的生成
    • 4. 建立本地仓库
      • 5. 命令行文件上传
        • 6. 删除已上传文件
          • 7. 删除git历史提交记录
            • 8. 清空git所有提交记录
              • 9. 移除敏感数据
                • 9.1 采用BFG
                • 9.2 采用filter-branch
              • 10. SVN和Git的区别

                从实现思路看,Git是一个很好的项目代码存放库。最近我正在初步了解Git,以下是我在借助Git Bash(命令行)进行文件上传遇到的系列问题,同时做好学习笔记以便于自己的学习,希望对你们也有帮助。好的习惯造就好的人生。

                1. Git简介

                在这个场景下,Git(读音为/gɪt/)是一个开源的分布式版本控制系统,能够有效、高速地处理从很小到很大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper。

                2. User的设置(用户绑定)

                2.1 文件设置

                理解这一步时,首先进入C:UsersAdministrator .gitconfig目录文件下,设置对应的user.name和user.email,同时设置永久保存密码。

                代码如下所示:

                [credential]
                helper = store

                2.2 命令行设置

                在git.bash中输入:

                git config --global user.name "Your Name" # 配置user.name
                git config --global user.email "[email protected]" # 配置user.email
                git config --global credential.helper store # 永久保存密码

                3. SSH Key的生成

                在git.bash中输入:

                ssh-keygen -t rsa -C "[email protected]" # 生成SSH Key

                在这个场景下,若已经有SSH Key,进入 ~/.ssh目录中用ls命令查询是否有id_rsa和id_rsa.pub两个文件,第一个文件为私钥,第二个文件为公钥。

                4. 建立本地仓库

                先进入项目目录下,输入:

                git init # 把这个目录变成git可以管理的仓库

                理解这一步时,建立本地仓库成功后,初始化成功后项目里会多了一个隐藏文件夹.git。如果已经建立,会提示重新初始化同时退出git仓库。

                如何查找文件夹中隐藏的文件夹git:

                从实现思路看,点击页面上方菜单栏查看一项,选中隐藏的项目打勾,就能够显示隐藏的git文件。

                5. 命令行文件上传

                在git.bash中输入:

                git add 文件名 # 将该文件添加到暂存区
                git commit -m "commit" # 将暂存区内容添加到本地仓库中,双引号内是提交注释
                git remote add origin 仓库地址 # 添加远程仓库,origin为远程仓库的别名,到github仓库中复制仓库地址,可以用https或者ssh
                git push -u origin master # 将本地的分支版本上传到远程并合并,上传本地代码

                1. 如何解决文件上传时报错warning:adding embedded git repository:项目名:

                实际处理时,即在本地初始化的仓库(采用 git init的文件夹) 中的某一个文件夹,也含有.git文件。

                首页需删除子文件夹里的.git文件;

                然后重新add、commit、push。

                2. 如何解决文件上传时提示fatal:remote origin already exists.:

                在git.bash中输入:

                git remote -v # 查看远程仓库信息
                git remote rm origin # 删除关联的origin的远程仓库
                git remote add origin 仓库地址 # 到github仓库中复制仓库地址,可以用https或者ssh

                6. 删除已上传文件

                在git.bash中输入:

                git pull origin master # 将远程仓库里面的项目拉下来
                dir # 查看有哪些文件夹
                git rm -r --cached 文件名 # 删除该文件
                git commit -m "删除文件" # 提交,添加操作说明
                git push -u origin master # 将本次更改更新到github项目上去

                7. 删除git历史提交记录

                方法一:

                git log # 查看git提交记录
                git reset --hard commit的hash值 # 找到需要回滚到的提交点,复制它的hash值
                git push origin HEAD --force # 将当前指向的head推到git

                方法二:

                git log # 查看git提交记录
                git rebase -i commit的hash值前5位 # hash值为记录ID标识,会进入vi编辑页面,用j,k键进行上移和下移,用cw组合键命令将首行的pick替换为drop,然后按下ESC键退出vi的编辑模式,然后进入末行模式输入wq!保存并退出。
                git log #查看git提交记录,是否确保已经删除。

                8. 清空git所有提交记录

                在git.bash中输入:

                git checkout --orphan latest_branch # 切换到新的分支
                git add -A # 缓存所有文件(除了.gitignore中声明排除的)
                git commit -am "commit" # 提交跟踪过的文件(Commit the changes)
                git branch -D master # 删除master分支(Delete the branch)
                git branch -m master # 重命名当前分支为master(Rename the current branch to master)
                git push -f origin master # 提交到远程master分支(Finally, force update your repository)

                注:git commit -m用来提交暂存区的文件;git commit -am用来提交跟踪过的文件。

                9. 移除敏感数据

                结合项目来看,若将敏感数据(比如密码或 SSH 密钥)提交到 Git 仓库,能够将其从历史记录中删除。 要从仓库的历史记录中彻底删除不需的文件,能够用git filter-branch命令和BFG Repo-Cleaner工具。

                9.1 采用BFG

                下载jar包

                结合项目来看,去官网下载BFG Repo-Cleaner的客户端(jar包)。将下载好的jar放到下载好的git库的同级目录。

                采用mirror克隆新的仓库

                git clone --mirror [email protected]:username(用户名)/my-repository.git(仓库名) # 到github仓库中复制仓库地址,--mirror后为仓库地址,可以用https或者ssh

                注:在启动客户端时,报错warning:is not a invalid repository(不是一个有效的库),就按上面的方式重新clone。

                删除不需的文件

                java -jar bfg.jar --delete-files id_{dsa,rsa}  my-repository.git # 删除仓库里所有的名为'id_dsa'或'id_rsa'的文件
                java -jar bfg.jar --strip-blobs-bigger-than 100M my-repository.git # 删除仓库里所有大于100M的文件
                java -jar bfg.jar --delete-folders doc my-repository.git # 删除仓库里文件夹下所有的文件
                git reflog expire --expire=now --all && git gc --prune=now --aggressive # 使用gc去除git认为多余的数据(上面调用命令删除的文件)
                git push # 将代码提交到远程仓库

                9.2 采用filter-branch

                克隆

                在git.bash中输入:

                git clone https://github.com/用户名username/远程仓库名 # 从github克隆一个远程仓库到本地计算机

                移除数据

                在git.bash中输入:

                git filter-branch --force --index-filter "git rm --cached --ignore-unmatch 文件路径"
                --prune-empty --tag-name-filter cat -- --all # git也支持删除文件夹的方式,只需在rm后添加'-r'

                防止再次提交

                在git.bash中输入:

                echo "文件路径" >> .gitignore # 创建.gitignore文件后面追加“文件路径”这个内容
                git add .gitignore
                git commit -m "Add 文件路径 to .gitignore" # 提交,添加操作说明

                提交git仓库

                在git.bash中输入:

                git push origin --force --all # 强制推送本地更改以覆盖github存储库,以及推送的所有分支

                提交git tags

                在git.bash中输入:

                git push origin --force --tags # 需要提交git tags,用以更新服务器的git tags

                删除本地缓存

                在git.bash中输入:

                git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin # 执行git的gc操作清理本地缓存
                git reflog expire --expire=now --all
                git gc --prune=now

                查看文件夹大小

                在git.bash中输入:

                du -hs # 完成上述所有操作后,再使用命令du -hs查看文件夹大小,发现项目只有100k左右。此时即完成移除敏感数据的相关操作。

                10. SVN和Git的区别

                SVN是集中式版本控制系统结合项目来看,,版本库是集中放在中央服务器的,集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。

                工作原理:工作时用的都是自己的电脑,所以首先要从中央服务器获得最新的版本,完成工作后需把自己做完的任务推送到中央服务器。

                Git是分布式版本控制系统在这个场景下,,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需联网,因为版本都在自己电脑上。

                工作原理:A在电脑上改了某文件,B也在电脑上改了某文件,这时,A和B之间只需把各自的修改的内容推送给对方,双方就能够互相看到修改的内容。

                从实现思路看,以上内容是关于git的user设置,SSH Key的生成,本地仓库的建立,文件的上传和删除以及log的删除和清空,BFG,filter-branch的系列操作。

                到此这篇关于Git借助命令行上传文件的基本操作和常用错误解决的文章就介绍到这了,更多相关Git命令行上传文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多兼容脚本之家!

                您可能感兴趣的文章:

                • Git如何实现撤销提交(命令行+IDEA)
                • gitee命令行上传项目的步骤详解
                • Windows 版本Git命令行的采用详解
                • GitLab文件的上传与下载方式
                • Git设置.gitignore文件忽略被指定的文件上传
                • git 将本地文件(夹)上传到gitee指定分支的处理方法
                • git之如何把本地文件上传到远程仓库的指定位置

                相关资讯
                点击查看更多
                游戏推荐
                推荐专题
                热门阅读
                推荐下载