用户名配置:
git config --global user.name "你的用户名"
邮箱配置:
git config --global user.email "你的邮箱"
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 <[email protected]>
:
Date: Mon Oct 28 21:15:55 2024 +0800
:
+0800
表示的是相对于协调世界时(UTC)的时区偏移量,这里是东八区,即北京时间。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 命令将当前分支回滚到前三个版本的提交。
status:查看当前仓库状态。我们在提交完成之后,有时候可能自己不小心改动了某个文件,或者别人,我们可以使用git status查看文件是否被改动。
保存退出,然后使用git status查看。
可以看到报出了修改,这里我的环境语言是中文,如果是英文则对应的修改是AM,A是未修改
如果你添加了新文件,git status一样会报出来。
英文对应:
A:未修改
AM:修改
Untracked:未提交
modified:新文件,但未提交
在git下有一个概念是缓存区,这是其它集中式版本控制系统没有的
工作区:工作区就是你当前的工作目录
缓存区:这里存放了你使用git add命令提交的文件描述信息,它位于.git目录下的index文件中
比如我们使用git add添加了一个名为min.c的文件,但是还没有提交的时候我们修改了它的内容,修改完成之后在提交会发现内容并不是我们第二次修改的内容
这就要说一点,当我们使用git add添加到缓存区的内容后,我们在修改这个文件时,它跟缓冲区内容是没有任何关系的!我们使用git commit提交的时,它只会提交缓存区内容
如果想提交第二次修改,我们只需要在git add一次,然后在使用git commit提交就可以了,git会自动帮我们合并提交。
git add --all
会记录所有改动,包括删除的文件。
git add .
只会记录新建和修改的文件,不会影响删除的文件。
提交时使用 git commit
确保更改反映到版本库中。
git checkout --
是用来恢复文件到上一次提交状态的命令。
使用该命令会丢失所有自上次提交后的更改。
只能恢复到最近一次提交状态,无法恢复未提交的更改。
注意这个功能不能一直迭代恢复,如你恢复到了修改前的版本,你想再次回滚回滚到修改前在之前的版本是不行的。
使用 git log
查看文件的所有历史版本。
通过 git reset
将文件回退到指定版本。
提交后,新的历史版本只包含您更新的文件,其他文件的状态保持不变。
rm <filename>
git rm <filename>
使用 rm 删除文件:需要手动 git add 更新状态,然后提交。
使用 git rm 删除文件:自动记录删除操作,无需额外的 git add。
提交后,文件将从版本控制中删除,并且历史记录中会保留该文件的所有版本。
删除文件会影响工作区吗?
是的,使用 rm 或 git rm 都会在当前工作区删除文件。使用 git rm 还会在 Git 的暂存区中记录删除操作,以便在下一次提交时反映在版本控制中。
git reflog可以查看当前版本库的提交历史,凡是对仓库版本进行迭代的都会出现在这个里面,包括你回滚版本都会出现在这个历史中
Workspace:开发者工作区
Index / Stage:暂存区/缓存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
Workspace:开发者工作区,也就是你当前写代码的目录,它一般保持的是最新仓库代码。
Index / Stage:缓存区,最早叫Stage,现在新版本已经改成index,位于.git目录中,它用来存放临时动作,比如我们做了git add或者git rm,都是把文件提交到缓存区,这是可以撤销的,然后在通过git commit将缓存区的内容提交到本地仓库
Repository:仓库区,是仓库代码,你所有的提交都在这里,git会保存好每一个历史版本,存放在仓库区,它可以是服务端的也可以是本地的,因为在分布式中,任何人都可以是主仓库。
Remote:远程仓库,只能是别的电脑上的仓库,即服务器仓库。
git rm
删除文件并记录到缓存区,使用 git reset
可以撤销该操作。
使用 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
:创建并切换到新分支。
git branch
:查看所有本地分支及当前分支。
git branch
:仅创建分支而不切换。
git checkout
:切换到已存在的分支。
git checkout的作用是检出,如果是文件的话,会放弃对文件的缓存区操作,但是要使用reset重置一下变更才行。
如果是分支的话会切换过去。
使用 git checkout
切换到指定的分支。
使用 git checkout
恢复文件到最后一次提交状态,放弃未提交的更改。
可选择使用 git reset
重置文件的缓存区状态,以确保切换分支前的干净工作区
当我们新建分支并做完工作之后,想要把分支提交至master,只需要切换到master仓库,并执行git merge 分支名就可以了
如果要查看当前所有分支可以使用:git branch -a
HEAD指向当前分支
git branch -D 分支名
注意这里的远程分支名不需要加origin,输入分支名就可以了
git push origin --delete <远程分支名>
git branch -r
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
。feature_branch
分支上进行代码修改,完成开发工作。git add .
git commit -m "Your commit message describing the changes"
git push -u origin feature_branch
-u
参数将设置本地分支与远程分支的追踪关系,之后可以直接使用 git push
和 git pull
。