Git使用教程:修订间差异

来自Uotan Wiki · 刷机百科
第56行: 第56行:


(此处演示为英文,如果您的git终端输出为中文也是同理的)
(此处演示为英文,如果您的git终端输出为中文也是同理的)
<pre>
On branch master
No commits yet
Changes to be committed:  


<code>On branch master</code>
(use “git rm --cached <file>...” to unstage)       
 
new file:   makefile
<code>No commits yet</code>
</pre>
 
<code>Changes to be committed:  </code>
 
<code>(use “git rm --cached <file>...” to unstage)       </code>
 
<code>new file:   makefile</code>


输出内容分别为
输出内容分别为

2024年2月15日 (四) 22:26的版本

Git的由来:

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理,也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper。

常见的代码托管平台:

Github

Gitlab

Gitee

Git 常见命令:

git init

在本地目录中初始化一个新的Git仓库

git config

用于配置用户的信息以及其他设置,在使用git之前您必须完成以下步骤。

git config --global user.name "your username"git config --global user.email "your email"

git clone

用于将远程仓库的代码克隆到本地

<url>

克隆某个地址(url)的仓库,远程仓库的地址可以是本地的目录,也可以是例如github,giteee,gitlab一类的代码托管平台

--depth=<number>

克隆仓库并且保留number条提交历史,number在此处即表达我们克隆的深度。

-b <branch>

克隆指定分支下的仓库内容

git add

添加某个文件,或者目录到暂存区,用于告诉git你需要将哪些文件的更改包含在下一次的提交(commit)之中


添加一个或者多个文件到暂存区之中

git add [file1] [file2]

添加指定目录(文件)到暂存区,包括子目录:

添加当前目录下的所有文件到暂存区,包括子目录:

git add [dir]

添加当前目录下的所有文件到暂存区:

git add .

git status

查看当前仓库的状态,此时git会在你的终端输出以下内容

(此处演示为英文,如果您的git终端输出为中文也是同理的)

On branch master
No commits yet
Changes to be committed:  

(use “git rm --cached <file>...” to unstage)       
new file:   makefile

输出内容分别为

  • 您目前所在的分支
  • 目前的提交
  • 需要更改的内容
  • 新增文件
  • 修改文件
  • 删除文件

git commit

用于将暂存区我们保存的更改文件添加到本地仓库,并且会生成一条提交(commit)

提交暂存区的更改到本地仓库

git commit -m "message"

[注] message 可以是你的备注信息

提交暂存区中的指定文件到本地仓库

如果你没有使用上述git add命令暂存你的修改文件,可以使用

git commit -a

进行直接提交

git checkout

  • 用于分支切换

切换分支:

git checkout <branch-name>

git checkout <branch-name>

例如在您的仓库中有这几个分支:-> master

test

您当前处于 master 分支,如果想要切换到test分支,我们可以使用

git checkout test

  • 用于检出文件

将指定的文件恢复到最新的提交状态,撤销你对其的更改

git checkout -- <file>

git push

用于将本地的分支版本上传到远程仓库并进行合并

git push <remote-host-name> <local-branch-name>:<remote-branch-name>

remote-host-name:远程主机名

local-branch-name:本地分支名

例如,当你的远程主机名为origin ,本地分支名为master,远程分支名为master时:

git push origin master:master

例如,当你的rhost名为origin 本地分支名为master远程分支名为master时:

本地和远程分支名相同,上述命令可以简写为:

git push origin master

当你的远程版本与本地版本有差异,无法直接push时,你可以使用--force 参数来进行强制推送

git push --force origin master

--force 此处可以直接简单化为 -f

如果你想要删除主机内的某个分支,你可以使用--delete参数

git push origin --delete <branch-name>

git diff

用于比较当前工作区与上一个版本之间的差异

git log

用于查看提交的历史

例如当你进行一次提交之后,执行 git log终端会输出

commit 3a5b0d12f471418b13f2baf5e9e4c112a5e804a8 (HEAD -> master)

Author: luluzzy <1054438588@qq.com>

Date:   Thu Feb 15 21:28:47 2024 +0800

    initial commit: add makefile

这些输出分别为

  • commit sha1 hash: 针对你这个提交的commit id
  • Author: commit 作者名称 <you@example.com>
  • Date: commit 日期
  • commit: 名称

关于sha1_hash的介绍请看这里[1]

当有多次提交之后,如果我们想要翻之前的提交历史,难免会因为终端输出的内容过多而难以查看翻阅

此时我们可以使用--online参数来简化输出,此时仅会输出: sha1哈希值 + commit的名称

例如

347595d (HEAD -> master) modify makefile

3a5b0d1 initial commit: add makefile

参考资料:

[1] 百度百科-- Git:https://baike.baidu.com/item/GIT/12647237?fr=ge_ala

[2] 菜鸟教程-- Git基本操作:https://www.runoob.com/git/git-basic-operations.html

  1. 生成这个hash值,它是对那个commit是Git仓库中内容和头信息Header的一个校验和checksum。Linux kernel开创者和Git的开发者——Linus说,Git使用了sha1并非是为了安全性,而是为了数据的完整性;它可以保证,在很多年后,你重新checkout某个commit时,一定是它多年前的当时的状态,完全一摸一样,完全值得信任。在Git中,根据commit的sha1值40个十六进制数字进行了简单的划分目录,以前2位数字作为目录名,其下面是剩余38位数字组成的一个文件名