Git 配置以及常见操作

# 前言

不知道是不是一种洁癖,我比较喜欢隔三差五的重装系统。每次重装系统带来的问题就是git的相关配置都得重新配置。于是写一篇文章来记录一下配置git 的全过程,以及在工作中经常使用的命令。

本文中涉及到的操作均在arch-linux里面,其他系统操作大致相同。如果有喜欢踩坑的朋友也可以访问如下链接安装 [arch-wsl](https://github.com/yuk7/ArchWSL) 。 后续准备开一篇如何在windows下配置 wsl(windows sub linux) 的使用(maybe)


另外本文不涉及`git`的原理的相关内容,关于这块的大家可以直接搜索相关文章,大把大把的文章会告诉你`git`是如何工作的

## git的基础配置

每一个工具使用前都需要根据个人使用习惯,进行工具的基础配置,这里列举了一些基础配置。在命令行一次输入如下命令,即可完成配置,配置文件创建在 ~/.giticonfig

# 配置用户名 
git config --global user.name 你的英文名 
# 配置邮箱 
git config --global user.email 你的邮箱 
# 配置git的默认行为,默认是Matching,此行为会push所有分支,simple只会push当前分支 
git config --global push.default simple 
# 解决提交文件名如果是中文名会出现乱码的问题 
git config --global core.quotepath false 
# 配置commit的时候以哪种编辑器打开填写 commit 信息,这里配置的是 vscode 
git config --global core.editor "code --wait" 

## 配置alias

配置别名 (alias) 简单来说就是配置一个更简短的命令来代替git 命令。例如可以将 git status 命名为 gst,当键入gst 就代表git status。

# 以下命令写入 .bashrc 文件。 
# 使用 zsh 的 还需在 .zshrc 里面添加以下命令。 
# 保存后 source 修改的文件 
alias ga="git add" 
alias gst="git status" 
alias gc="git commit" 
alias gp="git push" 
alias gco="git checkout"

## 配置远程仓库

以下配置以 github 为例,其他仓库可查看对应的配置文档进行配置。配置远程仓库之前先检查系统 ~ 根目录下有没有生成 .ssh 目录文件。如果没有请使用命令进行创建。

# linux 系统提示没有 ssh-keygen 命令的话 
# 自行google 查看如何下载 openssh 
# windows 在 git bash 里面运行即可 
ssh-keygen -t ed25519 -C "your_email@example.com" 
# 复制内容到SSH Keys 里面进行配置 
cat ~/.ssh/id_ed25519.pub

## 最最最基础的命令

#### 1. git add

将工作区的文件添加到暂存区

# 添加所有的修改的内容
git add .
# 添加指定的内容
git add file1 file2 

#### 2. git rm

有添加到暂存区的操作那必定有可反悔的命令。git rm 可以将添加到暂存区的返回到工作区

git rm --cached 将内容返回到工作区

git rm -f 则是将文件直接删除掉了

想查看所有的 git rm 的使用命令: git rm --help

# 返回工作区
git rm 1.txt --cached
# 删除
git rm 1.txt -r

#### 3. git status

此命令用于查看当前状态。另外也会给出操作提示,总之经常 git status 是个不错的操作。(就像使用vim的时候经常按 jk 一样doge)

git status

#### 4. git commit

将暂存区的内容提交到仓库,并且填写提交的说明

# -m 后面直接接上提交信息
git commit -m "commit message"
# -v 会打开默认的编辑器进行填写提交信息
git commit -v 
# --amend 会覆盖上一次的提交(使用场景:一般在两次两次提交想合并成最后一个提交的信息)
git commit -m  "commit message" --amend

## git 常用操作命令

上面讲到了 git 使用中最常见的命令,分别是 git status, git commit , git add,下面介绍一下在工作过程中其他常用的命令

#### 1. git branch

分支命令,包括分支的查看,删除,新增等操作

# 查看分支可以查看本地的以及远程仓库的,查看远程仓库的使用 -r, 查看所有的使用 -a
git branch -r 
git branch -a 
# 创建分支
git branch newBranch 
# 创建并切换到该分支
git checkout -b newBranch
# 修改当前分支名称,你需要先切换到当前分支,然后进行修改
git branch -m otherBranchName
# 删除分支,删除分支可能会提示你当前分支的代码还没有merge,如果仍需要删除,使用 -D
git branch -D newBranch 

#### 2. git merge

有了多分支,那么随之而来的就会有分支合并,git merge 有三种模式:

使用场景: 从 dev 分支切出分支 feature_1 ,当 feature_1 开发完成需要合并回 dev 分支的时候

# 个人更喜欢使用`--no-ff`
git checkout dev 
git merge feature_1 --no-ff

#### 3. git rebase

rebase 英文的意思是 变基,重垒

和 merge功能类似,都可以进行两个分支的内容合并,与 merge相比,rebase 会使得提交的信息更加整洁

使用场景1 : 从 dev 分支切出分支 feature_1 开发新的功能,当需要从 feature_1 分支去获取 dev 分支更新的最新内容时,可以使用 rebase

git checkout feature_1
git rebase dev 

使用场景2:当需要整合多次提交成为一个提交的时候。比如在开发过程中可能提交了多次细小的提交,看起来不够直观,于是你可以把这些提交都合并成一个提交

# 通过git log 查看想合并提交的Id
# 使用 -i ,那么从目标Id到当前的提交就会合并成一个提交
git rebase 4e81571 -i 

别问我这两者有啥子区别,如果硬要说区别,那么也可列举几点:

1.merge会生成非线性分支树,rebase生成线性的分支树

2.merge之后提交按照时间顺序,rebase(git rebase main) 使得 被rebase的分支的提交都会出现在当前分支的前面

3.rebase 其实并没有进行合并操作,只是提取了当前分支的修改,将其复制在了目标分支的最新提交后面

#### 4. git pull && git push && git remote

这两个命令用于与远程仓库的交互。push提交代码到远程仓库,pull从远程仓库拉取代码。常见的操作如下:

# 提交分支代码到远程仓库
git push origin branchName
# 从远程分支拉取代码
git pull origin branchName
# 查看远程仓库链接
git remote -v 
# 删除远程仓库链接
git remote rm  originName
# 添加远程仓库地址(可添加多个仓库地址)
git remote add originName

使用场景

leader 让你拉一个开源框架到公司的私有仓库里作为基础框架使用,并且能根据开源框架的版本迭代,做到私有仓库的框架版本迭代。

使用的命令有 git clone git remote

# 克隆开源仓库到本地
git clone git@github.com:vinoMamba/gitDemo.git
# 添加私有仓库的关联
git remote add origin git@github.com:vinoMamba/after-delete.git

执行上面的代码你会看到报错。报错内容很明显,因为名称重复了,你可以做两种操作:

# 1. 删除原本的关联,添加新的关联
git remote rm origin 
git remote add origin git@github.com:vinoMamba/after-delete.git
# 2. 或者再添加一个新的关联,避免明明冲突
git remote add origin-vino git@github.com:vinoMamba/after-delete.git
# 查看关联
git remote -v 

我一般的操作是第二种,这么做是方便当需要更新私有仓库的代码的时候,可以直接拉取代码进行合并。当然第一种操作也是可以的,后期升级的话需要再把开源仓库的关联添加上去,进去代码的拉去合并。

# 添加开源仓库的关联
git remote add origin-remote git@github.com:vinoMamba/gitDemo.git
# 从 远程仓库主分支拉取代码(注意 orgin-remote 是你添加开源仓库关联的名称)
git pull origin-remote main 

#### 4. git fetch && git pull

使用场景

当拉取代码出现代码冲突的时候,如何解决冲突并合并代码

使用的命令有: git pull git fetch git merge git log

说到 git pull 和 git fetch。在面试的时候我经常会问一下两者之间有什么区别,说实话如果不是为了准备面试,我也不清楚,后来通过查看相关文章和实践才了解。 在我的使用场景中,我一般都是git pull 直接拉取合并。然后再解决冲突。不同于 git pull ,git fetch 拉取的代码没有合并到本地代码中,这给了你查看远程代码和本地代码区别的机会,更加清楚明了。

git fetch origin main

git fetch 拉取代码之后,会返回仓库代码的最新状态。通过查看log 可以看到更新的内容

# -p 很好理解,可以理解为指针 point 
git log -p FETCH_HEAD
git merge --no-ff FETCH_HEAD
git status 

当出现冲突的时候。通过搜索==== 来定位冲突。等号上面的是本地代码。等号下面的时候拉取的代码,跟进实际情况进行处理即可。当然像 vs code jetbrains 这些现代化编辑器都有智能的提示,操作起来更简单。当冲突解决完毕之后,执行提交命令即可完成代码的合并。

## 其他操作

#### 1. git stash

可以理解为通灵术,就是说把当前工作区的内容推送到一个栈里面,当做完支线任务的时候在把栈里面的内容放回工作区。

涉及到的命令有:

#### 2. git tag

用于打版本号,这个一般在发布版本的时候会进行操作

涉及的命令有:

# 查看所有标签
git tag 
# 创建标签
git tag tagName
# 在指定的节点创建标签
git tag tagName 34e56b
# 填写标签的详细信息
git tag  -a tagName -v "tag message"
# 推送标签到远程
git push origin tagName

以上是我在工作过程中使用到的 git 操作,后续如果我升华了有更深理解了,我再来更新此文章


完。

展开阅读全文

页面更新:2024-03-15

标签:操作   分支   仓库   场景   冲突   命令   常见   代码   标签   内容   工作

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top