前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git常用命令

Git常用命令

原创
作者头像
芝士就是菜
发布2024-07-14 01:31:39
820
发布2024-07-14 01:31:39
举报
文章被收录于专栏:代码开发

Git是一种分布式版本控制系统,可以进行多人的协作开发,基本大部分的软件开发相关的公司都会使用该软件,下边记录一些常用的命令

## 安装Git

可以从[Git官方网站](https://git-scm.com/)下载适合操作系统的安装程序,win可以直接下载,常用的linux系统

Ubuntu

```

apt-get install git

```

Centos

```

yum install git

```

Linux平台下使用下述命令查看git版本:

```

git --version

```

## 创建本地Git仓库并配置

要在本地创建一个新的Git仓库,可以使用以下命令:

```

git init

```

### 用户信息配置

配置Git的用户信息,包括用户名和邮箱地址。在命令行中输入以下命令:

```

git config --global user.name "Your Name"

git config --global user.email "youremail@example.com"

```

--global是可选项,带上该选项在仓库目录下运行上述命令之后,可以在本机所有的仓库中生效

查看配置命令:

```

git config -l

```

删除对应的账户配置

```

git config [--global] --unset user.name

git config [--global] --unset user.email

```

### 公钥

生成 Git 的公钥是为了在使用 Git 时进行身份验证。输入以下命令来生成 SSH 密钥对:

1. 生成公钥

```

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

```

- `-t rsa`:指定生成 RSA 类型的密钥。

- `-b 4096`:指定密钥的位数为 4096 位,提高安全性。

- `-C "your_email@example.com"`:在生成的密钥中添加注释,一般填写你的邮箱地址。

2. 系统会提示你选择保存密钥的位置,默认为 `~/.ssh/id_rsa`,也可以自定义路径。

3. 然后系统会提示你设置密钥的密码(可选),设置密码可以提高密钥的安全性。

4. 生成成功后,会显示公钥的路径,默认为 `~/.ssh/id_rsa.pub`。

5. 使用文本编辑器打开公钥文件 `id_rsa.pub`,复制里面的内容。

6. 将公钥内容粘贴到 Git 服务商(如 GitHub、GitLab)的 SSH 密钥设置中,以便进行身份验证。

生成的公钥可以用于与 Git 服务商进行安全的通信和身份验证。

## 将文件添加到Git仓库

将文件添加到Git仓库需要两个步骤。首先,使用以下命令将文件添加到暂存区:

```

git add filename

```

然后,使用以下命令将文件提交到仓库:

```

git commit -m "Commit message"

```

## 版本回退

`git restore --staged <file>...` 命令用于将暂存区(Staging Area)中的文件恢复到工作目录中的状态,即取消暂存的文件更改。

执行这个命令后,指定的文件将从暂存区还原到工作目录,文件的更改将不再处于暂存状态。

`git reset` 命令在 Git 中用于撤销更改、移动 HEAD 指针或重置暂存区。以下是 `git reset` 命令的常用参数和说明:

1. **`git reset HEAD <file>`**:

- 这个命令用于将暂存区中指定文件的更改撤销,同时保留工作目录中的更改。

- `<file>` 是要撤销暂存的文件名。

-

2. **`git reset --soft <commit>`**:

- 这个命令将当前分支的 HEAD 指针移动到指定的提交,但保留工作目录和暂存区的更改。

- `<commit>` 是要重置到的提交的引用(如 commit hash、分支名等)。

3. **`git reset --mixed <commit>`**:

- 这个命令将当前分支的 HEAD 指针移动到指定的提交,并重置暂存区,但保留工作目录的更改。

- `<commit>` 是要重置到的提交的引用。

4. **`git reset --hard <commit>`**:

- 这个命令将当前分支的 HEAD 指针移动到指定的提交,并重置暂存区和工作目录,丢弃所有更改。

- `<commit>` 是要重置到的提交的引用。

5. **`git reset --merge`**:

- 这个命令用于解决合并冲突时,取消合并并重置到合并之前的状态。

通过合理使用 `git reset` 命令及其参数,可以有效地管理 Git 仓库中的提交历史和更改状态。请谨慎使用 `git reset --hard` 命令,因为它会永久丢弃工作目录中的更改。

假设工作区文件有 aaa,增加bbb,变成aaa bbb,之后add、commit

| 工作区 | 暂存区 | 版本库 | reset携带的选项 |

| ------- | ------- | --- | ------------- |

| aaa bbb | aaa bbb | aaa | --soft |

| aaa bbb | aaa | aaa | --mixed :默认选项 |

| aaa | aaa | aaa | --hard:慎用这个选项 |

在工作区修改了很多文件之后,突然发现修改错了,如何恢复?

1. 手动修改

2. 使用 git checkout --filename

## 查看Git仓库状态

你可以使用以下命令查看Git仓库的状态:

```

git status

```

## 查看提交历史

要查看提交历史,可以使用以下命令:

```

git log

git log --pretty=oneline

git log --pretty=oneline --abbrev-commit

git reflog 查看每次的log 包括撤销

```

- `--pretty=oneline`选项指定了输出格式为每个提交的一行显示,显示的信息包括提交的哈希值和提交信息。这种格式适合在终端中查看提交历史,信息简洁明了。

- `--abbrev-commit`选项指定了显示的提交哈希值的缩写长度。默认情况下,Git会显示完整的40位哈希值,但使用`--abbrev-commit`选项可以缩短哈希值的长度,使得显示更加简洁。

## 标签管理

在 Git 中,标签(tag)是用来标记特定提交的稳定版本或重要节点的指针。以下是一些常用的 Git 标签操作:

1. **列出所有标签**:

```

git tag

```

这个命令会列出所有的标签。

2. **创建轻量标签**:

```

git tag <tag_name>

git tag <tag_name> commit_id

```

这个命令会在当前提交上创建一个轻量标签,只包含标签名。

3. **创建附注标签**:

```

git tag -a <tag_name> -m "tag message"

```

这个命令会在当前提交上创建一个附注标签,可以添加标签信息。

4. **查看标签信息**:

```

git show <tag_name>

```

这个命令会显示指定标签的详细信息。

5. **推送标签到远程仓库**:

```

git push origin <tag_name>

```

这个命令会将指定标签推送到远程仓库。

6. **删除本地标签**:

```

git tag -d <tag_name>

```

这个命令会删除指定的本地标签。

7. **删除远程标签**:

```

git push --delete origin <tag_name>

```

这个命令会删除指定的远程标签。

Git 中管理标签,标记重要的提交或版本,并与团队共享稳定的版本信息。

## Git分支

Git允许创建分支来并行开发不同的功能

创建分支:

```

git branch branchname

```

要查看本地分支,可以使用以下命令:

1. **查看所有本地分支**:

```

git branch

```

这个命令会列出所有本地分支,并在当前分支前面标记一个 `*` 符号。

2. **查看远程分支和本地分支**:

```

git branch -a

```

这个命令会列出所有本地分支和远程分支。

3. **查看本地分支的详细信息**:

```

git branch -v

```

这个命令会列出所有本地分支,并显示每个分支最后一次提交的信息。

### 切换分支

要切换到一个不同的分支,可以使用以下命令:

```

git checkout branchname

git checkout -b branchname # 创建并切换到新的分支

```

### 合并分支

完成一个功能的开发后,可以将分支合并到主分支。使用以下命令可以实现分支合并:

```

git merge branchname

```

### 删除分支

1. **删除本地分支**:

```

git branch -d <branch_name>

```

或者

```

git branch -D <branch_name>

```

- `-d`:表示删除指定分支,如果分支的工作还未合并到当前分支,会提示错误并阻止删除。

- `-D`:表示强制删除指定分支,即使分支的工作还未合并到当前分支也会删除。

2. **删除远程分支**:

```

git push origin --delete <branch_name>

```

或者

```

git push origin :<branch_name>

```

这两个命令都可以用来删除远程仓库中的指定分支。

请注意,在删除分支之前,确保不再需要该分支的代码或提交记录。删除分支是一个不可逆的操作,删除后的分支及其提交记录将无法恢复。

### 关联分支

通过以下步骤为当前分支 `dev` 设置与之关联的远程分支:

1. **手动设置远程分支**:

```

git branch --set-upstream-to=origin/dev dev

```

这个命令会将本地的 `dev` 分支与远程的 `dev` 分支建立关联。

2. **推送本地分支到远程**:

如果需要将本地分支 `dev` 推送到远程仓库,可以使用以下命令:

```

git push -u origin dev

```

这样会将本地的 `dev` 分支推送到远程仓库,并建立关联。

通过以上步骤,可以解决当前分支没有与之关联的远程分支的问题,并确保在推送或拉取时能够正确同步代码。

## 远程开发

从远程仓库克隆后,实际上 Git 会⾃动把本地的 master 分⽀和远程的 master 分⽀对应起来, 并且,远程仓库的默认名称是 origin 。在本地我们可以使⽤ git remote 命令,来查看远程库的信息

⽤ git remote -v 显⽰更详细的信息

```

tong@atong3:~/unskilled-vim$ git remote -v

origin git@github.com:atongrun/unskilled-vim.git (fetch)

origin git@github.com:atongrun/unskilled-vim.git (push)

```

克隆完成仓库之后,git branch -a 查看分支,可以在本地创建分支,通过git checkout -b dev命令,增加并且切换到dev分支

```

tong@atong3:~/unskilled-vim$ git branch -a

* dev

main

remotes/origin/HEAD -> origin/main

remotes/origin/dev

remotes/origin/main

```

将本地的 `dev` 分支推送到远程仓库,并将本地的 `dev` 分支与远程仓库的同名分支建立关联关系

```

git push --set-upstream origin dev

```

## 推送到远程仓库

如果想与团队成员代码,可以将代码推送到远程仓库。首先,添加远程仓库的地址:

```

git remote add origin remote_repository_url

```

然后,将代码推送到远程仓库:

```

git push -u origin master

```

解决Git冲突是在合并分支或拉取远程更新时可能遇到的情况。下面是解决Git冲突的一般步骤:

### 步骤1:检测冲突

在合并分支或拉取远程更新时,如果Git检测到冲突,会在文件中标记出冲突的部分。可以使用`git status`命令查看哪些文件有冲突。

### 步骤2:打开冲突文件

找到有冲突的文件,打开它并查看冲突的部分。冲突的部分会被标记为类似以下的格式:

```

<<<<<<< HEAD

// 本地分支的更改

=======

// 远程分支的更改

>>>>>>> branch_name

```

### 步骤3:手动解决冲突

根据冲突标记,手动编辑文件以解决冲突。需要决定保留哪些更改或如何合并这些更改。删除冲突标记并保留想要的更改。

### 步骤4:标记冲突已解决

在解决完冲突后,保存文件并使用以下命令标记冲突已解决:

```

git add <conflicted_file>

```

### 步骤5:完成合并

继续合并分支或拉取远程更新,并完成合并操作:

```

git commit -m "Merge conflict resolved"

```

### 步骤6:推送更改

如果是在拉取远程更新时解决冲突,完成合并后需要将更改推送到远程仓库:

```

git push

```

通过以上步骤,可以解决Git冲突并成功合并分支或拉取远程更新。记得在解决冲突时仔细审查更改,确保代码的完整性和正确性。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档