git 常用指令 基于windows11 git bash环境下

环境配置

用户名配置:

git config --global user.name "你的用户名"

邮箱配置:

git config --global user.email "你的邮箱"

创建本地仓库,初始化后自动设置为master

mkdir test
cd test
git init
ls -la //查看所有目录,包括隐藏目录

新建文件,添加到本地仓库

add:将文件添加到缓存区
commit:提交到本地仓库

创建文件:

touch test.c

使用git指令添加到仓库的提交缓存:

git add test.c

提交本地仓库:

git commit -m "描述信息"

改写上一次提交信息,如果上一次提交信息写错了:

git commit --amend  //执行命令后会进入Vim编辑器界面

编辑界面
在界面中按下“i”即可进入编辑界面。修改完后 先按 ESC键 ,然后“:wq”退出并保存。如果不保存直接退出":q!"。

查看提交日志(可能用于回滚)

git log //查看提交日志

  • commit 33e08ca613fbc8f6133af5a30e6b51f498d88ed1 (HEAD -> master)
    • commit 后面跟着的一串字符是这次提交的唯一标识符,即提交哈希(SHA-1)。这个哈希值是由 Git 使用哈希算法生成的,用于唯一标识一次提交。
    • HEAD -> master 表示当前的 HEAD 指针指向 master 分支,也就是说这次提交是发生在 master 分支上的。
  • Author: simon_4544 <454474181@qq.com>
    • 显示了提交的作者信息,包括用户名和提交时使用的电子邮件地址。
  • Date: Mon Oct 28 21:15:55 2024 +0800
    • 显示了提交的日期和时间。这里的日期时间格式是“星期 日期 月份 时:分:秒 年份 时区偏移量”。
    • +0800 表示的是相对于协调世界时(UTC)的时区偏移量,这里是东八区,即北京时间。

回滚代码仓库:git reset --hard “你要回滚的id”

reset参数是重置命令
–hard是重置代码仓库版本
有三种模式

–soft 、–mixed以及–hard是三个恢复等级。

使用–soft就仅仅将头指针恢复,已经add的暂存区以及工作空间的所有东西都不变。
如果使用–mixed,就将头恢复掉,已经add的暂存区也会丢失掉,工作空间的代码什么的是不变的。
如果使用–hard,那么一切就全都恢复了,头变,aad的暂存区消失,代码什么的也恢复到以前状态。

git log
git reset --hard 要回滚id
git reset --hard HEAD^
git reset --hard HEAD~3

HEAD^ 表示当前 HEAD 的父提交,即当前分支的上一个版本。
git reset --hard HEAD^ 命令将当前分支回滚到上一个提交,即撤销最后一次提交的所有更改。
使用场景:
当你发现最新的提交有错误或者想要撤销最后一次提交时。
这个命令会将工作目录和暂存区都回滚到上一个版本,所有自上次提交以来的更改都会丢失。

HEAD~3 表示从当前 HEAD 开始,回溯3个版本的提交。
git reset --hard HEAD~3 命令将当前分支回滚到前三个版本的提交。

查看提交之后文件是否做了改动:git status

status:查看当前仓库状态。我们在提交完成之后,有时候可能自己不小心改动了某个文件,或者别人,我们可以使用git status查看文件是否被改动。
保存退出,然后使用git status查看。
可以看到报出了修改,这里我的环境语言是中文,如果是英文则对应的修改是AM,A是未修改
如果你添加了新文件,git status一样会报出来。
英文对应:
A:未修改
AM:修改
Untracked:未提交
modified:新文件,但未提交

工作区与缓存区

在git下有一个概念是缓存区,这是其它集中式版本控制系统没有的
工作区:工作区就是你当前的工作目录
缓存区:这里存放了你使用git add命令提交的文件描述信息,它位于.git目录下的index文件中

修改缓存区内容:git add、git commit -m

比如我们使用git add添加了一个名为min.c的文件,但是还没有提交的时候我们修改了它的内容,修改完成之后在提交会发现内容并不是我们第二次修改的内容

这就要说一点,当我们使用git add添加到缓存区的内容后,我们在修改这个文件时,它跟缓冲区内容是没有任何关系的!我们使用git commit提交的时,它只会提交缓存区内容

如果想提交第二次修改,我们只需要在git add一次,然后在使用git commit提交就可以了,git会自动帮我们合并提交。

将所有改动文件添加到缓存区:git add --all、git add .

git add --all 会记录所有改动,包括删除的文件。
git add . 只会记录新建和修改的文件,不会影响删除的文件。
提交时使用 git commit 确保更改反映到版本库中。

将文件撤销回到最近一次修改的状态:git checkout – file

git checkout -- <file> 是用来恢复文件到上一次提交状态的命令。
使用该命令会丢失所有自上次提交后的更改。
只能恢复到最近一次提交状态,无法恢复未提交的更改。
注意这个功能不能一直迭代恢复,如你恢复到了修改前的版本,你想再次回滚回滚到修改前在之前的版本是不行的。

