git 学习

1. git config

当我们安装了 git 后,一件非常重要的事情就是配置我们的用户名和邮箱地址,因为我们提交代码到远端服务器需要通过它们来得知提交者是谁。

查看配置列表
在配置用户信息前,我们需要确定自己是否已配置了用户信息。

我们先查看所有的配置:

git config --list 

配置分为全局配置(global)和本地配置(local)。全局配置影响所有的 git 仓库,本地配置只影响它所在的 git 仓库,并可以覆盖全局的配置。

上面的内容中,除了第一行来自全局配置,其他配置都是来自该 git 仓库,具体配置文件位置在 .git/config

全局配置来自当前用户家目录下的 .gitconfig 文件,即 ~/.gitconfig。

打开配置文件以查看所有配置

用编辑器(通常是 vim)打开配置文件的命令如下:

# 打开全局配置

git config --global --edit

# 打开当前 git 仓库配置

git config --edit

查看指定配置

上面列表内容有点多,我们可以只看需要的用户信息配置。

查看配置的用户的 用户名/邮箱地址:

git config user.name
git config user.email

 

命令会先找 git 仓库里的配置,找不到再找全局配置。如果什么都没输出,说明你没有配置。

你也可以指定配置的作用域为 local 还是 global:

# 本地
git config --local user.email
# 全局
git config --global user.email

 

如果都没有,就要去配置了。

配置用户信息

配置全局的用户信息:

git config --global user.name "前端西瓜哥"
git config --global user.email "work-email@gmail.com"

 

双引号可加可不加,如果值中间有空格符,就要加上。

如果你想配置当前项目的用户信息,将 --global 去掉即可,或者也可以改成 --local

git config user.email "person-email@gmail.com"


这在你用公司的电脑折腾自己的个人项目很有用,毕竟你也不希望自己的个人项目的 commit 提交显示的是公司邮箱。

删除配置

当不需要一个配置时,我们可以使用 --unset 配置项。也可以直接改配置文件。

# 本地
git config --unset user.email
# 全局
git config --global --unset user.email

 

————————————————
版权声明:本文为CSDN博主「前端西瓜哥」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fe_watermelon/article/details/126861963

 

 

2. Git 配置当前文件夹

转载自:《本地项目上传到git的详细步骤》

参考自:Gitee 官方《提交第一行代码》

第一种办法:本地初始化一个仓库,设置远程仓库地址后再做push

1. 先进入项目文件夹,通过命令 git init 把这个目录变成git可以管理的仓库

git init

2. 把文件添加到版本库中,使用命令 git add .添加到暂存区里面去,不要忘记后面的小数点“.”,意为添加文件夹下的所有文件

git add .

3. 用命令 git commit告诉Git,把文件提交到仓库。引号内为提交说明

git commit -m 'first commit'

4. 关联到远程库(第一种办法最重要的一步!!!)

git remote add origin 你的远程库地址。

如:

$ git remote add origin https: //gitee .com/用户个性地址 /HelloGitee .git

5. 获取远程库与本地同步合并(如果远程库不为空必须做这一步,否则后面的提交会失败)

git pull --rebase origin master

6. 把本地库的内容推送到远程,使用 git push命令,实际上是把当前分支推送到远程。执行此命令后会要求输入用户名、密码,验证通过后即开始上传。

git push -u origin master

另一种办法: 先将仓库clone到本地,修改后再push到 Gitee 的仓库

$ git clone https:   //gitee .com/用户个性地址   /HelloGitee .git    #将远程仓库克隆到本地

在克隆过程中,如果仓库是一个私有仓库,将会要求用户输入 Gitee 的账号和密码。按照提示输入即可。

然后按照上述 2->3->6的step 提交。

3. Git 分支基础

推荐学习网址:https://learngitbranching.js.org/?demo=&locale=zh_CN

要查看 Git 中的分支列表,可以使用 git branch 命令。该命令会列出当前仓库中所有的本地分支,并在当前分支前面加上一个星号(*)以标识当前所在的分支。

可以添加 -r 选项来查看远程分支,或者使用 -a 选项来查看所有分支(包括本地分支和远程分支)。

底层原理是,Git 使用对象数据库来存储提交和分支等信息。每个分支实际上是一个指向某个提交对象的指针。在 Git 中,分支的列表信息存储在 .git/refs/heads 目录下,每个分支都是一个文件,文件名为分支名称,文件内容为指向该分支最新提交的 SHA-1 值。当运行 git branch 命令时,Git 会读取该目录下的文件列表并显示为分支列表。通过读取这些文件的内容,Git 可以确定每个分支指向的提交对象和分支名称

 

