Git的简单使用

Posted Jqivin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git的简单使用相关的知识,希望对你有一定的参考价值。

如何提升github的访问速度

一、git的常用操作

1.安装 sudo apt install git
2.查看Git的版本 git version
3.git分类

  • 集中式 如svn

    集中式git中,过度依赖服务器,a,b,c中只存在最新的版本,如果服务器出现故障,以前的版本就找不到了。
  • 分布式git


每个主机都存在历史版本。

二、git的基本概念

2.1git分区(四个工作区)

git本地有三个工作区:工作区(working directory)、暂存区(stage/index)、仓库(repository)。再加上远程服务器上的git仓库(remote directory)就成为了四个区域。


  • 工作区(worlspace):平常放代码的地方。
  • Index/stage:暂存区,临时存放的改动,事实上它就是一个文件,保存即将要存放的代码。
  • Repository:仓库区,是本地的一个仓库,存放最终提交的项目版本。这里面有你提交到所有版本的数据。其中HEAD指向最新仓库的版本
  • Remote: git远程服务器的仓库,托管代码的服务器,就如github,gitee之类的。

2.2工作流程

1.在工作目录中添加,修改文件

  • 将需要进行版本管理的文件放入暂存区
  • 将暂存区的文件提交到git仓库

2.3文件的四种状态

使用 git status查看状态

  • Untracked: 未跟踪:此文件在文件夹中,即在工作区。 但并没有加入到git库, 不参与版本控制. 通过git add filename 状态变为Staged.
    创建一个文件hello.cpp.- Unmodify: 文件已经入库, 未修改。 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm filename移出版本库, 则成为Untracked文件。- Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add filename可进入暂存staged状态, 使用git checkout 则丢弃修改过,返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改.
  • Staged: 暂存状态. 执行git commit -m '描述'则将修改同步到库中, 这时库中的文件和本地文件又变为一致,文件为Unmodify状态. 执行git reset HEAD filename取消暂存,文件状态为Modified.


三、git命令

创建本地仓库

1.创建一个目录

2.初始化仓库

使用git init使其成为一个可以通过git管理的仓库

第一次使用需要设置用户名和邮箱

stu@stu-virtual-machine:~/myproject$ git config --global user.email "you@126.com" 
stu@stu-virtual-machine:~/myproject$ git config --global user.name "youname"

3.git add filename

将文件添加到暂存区

4. git commit -m ‘版本描述信息’

提交版本到仓库

5.git status 查看仓库状态

6.git log 查看提交的历史记录

只记录当前版本及之前的版本的记录
修改hello.cpp,添加打印功能

7.git reflog 查看对仓库的操作日志

记录对仓库的操作的记录 每次的操作都会记录

8.git reset --hard HEAD^ 回退版本

9. git reset --hard 版本号 回退到对应的版本号

10.git diff 比较差异

git diff 比较与当前版本
git diff HEAD^ 比较与上一个版本
git diff 版本号 比较与版本号对应的版本

11.git checkout filename 放弃对工作区代码的修改

可以和git diff 在一起使用,我们可以看到修改的代码,如果不想修改,就使用这个命令。就是将仓库中的最新版本覆盖工作区。

12.git reset HEAD filename 从暂存区中撤销

13.git rm filename 删除一个文件

此时提交到缓存区,需要commit之后才能在版本库中删除。

四、分支

默认为master分支,可以建立不同的分支开发不同的版本。也可以合并分支。

1. 查看分支:git branch

2.创建分支:git branch 分支名

3.切换分支:git checkout 分支名

4.创建并切换分支:git checkout -b 分支名

5.删除分支:git branch -d 分支名

不能删除当前所在的分支,要切换到其他分支之后才能进行删除

6.合并某个分支到当前分支:git merge 分支名

如果同时在两个分支都修改了内容,会产生冲突。要人工进行修改。






从上面的图可以看出,我们只能在master中看到合并后的版本,在topic中看不到。

注意:

7.以图表的方式显示log: git log --graph

8.保护现场:git stash

9.列出所有保存现场的信息:git stash list

10.取出某次的现场信息:git stash pop “stash@{1}”

默认是最近的一次,如果有多个现场,可以加上编号“stash@{1}”来指定获取某一个。不同的分支的现场,要回到对应的分支再获取,否则会自动合并到当前分区的工作区。
当工作区有代码修改的时候是不能切换分支的要先保存现场,再进行切换。

五、远程仓库操作

操作一

添加公钥

打开gitee -> 【设置】-> 【ssh公钥】

如何获取公钥?

首先,在终端输入 ssh-keygen -t rsa -C "xxxx@qq.com".

jqw@jqw-virtual-machine:~$ ssh-keygen -t rsa -C "2771856863@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jqw/.ssh/id_rsa):         
Created directory '/home/jqw/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/jqw/.ssh/id_rsa
Your public key has been saved in /home/jqw/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:GHmf5EjJ2z/FEjokqyxLeFCrveTjq2gLi4/FQmzapno 2771856863@qq.com
The key's randomart image is:
+---[RSA 3072]----+
|                 |
|       o .       |
|    . o * o .    |
|.  . . = @ o o   |
| +. . . S B . o  |
|+o = . .   o o   |
|+ B * o     o    |
|oXE=.+       .   |
|X++o*o           |
+----[SHA256]-----+

进入/home/jqw/.ssh目录,查看 id_rsa.pub文件中的内容就是公钥。

jqw@jqw-virtual-machine:~/.ssh$ cat id_rsa.pub

在gitee中添加公钥之后,服务器就把公钥保存了。

测试连通是否成功

命令:ssh -T git@gitee.com or ssh -T git@github.com

jqw@jqw-virtual-machine:~/.ssh$ ssh -T git@gitee.com
Hi Jqivin! You've successfully authenticated, but GITEE.COM does not provide shell access.

jqw@jqw-virtual-machine:~/.ssh$ ssh -T git@github.com
Hi Jqivin! You've successfully authenticated, but GitHub does not provide shell access.

以上是关于Git的简单使用的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

如何管理在每个 git 版本中添加私有代码片段?

markdown Git代码片段

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段