查看单个文件可回滚版本:git log filename

使用 git log <filename> 查看文件的所有历史版本。
通过 git reset <commit_hash> <filename> 将文件回退到指定版本。
提交后,新的历史版本只包含您更新的文件,其他文件的状态保持不变。

删除文件:git rm

rm <filename>
git rm <filename>

使用 rm 删除文件:需要手动 git add 更新状态,然后提交。
使用 git rm 删除文件:自动记录删除操作,无需额外的 git add。
提交后,文件将从版本控制中删除,并且历史记录中会保留该文件的所有版本。
删除文件会影响工作区吗?
是的,使用 rm 或 git rm 都会在当前工作区删除文件。使用 git rm 还会在 Git 的暂存区中记录删除操作,以便在下一次提交时反映在版本控制中。

查看提交历史:git reflog

git reflog可以查看当前版本库的提交历史,凡是对仓库版本进行迭代的都会出现在这个里面,包括你回滚版本都会出现在这个历史中

git基本组成框架:Workspace、Index / Stage、Repository、Remote

Workspace:开发者工作区
Index / Stage:暂存区/缓存区
Repository:仓库区(或本地仓库)
Remote:远程仓库

Workspace:开发者工作区,也就是你当前写代码的目录,它一般保持的是最新仓库代码。
Index / Stage:缓存区,最早叫Stage,现在新版本已经改成index,位于.git目录中,它用来存放临时动作,比如我们做了git add或者git rm,都是把文件提交到缓存区,这是可以撤销的,然后在通过git commit将缓存区的内容提交到本地仓库
Repository:仓库区,是仓库代码,你所有的提交都在这里,git会保存好每一个历史版本,存放在仓库区,它可以是服务端的也可以是本地的,因为在分布式中,任何人都可以是主仓库。
Remote:远程仓库,只能是别的电脑上的仓库,即服务器仓库。

git rm后恢复文件:git rm、git reset、git checkout

git rm <filename>删除文件并记录到缓存区,使用 git reset 可以撤销该操作。
使用 git checkout <filename> 可以恢复未提交的文件。
如果文件已经提交,可以通过保存当前修改、查看历史版本、回滚并复制文件的方式进行恢复。

git创建分支:git branch、git checkout

使用git checkout -b参数来创建一个分支,创建完成分支后会自动切换过去

git checkout -b dev

然后我们在使用branch来查看当前属于哪个分支,也就是查看HEAD的指向

git branch

git checkout -b等价于

git branch dev
git checkout dev

git checkout -b <branch_name>:创建并切换到新分支。
git branch:查看所有本地分支及当前分支。
git branch <branch_name>:仅创建分支而不切换。
git checkout <branch_name>:切换到已存在的分支。

git切换分支:git checkout

git checkout的作用是检出,如果是文件的话,会放弃对文件的缓存区操作,但是要使用reset重置一下变更才行。
如果是分支的话会切换过去。
使用 git checkout <branch_name> 切换到指定的分支。
使用 git checkout <file> 恢复文件到最后一次提交状态,放弃未提交的更改。
可选择使用 git reset <file> 重置文件的缓存区状态,以确保切换分支前的干净工作区

git合并分支:git merge

当我们新建分支并做完工作之后,想要把分支提交至master,只需要切换到master仓库,并执行git merge 分支名就可以了

git查看分支:git branch -a

如果要查看当前所有分支可以使用:git branch -a
HEAD指向当前分支

git删除本地分支:git branch -D

git branch -D 分支名

git删除远程分支:git push origin --delete

注意这里的远程分支名不需要加origin,输入分支名就可以了
git push origin --delete <远程分支名>

拉取远程分支并创建本地分支的操作步骤

  1. 查看远程分支
    • 首先,查看远程仓库中的所有分支,确保您知道要拉取的分支名。
    git branch -r
    
  2. 拉取远程分支
    • 假设您要从远程仓库的 feature_branch 分支创建本地分支。可以使用以下命令:
    git fetch origin
    git checkout -b feature_branch origin/feature_branch
    
    • 说明
      • git fetch origin 会从远程仓库获取最新的更新。
      • git checkout -b feature_branch origin/feature_branch 创建并切换到一个新的本地分支 feature_branch,该分支将跟踪远程的 origin/feature_branch
  3. 在新分支上进行开发
    • feature_branch 分支上进行代码修改,完成开发工作。
  4. 添加和提交更改
    git add .
    git commit -m "Your commit message describing the changes"
    
  5. 推送本地分支到远程仓库
    • 完成开发后,可以将新分支推送到远程:
    git push -u origin feature_branch
    
    • 说明-u 参数将设置本地分支与远程分支的追踪关系,之后可以直接使用 git pushgit pull
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值