Git的基本操作

windows 安装https://git-scm.com/
Ubuntu 安装 sudo apt-get install git

git的配置
git config --global user.name “yourname”
git config --global user.email “youremail”

查看配置

git config --list

核心:工作区域、暂存区域和 Git 仓库

工作区域(Working Directory)就是你平时存放项目代码的地方。
暂存区域(Stage)用于临时存放你的改动,事实上它只是一个文件,保存即将提交的文件列表信息。
Git 仓库(Repository)就是安全存放数据的位置,这里边有你提交的所有版本的数据。其中,HEAD 指向最新放入仓库的版本(这第三棵树,确切的说,应该是 Git 仓库中 HEAD 指向的版本)。

Git 管理的文件有三种状态:已修改(modified)、已暂存(staged)和已提交(committed)

初始化Git项目
创建文件夹
进入文件夹
使用git init命令
将README.md添加到暂存区 git add README.md
将README.md发布到git仓库 git commit -m “add a readme file”
-m 表示添加本次提交的说明,是强制要求写的
克隆项目
git clone 项目地址
查看文件状态
git status
通过这个命令能看到哪些文件是新添加的,哪些文件还在暂存区
命令显示的结果如下
On branch master
nothing to commit, working tree clean
表示目前位于master分支上。这是默认的分支
然后显示没有需要提交的的文件。
还有可能显示Untracked files表示目前的文件还没有被加入暂存区
显示Changes to be committed表示文件在暂存区,还未被提交到git仓库
如果在暂存区的话可以使用 git reset HEAD filename 恢复暂存区,也就是将暂存区的指定文件移除暂存区
如果不加filename就是默认的上一个文件
如果对文件进行修改之后再执行 git status
那么git会提出两条建议
如果想应用当前修改之后的版本,可以使用 git add filename 命令
如果想使用之前的版本就使用 git checkout filename 这命令就意味着丢弃修改之后的文件了

一步到位
git commit -am ‘your describe setence’
直接使用-am参数可以从本地直接传到git仓库中
查看操作日志
git log
回退

回滚快照
git reset HEAD~
HEAD 表示最新提交的快照,而 HEAD~ 表示 HEAD 的上一个快照,
HEAD~~表示上上个快照,如果表示上10个快照,则可以用HEAD ~10

git reset HEAD~ 命令其实影响了两棵树:首先是移动 HEAD 的指向,
将其指向上一个快照(HEAD~);然后再将该位置的快照回滚到暂存区域。

git reset --soft HEAD~ 命令就相当于只移动 HEAD 的指向,
但并不会将快照回滚到暂存区域。相当于撤消了上一次的提交(commit)。
一不小心提交了,后悔了,那么你就执行 git reset --soft HEAD~ 命令即可

reset 不仅可以回滚指定快照,还可以回滚个别文件。
git reset 快照 文件名/路径
版本对比
git diff
不仅可以比较文件之间的差异,也可以比较不同快照之间的差异
在cmd页面可能出现中文乱码,可以稍加配置。
git config --global i18n.commitencoding utf-8
git config --global i18n.logoutputencoding utf-8
export LESSCHARSET=utf-8 ## linux bash配置环境变量
set LESSCHARSET=utf-8 #windows配置环境变量

如果希望比较最新提交的快照和暂存区域的文件,只需要执行 git diff --cached 命令;
当然也可以指定其他快照,就是需要多写上一个 ID 值,即git diff --cached ID号。

修改,删除,重命名
版本刚一提交(commit)到仓库,突然想起漏掉两个文件还没有添加(add)
或者版本刚一提交(commit)到仓库,突然想起版本说明写得不够全面,无法彰显你本次修改的重大意义……
使用 git commit --amend

如果不小心从工作目录删除文件,可以使用checkout命令从暂存区里面恢复
git checkout – filename

rm 命令删除的只是工作目录和暂存区域的文件(即取消跟踪,在下次提交时不纳入版本管理)
如果想要彻底删除一个文件可以使用 git reset --soft HEAD~ 命令将快照回滚到上一个位置,然后重新提交

在工作目录中增加一个文件,然后执行 git add filename 命令将其添加到暂存区域,
此时我修改文件的内容,那么暂存区域和工作目录就是两个不同的文件了,
此时如果执行 git rm filename 命令,Git 会下意识地阻止
执行 git rm -f test.py 命令就可以把两个都删除

只想删除暂存区域的文件,保留工作目录的
执行 git rm --cached 文件名

如果想要重命名文件,直接在工作目录重命名文件,执行git status出现错误
正确的姿势应该是:git mv 旧文件名 新文件名
让git自动忽略某些后缀名的文件
可以在工作目录创建一个名为 .gitignore 的文件。
例如想要让git忽略所有后缀名为.temp的文件
执行 echo *.temp > .gitignore 命令,创建一个 .gitignore 文件
创建和切换分支
创建分支,使用 git branch 分支名
此时可以执行 git log --decorate 命令查看