1. 创建分支命令:

git branch branch_name

创建后并不自动切换,需要手动切换

git checkout brach_name

 注意:在 Git 2.23 版本中,引入了一个名为 git switch 的新命令,最终会取代 git checkout,因为 checkout 作为单个命令有点超载(它承载了很多独立的功能)。 

2. 合并分支命令:

git merge branch_name

合并之后两个分支的历史提交都存在,并且另一个分支的指针并没有改变,如果需要改变为合并的点,则需要:

git switch another_branch //切换到另一个分支上
git merge branch_name //重新执行一次 merge 命令

3. 附加合并分支命令:git rebase branch_name

 这一个命令的增强版:git rebase -i 更为易用。

 

4. HEAD指针相关实现定位某一提交

 1. 移动HEAD指针命令: git checkout 

1 移动 HEAD 的命令:
2 
3 git checkout <SHA-1>
4 git checkout HEAD[^/~<num>/^<num>]
5 git checkout 分支[^/~<num>/^<num>]

 配合移动分支到 HEAD的相对位置  使用 git branch -f 命令。

git branch -f master HEAD //将master 重挂载在HEAD之下

5. 撤销命令:

git reset 通过把分支记录回退几个提交记录来实现撤销改动。你可以将这想象成“改写历史”。git reset 向上移动分支,原来指向的提交记录就跟从来没有提交过一样。

使用方法:

git reset HEAD^1 (将当前分支移动到HEAD之前的一个提交)

 

虽然在你的本地分支中使用 git reset 很方便,但是这种“改写历史”的方法对大家一起使用的远程分支是无效的哦!

为了撤销更改并分享给别人,我们需要使用 git revert。来看演示:

 

怪!在我们要撤销的提交记录后面居然多了一个新提交!这是因为新提交记录 C2' 引入了更改 —— 这些更改刚好是用来撤销 C2 这个提交的。也就是说 C2' 的状态与 C1 是相同的。

使用方法:
git revert HEAD

 

 5. Git树自由移动

本系列的第一个命令是 git cherry-pick, 命令形式为:

  • git cherry-pick <提交号>...

如果你想将一些提交复制到当前所在的位置(HEAD)下面的话, Cherry-pick 是最直接的方式了。

 

当你知道你所需要的提交记录(并且还知道这些提交记录的哈希值)时, 用 cherry-pick 再好不过了 —— 没有比这更简单的方式了。

但是如果你不清楚你想要的提交记录的哈希值呢? 幸好 Git 帮你想到了这一点, 我们可以利用交互式的 rebase —— 如果你想从一系列的提交记录中找到想要的记录, 这就是最好的方法了

git pull origin

 

 6. Git 新建本地分支 & 同步到远程

前提:学会查看本地分支和远程分支:

  • 查看所有本地分支 git branch
  • 查看所有远程分支 git branch -r
  • 查看所有分支(本地和远程)git branch -a
  • 查看远程分支和本地分支的关系: git remote show origin

 

假设已经从远端仓库的master分支pull下了代码,并进行了修改。但是不想将提交到远端的master分支,而是想将代码提交到一个新的分支。此时需要在本地新建分支并提交,然后同步到远端仓库。

1、首先在本地创建新分支:

git checkout -b dev_qmy

-b 参数表示创建“dev_qmy”分支的同时切换到这个分支,相当于git branch dev_qmy + git checkout dev_qmy两条命令

2、添加所有代码和文件

git add .

3、提交到新分支并同步到远端

git push origin dev_qmy

 4. 当push的时候会提示下面的内容:The current branch xxx has no upstream branch

按要求输入:git push --set-upstream origin [xxx] 即可。

git branch -a 命令查看远程分支,发现已经同步。

 7. Git 新建远程分支 & 同步到本地

执行如下命令:

git fetch origin <远程分支名xxx> <本地分支名xxx>

使用这种方式会在本地仓库新建分支xxx,但是并不会自动切换到新建的分支xxx,需要手动checkout,当然了远程分支xxx的代码也拉取到了本地分支xxx中。

 

posted @ 2023-05-15 16:34  FBshark  阅读(25)  评论(0编辑  收藏  举报