git基本操作
检查安装信息
git
创建新的 Git 仓库
git init
git init 命令用于在目录中创建新的 Git 仓库。
在目录中执行 git init 就可以创建一个 Git 仓库了。
你可以看到在你的项目中生成了 .git 这个子目录,这就是你的 Git 仓库了,所有有关你的此项目的快照数据都存放在这里。
.git 默认是隐藏的,可以用 ls -a 命令查看。
初次运行git前的配置
设置提交代码的用户名和电子邮件
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
配置好之后,可以用git config --global --list命令查看配置是否OK
注意:这里设置的用户签名和将来登录GitHub的账号没有任何关系。可以随便写,就是在后续操作的时候知道是谁做了那一步的操纵
下载项目
git clone git@github.com:yourname/仓库名.git
注意:
在本地会生成一个项目的文件夹,设置显示隐藏文件可见,即文件夹.git
隐藏文件夹.git里面的内容就是本地仓库中的核心内容,切记不可删除
查看
查看git状态
git status
注意:
必须在项目文件下执行命令,cd 项目文件目录
文件在本地 git status 为红色
文件在本地缓冲区 git statuus 为绿色
查看每一次提交代码的版本信息
git log
拉新代码
git pull
提交代码
git add .
git commit -m '提交描述'
git push
git add .把本地的文件放到本地的缓冲区(文件内容变绿),缓冲区可以理解为一个隐藏的仓库,就是一个存储空间,看不到
git commit -m '提交描述'把缓冲区的文件存储到本地的仓库
git push把本地的代码提交到远程仓库中
版本回退
本地及远程都恢复
- 删除工作空间的改动代码,撤销commit且撤销add
- 代码会丢失,本地及远程都会更新为此版本
- 撤销并舍弃版本号之后的提交记录
恢复上一次的版本
git reset --hard HEAD^
^ 恢复成上次提交的版本,HEAD^^ 恢复成上上次提交的版本,就是多个^,以此类推或用~次数
恢复到指定版本
git reset --hard 版本号
注: 通过reset -hard 的方式,此时可以看到提交记录和文件都被撤销了,reset -hard 之后,后面的版本就找不到了使用需谨慎,不推荐使用。
远程恢复,暂存本地
- 只撤销commit操作
- 写的代码仍然保留
恢复上一次的版本
git reset --soft HEAD^
恢复到指定版本
git reset --soft 版本号
注意: HEAD^的意思是上一个版本,也可以写成
HEAD~1,如果你进行了2次commit,想都撤回,可以使用HEAD~2,这个命令仅仅是撤回commit操作,写的代码仍然保留
缓存
缓存的作用就是把你更改的文件,进行缓存起来,然后你可以进行其他操作,然后后面可以将更改文件恢复
git stash
- 通过
git stash将本地修改的文件添加到暂存区 git stash apply将暂存区的数据进行恢复
应用场景:
- 分支的切换:当需要切换分支的时候,本地修改文件进行缓存,后面切换回来就行恢复
eg:
git stash命令很好用
要是有写一半要换分支
就敲一下git stash 暂存了就
然后换回来之后,再git stash apply就找回来了继续编辑
注:对新增的文件进行缓存是不起效果的,对于新增的文件,要进行缓存的话,需要先添加到暂存区(
git add .)才可以进行缓存。
分支相关
查看分支
git branch
创建并切换分支
创建并切换分支
git checkout -b dev -b表示创建并切换分支
上面一条命令相当于一面的二条:
git branch dev 创建分支
git checkout dev 切换分支
合并分支
合并指定分支到当前分支
git merge dev
删除分支
git branch -d dev
标签相关
Git 的标签(tag)主要用于标记重要的版本节点,以便于将来进行查询、比较和快速回滚。
Git 的标签主要有两种类型:
- 轻量级标签(
lightweight tag):直接指向某个提交对象。可以通过git tag命令创建。 - 附注标签(
annotated tag):存为一个独立的对象,包含作者姓名、电子邮件、日期、标签信息,并指向某个提交对象。可以通过git tag -a -m “tag message”命令创建。
这两种标签的主要区别是:
- 附注标签具有更丰富的信息,轻量级标签只包含一个提交对象的校验和。
- 附注标签通过 Git 数据库进行校验和追踪,而轻量级标签没有。
- 附注标签可以通过 git show 查看标签信息,轻量级标签没有这种信息。
创建标签
- 创建轻量级标签:
git tag v1.0
- 创建附注标签:
git tag -a v2.0 -m "Version 2.0 Release"
-a参数后接标签名称,-m参数后添加标签说明:
查看标签信息
查看本地指定标签对应的信息
git show v2.0
查看本地所有的标签列表
git tag
列出远程仓库中所有的标签
git ls-remote --tags
获取远程标签到本地
git fetch origin tag <tagname>
使用限定列出限定后的标签 :
git tag -l v1.*
推送标签到远程仓库
提交一个标签到远程仓库的命令
git push origin v2.0
一次提交本地的所有标签到远程仓库的命令:
git push origin --tags
在标签上创建分支
git branch release-2.0 v2.0
从标签中切换到对应提交版本
git checkout v2.0
删除标签
删除本地的标签
git tag -d v0.9
删除远程标签主要有三种方式:
- 使用参数
--delete:
git push origin --delete tag <tagname>
- 相当于推送一个空分支到远程分支:
git push origin :<tagname>
- 先删除本地 tag,再推送一个空的 tag 到远程仓库:
git tag -d <tagname>
git push origin :refs/tags/<tagname>
应用场景
git 退回到指定tag版本
步骤:
git checkout master(线上分支名称)git taggit show v1.2022.0905.1(指定tag)- 返回:commit backid(回退命令就用这个id)
git reset --hard backid- 拉取新分支:www.cnblogs.com/SZxiaochun/…
其他命令
(1)更新远程分支
本地仓库中与远程仓库origin同名的分支,并删除本地已经不存在的远程分支。
git remote update origin --prune
(2)git项目如何拉取以前的版本
方法1-git checkout
- 使用`git log`查看项目的提交历史。可以看到每个提交的版本号(commit hash)以及相关信息。
- 根据要拉取的版本选择不同的方式
– 如果要拉取最新一次提交之前的版本,可以使用命令`git checkout HEAD~1`,其中的`1`表示要回退的步数。例如,如果要回退到上一次提交,可以使用`git checkout HEAD~1`。
– 如果要拉取特定版本之前的版本,可以使用命令`git checkout `,其中的``必须是要回退版本的具体提交号。例如,如果要回退到某个具体的提交号为abcdef的版本,可以使用`git checkout abcdef`。
- 执行完以上命令后,git会自动将工作区和暂存区的文件回退到指定的版本。此时,可以使用`git log`命令验证是否已成功回退。
- 若要执行打包当前版本的操作,这里以创建一个tar.gz文件为例
`git archive --format=tar.gz --output="package.tar.gz" 1234abcd`
eg:
# 查看提交历史,找到需要打包的版本的commit ID
git log
# 假设commit ID是1234abcd,检出该版本
git checkout 1234abcd
# 执行打包操作,这里以创建一个tar.gz文件为例
git archive --format=tar.gz --output="package.tar.gz" 1234abcd
注意:通过
git checkout命令回退版本只会改变当前工作目录中的文件,对远程仓库不会有任何影响。如果想要将回退的版本推送到远程仓库,需要使用git push命令。
方法2-git revert
- 使用git log命令查看项目的提交历史,并选择要拉取的版本的commit hash值。
- 使用git revert命令,并加上要拉取的版本的commit hash值, `git revert `这将创建一个新的提交,将项目回滚到选定的版本。
方法3-git reset
- 使用git log命令查看项目的提交历史,并选择要拉取的版本的commit hash值。
- 使用git reset命令,并加上要拉取的版本的commit hash值,`git reset `
这将修改项目的HEAD指针,并将项目回滚到选定的版本。请注意,此方法将删除之前的提交历史。
方法4-git clone
- 使用git log命令查看项目的提交历史,并选择要拉取的版本的commit hash值。
- 使用git clone命令,并加上要拉取的版本的commit hash值,`git clone –depth=1 ` 这将克隆选定版本的项目到新的目录中。
请注意,这些方法适用于提取项目的已有版本。如果你只是想查看或比较以前的版本,可以使用git show命令来查看特定版本的更改。
(3)使用checkout命令拉取版本
语法如下,其中xxx可以是提交哈希值、分支名或标签名。
git checkout xxx
eg: 拉取指定提交哈希值的版本
git checkout 1234567890abcdef
拉取指定分支的版本
git checkout branch_name
拉取指定标签的版本
git checkout tag_name
将git链接到github
生成SSH
在命令框中输入以下命令ssh-keygen -t rsa,然后回车三下,就会在C:\Users\你的用户名.ssh 中生成密钥。此文件夹中以下两个文件
id_rsa是私钥id_rsa.pub是公钥
注意: 如果本地还未生成SSK key,可以通过该命令生成:
ssh-keygen -t rsa -C "你的邮箱"
进入github配置ssh
将生成的公钥内容复制到github中
如何查看本地公钥ssh-key
方式1:文件夹方式查看
window系统打开目录文件:C:/Users/user/.ssh/id_rsa.pub
复制该文件中全部内容为ssh-key
git bash方式查看
依次输入以下命令,最后获取的文件内容为ssh-key
cd ~/.ssh如果该命令无效的话,则本地没有ssh-key公钥,需要创建本地公钥ls查看当前目录下的文件cat id_rsa.pub
以上合并一句为:
cat ~/.ssh/id_rsa.pub
git丢弃本地修改的所有文件
参考链接:www.mobiletrain.org/about/BBS/1…
新建项目并提交本地项目管理(基本操作命令)
参考链接:www.jianshu.com/p/6520fa989…
进入工程根目录: cd $project_path
初始化git仓库 : git init
链接到git server : git remote add origin git@XX.com:namespace/Projectname.git
将更改文件放入暂存区: git add .
提交代码到仓库: git commit -m “initial commit”
将本地仓库的提交推送到远程仓库: git push -u origin master