切换分支,执行 git checkout 分支名
合并和删除分支
合并分支我们使用 merge 命令,执行 git merge feature 命令,将 feature 分支合并到 HEAD 所在的分支(master)上

删除分支,使用 git branch -d 分支名 命令:

由于 Git 的分支原理实际上只是通过一个指针记载,所以创建和删除分支都几乎是瞬间完成。

Git的两种合并方式 — Fast-forward 和 Three-way merge
Fast-forward 就是当待合并的分支位于目标分支的直接上游时,Git 只需把目标分支的指针直接移动即可实现合并。

 如果待合并的两个分支不在同一条线上,那么进行合并就需要解决一个根本的问题 —— 冲突!
     为何两个分支在同一条线上就不会冲突呢?
    因为 Git 的快照是按时间顺序提交的,所以在同一条线上的两个快照,它们是有先后顺序的,尽管两者可能出现同名文件不同内容,Git 会认为这是“改变”而不是“冲突”。

匿名分支和checkout命令
如果在没创建分支的情况下执行 checkout 命令
即是执行 git checkout HEAD~
当前的 HEAD 指针处于分离状态 Git 帮你创建了一个匿名分支,那么当你切换到别的分支时,这个匿名分支中的所有提交都会被丢弃掉
可以利用匿名分支来做做实验什么的,反正不会有负面影响。

事实上呢,checkout 命令有两种功能:
从历史快照(或者暂存区域)中拷贝文件到工作目录
切换分支
比如执行 git checkout HEAD~ README.md 命令会将上一个快照中的 README.md 文件复制到工作目录和暂存区域中
如果命令中没有指定具体的快照 ID,则将从暂存区域恢复指定文件到工作目录(git checkout README.md)
注意:如果刚好有一个分支就叫做README.md那么恢复的时候就要使用之前的形式了 git checkout – README.md

checkout和reset
对于恢复文件来说
checkout 命令和 reset 命令都可以用于恢复指定快照的指定文件,并且它们都不会改变 HEAD 指针的指向。
reset 命令只将指定文件恢复到暂存区域(–mixed),而 checkout 命令是同时覆盖暂存区域和工作目录。
在恢复文件方面,reset 命令要比 checkout 命令更安全一些。

对于恢复快照
reset 命令是用来“回到过去”的,根据选项的不同,reset 命令将
移动 HEAD 指针(–soft) -> 覆盖暂存区域(–mixed,默认)-> 覆盖工作目录(–hard)。
checkout 命令虽说是用于切换分支,但前面你也看到了,它事实上也是通过移动 HEAD 指针和覆盖暂存区域、工作目录来实现的。

对于 reset --hard 命令来说,checkout 命令更安全。因为 checkout 命令在切换分支前会先检查一下当前的工作状态,
如果不是“clean”的话,Git 不会允许你这样做;而 reset --hard 命令则是直接覆盖所有数据。
reset 命令会移动 HEAD 所在分支的指向,而 checkout 命令只会移动 HEAD 自身来指向另一个分支。

在 merge 的时候使用 --no-ff 选项即可告诉 Git 不要使用 Fast-forward 方式合并分支。

笔记来源:https://www.jianshu.com/p/e57a4a2cf077

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
《云计算原理与实践》实训教程中的实训一是关于git基本操作的项目。首先,我们需要进入学习git环境。 在学习git环境中,我们会学习如何使用git,以及git的基本概念和操作。我们将学习如何创建本地仓库、添加文件到仓库、进行提交和推送等。此外,我们还会学习如何在本地仓库中创建分支、切换分支以及合并分支等操作。 完成实训一之前,我们需要先安装git,并在本地配置git的用户名和邮箱。安装及配置git完成后,我们可以开始进行实训一的项目。 实训一的项目是基本的git操作,包括创建本地仓库、添加文件、提交更改等。我们可以使用命令行或者使用工具来完成这些操作。在项目中,我们会创建一个文件夹作为我们的本地仓库,并在该仓库中创建一个文件。然后,我们将把修改后的文件添加到仓库,进行提交并推送到远程仓库。 完成实训一后,我们可以通过查看仓库的提交历史、分支情况等来确认我们的操作是否正确。如果遇到问题,我们可以使用git提供的帮助命令来解决问题。 通过完成实训一,我们可以初步了解git基本操作,并能够熟练使用git进行版本控制。这对于云计算原理与实践以及日后的项目开发都是非常有帮助的。 总之,《云计算原理与实践》实训教程中的实训一提供了一个基于git的项目,使我们能够学习和掌握git基本操作。通过完成实训一,我们将能够熟练使用git,并能够运用git进行项目开发和版本控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leoliyao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值