- Git下载与安装
- 设置
- 基本用法
- 创建版本库
- 添加文件到版本库
- git commit 某个文件夹一直提交不上去
- 查看文件是否被修改
- 查看及变更历史修改记录
- 本地历史修改记录
- 获得远程仓库历史修改记录
- 删除远程仓库的文件
- 本地删除后,推送本次删改后的内容
- 删除具体某文件
- 将本地文件推送到github仓库
- 拉取工程
- 拉取当前最新版本
- 查看指定版本
- 如果遇到问题【Git-error】Your local changes to the following files would be overwritten by checkout
- 删除某次 commit
- 推送
- 第一次推送项目,遇见问题 ! [rejected] master ->board (fetch first)
- 项目版本
- 本地打tag
- 推送标签
- 删除标签(修改标签)
- 分支
- 分支相关的常见命令
- git舍弃分支的修改
- 更改分支名
- 保存本地当前分支的内容
- 常用git stash命令:
- 后续
下载地址: https://download.csdn.net/download/qq_44629109/85330211
下载完成后可以得到如下安装文件: 双击下载的安装文件来安装Git。 一直下一步直到安装完成即可 安装完成后在电脑桌面(也可以是其他目录)点击右键,如果能够看到如下两个菜单则说明Git安装成功。 Git GUI:Git提供的图形界面工具 Git Bash:Git提供的命令行工具 点击Git GUI进入Git控制界面
设置用户信息 git config --global user.name “输入名称” git config --global user.email “输入email”
查看配置信息 git config --list git config user.name
通过上面的命令设置的信息会保存在~/.gitconfig文件中
基本用法 创建版本库版本库就是我们所说的“仓库”(repository),你可以理解为一个目录,这个目录里面的所有文件都可以被Git管理,文件的修改,删除Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”。 下面是在我的电脑→D盘→work文件下,创建一个名为lianxi的版本库: 在进入work目录中,点击右键打开Git GUI:窗口. cd:进入某个目录 mkdir:创建一个文件 pwd:显示当前的目录路径 执行命令git init,将这个目录变为git可以管理的仓库
在本地目录下创建使用到的文件,如1.txt。 然后将创建的文件添加到暂存区,然后提交到仓库。 git add:将文件提交到暂存区 git commit -m:将暂存区文件提交到仓库(单引号内为注释) git status:传看状态
问题分析: 直接拷贝过去的文件夹里面有个 .git 的文件,所以在执行 git status 的时候出现 modified: test (modified content, untracked content) 提示,这个提示存在的原因是 xxx目录是一个空目录,且里面有一个.git文件夹。就是因为这个.git文件夹导致这个提示。
问题解决: 把该文件夹里面的 .git 文件删除,然后执行下面命令
# 1. 移除错误文件名 test 在git中的进程树
git rm -rf --cached test
# 2. 确认移除
git commit -m '111'
# 3. 提交
git add .
git commit -m '111'
git push -u origin master
-
-
修改1.txt的文件,然后重新git status: git status:检查当前文件状态 git diff:查看文件修改的内容
查看历史记录 git log
git log:获得历史修改记录 git log --pretty=oneline:使记录只显示主要的内容,一行显示 cat:查看文件内容 git reset --hard HEAD^:回退到上个版本 git reset --hard HEAD^^:回退到上上个版本 git reset --hard HEAD~100:回退到回退到100个版本之前 git reflog:获取历史版本号 git reset --hard 版本号:回退到该版本号对应的版本
- 查看所有分支:git branch -a
- 查看远程分支log: git log remotes/origin/远程分支名
- 使用git commit -am’'命令,该命令会在提交到本地仓库的时候,会先更新修改和删除的文件信息到暂存区。(注意它不会提交新增加的文件信息!)
-
确保服务器和码云上面的内容一致 如果不一致 那么先使用git pull origin master
-
git rm -r --cached filename(要删除的文件/文件夹)
-
git commit -m “delete filename”
-
git push origin master //推送到码云上面
检查文件是否还有未提交或者修改的,然后将文件提交到github仓库 git remote add origin https://github.com/xxxxxxx/xxxxxx.git是将你本地的仓库和github仓库进行关联,在操作时候,需要将github地址替换为自己的。 github地址在你仓库的Code下的HTTPS
git pull 是从远程仓库获取最新版本并merge到本地仓库。
git pull origin feature
下拉远程仓库feature的工程到本地
查看指定版本- 首先我们查看版本信息
- 查看提交日志,
git log --pretty=oneline
,每个提交放在一行显示,在浏览大量的提交时非常有用 。 - 查看最近几个版本
git log
- 然后复制我们想查看的版本对应哈希值 按Q即可直接退出
- 转到指定的版本 git checkout [上一步复制下来的版本对应哈希值] 之后我们就可以查看当前版本工程了 注:使用git checkout master可以重回主分支当前版本
解决方法
- 方法:发起一个commit 存到提交历史
git add .
git commit -m "commit message"
- 未跟踪文件的内容改动不重要,放弃修改
git clean -n //这个是清除文件预览
git clean -f //强制清除文件
删除某次 commit
- 首先查看历史版本: 例如我的提交历史如下:
假如要删除备注为“日常维护”,哈希索引为 61a8c46ca83379621986e
的这次提交。 首先找到此次提交之前的一次提交的commit: c4712a0c7ba6cb9d714b3
2. 执行如下命令: git rebase -i c4712a0c7ba6cb9d714b3 3. 会进入vim页面 将61a8c46 f这一行前面的pick改为drop 4. 先按Esc,再按下“:” ,之后输入"wq",回车保存。 5. 我们可以看到,已经完成了删除
第一次推送master分支时,加上了 –u参数,Git会将本地的master分支内容推送的远程新的master分支,还会把2个master分支关联起来,在以后的推送或者拉取时就可以简化操作。 如果推送到其他分支,但本地分支是master,则是如下语句(本地分支是master,远程是feature)
git push origin master:feature
推送成功后,可以立刻在github页面中看到远程库的内容已经和本地一模一样了,登录你的github,从仓库中查看,发现已经和本地的保持一致。之后,只要本地做了修改提交,就可以使用git push origin master命令进行文件推送。
第一次推送项目,遇见问题 ! [rejected] master ->board (fetch first)报错的原因是因为,每个仓库都有一个分支,也可以理解为大仓库里的小仓库,我们只是跟线上远程仓库有了关联,但没有跟线上远程仓库的某个分支关联,所以我们没法提交
- 在终端输入 git pull --rebase origin board 即可跟刚创建的线上远程仓库分支board关联
- 这时再执行一下 git push -u origin master:board 即可将我们本地的master分支的项目文件上传到关联的线上的board分支远程项目中。
像其他版本控制系统(VCS)一样,Git 可以给仓库历史中的某一个提交打上标签,以示重要。 比较有代表性的是人们会使用这个功能来标记发布结点( v1.0 、 v2.0 等等)。 在本节中,你将会学习如何列出已有的标签、如何创建和删除新的标签、以及不同类型的标签分别是什么。 补充:就是说你在某一个分支上打了一个标签,再切到另外的分支上去,这个标签还是存在的,只是对应的是这个标签之前的commit,相当于是一个时间快照,他可以横跨标签,所以这就是它的灵活性。
本地打tag- 我们首先可以查看目前所有的版本
git tag
- 查看标签和它的备注
git tag -l -n
3. 查看线上代码库的标签
git ls-remote --tags
- 查看具体某一个标签
git tag -l "v4.0.0*"
- 创建标签 Git 支持两种标签:轻量标签(lightweight)与附注标签(annotated),本文以附注标签为例
git tag -a v4.0.0 -m "备注信息"
- 通过使用 git show 命令可以看到标签信息和与之对应的提交信息
git show v4.0.0
推送标签
- 默认情况下,git push 命令并不会传送标签到远程仓库服务器上。 在创建完标签后你必须显式地推送标签到共享服务器上。 这个过程就像共享远程分支一样——你可以运行 git push origin 。
git push origin v4.0.0
2. 如果想要一次性推送很多标签,也可以使用带有 --tags 选项的 git push 命令。 这将会把所有不在远程仓库服务器上的标签全部传送到那里。
git push origin --tags
现在,当其他人从仓库中克隆或拉取,他们也能得到你的那些标签。
删除标签(修改标签)一般情况下,修改标签对应的项目版本,都是选择直接删除这个标签,然后创建一个标签,将对应的项目号和他对应起来,实现修改。
- 要删除掉你本地仓库上的标签,可以使用命令 git tag -d 。 例如,可以使用以下命令删除一个轻量标签:
$ git tag -d v4.0.3
Deleted tag 'v4.0.3' (was 7caefe0)
注意上述命令并不会从任何远程仓库中移除这个标签,你必须用 git push :refs/tags/ 来更新你的远程仓库: 第一种变体是 git push :refs/tags/ :
$ git push origin :refs/tags/v4.0.3
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/xxxxxxxxx
- [deleted] v4.0.3
上面这种操作的含义是,将冒号前面的空值推送到远程标签名,从而高效地删除它。 第二种更直观的删除远程标签的方式是:
git push origin --delete
分支
分支相关的常见命令
创建my1分支: git branch my1
切换my1分支: git checkout my1
创建并切换my1分支: git checkout -b my1
更新master主线上的东西到该分支上:git rebase master
推送本地的my1分支到远程的feature分支:git push origin my1:feature
删除本地分支 git branch -d my1
我们在转换分支的时候,偶尔会出现这个问题:error: Your local changes to the following files would be overwritten by checkout 这个问题就是由于我们目前的分支有为提交的修改,所以不能转换到另一个分支。 解决方法:
- 未使用 git add 缓存代码时 放弃所有的文件修改可以使用 git checkout . 命令
- 已经使用了 git add 缓存了代码 可以使用 git reset HEAD filepathname (比如: git reset HEAD readme.md)来放弃指定文件的缓存,放弃所以的缓存可以使用 git reset HEAD . 命令 此命令用来清除 git 对于文件修改的缓存。相当于撤销 git add 命令所在的工作。在使用本命令后,本地的修改并不会消失,而是回到了如(1)所示的状态。继续用(1)中的操作,就可以放弃本地的修改。
- 已经用 git commit 提交了代码 可以使用 git reset --hard HEAD^ 来回退到上一次commit的状态。此命令可以用来回退到任意版本:git reset --hard commitid 你可以使用 git log 命令来查看git的提交历史,commitid就是版本的哈希值。
git branch -m text1 将目前的分支名更改为 text1
保存本地当前分支的内容- 暂存 我们在A分支编写一些内容后,暂时不想提交,但我们需要更改B分支的内容。我们可以使用stash 先将当前内容进行压栈。
git stash
之后切换到分支B,当我切回到分支A继续此项目的编写时,只需要使用
git stash pop
进行出栈即可恢复到切换到B分支之前的A分支的状态。
完整流程
- 将A内容压栈:git stash
- 切换到B分支:git checkout B
- 切换到A分支:git checkout A
- 此时,我们需要进行出栈操作才能使A分支的内容回到我们切换到B之前A的状态:git stash pop
- 保存到本地仓库(相当于正式保存成一次记录)
- 我们使用
git add
命令将所有文件内容添加到索引(将修改添加到暂存区)。也就是将要提交的文件的信息添加到索引库中。 - 使用
git commit -m '备注内容'
,提交暂存区文件到仓库区。
(1)git stash save “save message” : 执行存储时,添加备注,方便查找,只有git stash 也时可以的,但查找时不方便识别。 (2)git stash list :查看stash了哪些存储。 (3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{KaTeX parse error: Expected 'EOF', got '}' at position 4: num}̲,比如第二个 git stas…num} -p ,比如第二个:git stash show stash@{1} -p。 (5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{KaTeX parse error: Expected 'EOF', got '}' at position 4: num}̲ , 比如第二个:git st…num} ,比如应用并删除第二个:git stash pop stash@{1} 。注:该命令在恢复内容的同时将堆栈中对应的的内容删除(栈是先进后出)。 (7)git stash drop stash@{KaTeX parse error: Expected 'EOF', got '}' at position 4: num}̲ :丢弃stash@{num}存储,从列表中删除这个存储。 (8)git stash clear: 删除所有缓存的stash。 (9)git stash branch :从最新的stash创建分支。 应用场景:当储藏了部分工作,暂时不去理会,继续在当前分支进行开发,后续想将stash中的内容恢复到当前工作目录时,如果是针对同一个文件的修改(即便不是同行数据),那么可能会发生冲突,恢复失败,这里通过创建新的分支来解决。可以用于解决stash中的内容和当前目录的内容发生冲突的情景。 发生冲突时,需手动解决冲突。
后续如果想了解更多物联网、智能家居项目知识,可以关注公众号观看更多 编写不易,感谢支持。