0


Git命令大全:轻松掌握Git工具,提高代码管理效率

文章目录

Git命令大全

一、前言

随着现代科技的快速发展,计算机技术正在成为我们日常生活和工作中不可或缺的一部分。计算机编程已经成为了许多人生活和工作的重要组成部分,而版本控制则是计算机编程过程中必不可少的一环。版本控制是一种有效的协作方式,它可以让多人在同一时刻对同一代码库进行修改,从而让开发者在协作过程中更加高效地工作。

Git是目前最受欢迎的版本控制系统之一,由Linux的创始人之一Linus Torvalds开发。Git采用分布式版本控制方式,这意味着它不像传统的版本控制系统一样,不需要由一个中央服务器来管理代码库,而是将整个代码库分成许多小的本地仓库,每个本地仓库都可以自由地进行修改和操作,修改后再通过网络同步到其他的本地仓库中。

Git相对于其他版本控制系统的优点在于它具有良好的性能、灵活的分支支持和强大的历史记录跟踪功能。这些优点使得Git成为了众多开源项目和商业项目的首选版本控制系统,并成为了许多程序员必备的技能。

对于刚刚开始学习Git的开发者来说,了解版本控制的基本概念和Git的使用方法是非常重要的。在基本概念方面,需要了解Git工作原理、Git的三个阶段(工作区、暂存区、版本库等)以及多人协作等基本知识。在使用方法方面,需要掌握Git的各种命令,并能够结合实际情况灵活使用Git的分支管理、版本控制、代码提交等功能。

二、安装

1. Windows系统上的Git安装

  1. 下载Git安装程序:访问Git官方网站,从下载页面中选择Windows版本的Git安装程序,推荐使用最新版。下载后双击运行安装程序,根据提示完成安装。
  2. 配置Git环境变量:安装Git后,在命令行中输入git --version验证是否安装成功。若无法运行git命令,则需要手动配置Git环境变量。具体方法是在系统环境变量PATH中添加Git的安装路径。

2. Linux系统上的Git安装

  1. apt-get安装方式(Debian/Ubuntu):在终端中使用以下命令安装Git。
sudo apt-get update
sudo apt-get install git
  1. yum安装方式(CentOS/RHEL):在终端中使用以下命令安装Git。
sudo yum install git
  1. 源码安装方式:从Git官方网站下载源代码,解压后运行以下命令进行编译和安装:
make prefix=/usr/local all
sudo make prefix=/usr/local install

3. MAC系统上的Git安装

  1. 使用homebrew安装Git:Homebrew是Mac系统下的一款包管理工具,可以通过以下命令安装Git。
brew install git
  1. 使用MacPorts安装Git:MacPorts也是一款Mac系统下的包管理工具,使用以下命令安装Git。
sudo port install git-core

安装完成后,可以在终端中使用git --version命令进行验证是否安装成功。

三、配置

安装完Git后需要进行一些基础的配置。具体参考以下命令行操作:

# 设置Git的用户名
git config --global user.name "Your Name"

四、配置用户名和邮箱地址

# 设置Git的邮箱地址
git config --global user.email "Your Email"

五、创建仓库

1. 在本地创建空目录作为Git的仓库

  1. 创建一个新项目的文件夹,例如"demo"。
  2. 打开终端或Git Bash,输入cd命令并加上新项目的路径,例如:cd /Users/username/demo
  3. 使用git init命令初始化Git仓库。具体命令如下:
$ git init Initialized empty Git repository in /Users/username/demo/.git/

初始化完毕后,Git会在新项目的文件夹中生成一个隐藏的.git目录,这个目录是Git仓库的核心组成部分,其中包含了Git的所有配置和历史记录。此时你已经成功创建了一个本地的Git仓库。

2. 从现有的Git服务器拉取一个Git仓库副本

  1. 打开终端或Git Bash,进入要克隆仓库的目录,例如cd /Users/username
  2. 使用git clone命令克隆一个现有的Git仓库。具体命令如下:
$ git clone https://github.com/username/repository.git

其中,

https://github.com/username/repository.git

是要克隆的Git仓库地址。

成功克隆仓库后,Git会将仓库副本复制到你本地的文件夹中。此时你已经成功创建了一个本地的Git仓库,并且获取了Git仓库中所有的历史记录和文件。

六、工作区

1. 添加文件

使用

git add

命令将工作区中修改后的文件添加到暂存区,之后再使用

git commit

提交到版本库中。

例如,在工作区中修改了一个文件index.html,我们使用

git add

命令将其添加到暂存区。

$ git add index.html  # 添加index.html文件到暂存区
$ git commit -m "modify index.html file"# 提交修改

2. 查看状态

使用

git status

命令可以查看工作区和暂存区的状态,比如文件是否修改,是否已经添加到暂存区等。

例如,使用

git status

命令查看当前工作区和暂存区的状态。

$ git status  # 查看工作区和暂存区的状态

3. 撤销修改

如果我们在工作区修改了一个文件,但又不希望提交这个修改,可以使用

git checkout

命令,它可以将工作区中的修改撤销掉(但是注意,这会删除已经修改的文件内容,所以要谨慎操作)。

例如,我们在工作区中修改了一个文件index.html,但是又不想使用这个修改,可以使用如下命令将修改撤销:

$ git checkout --index.html  # 将index.html文件的修改撤销

4. 删除文件

使用

git rm

命令可以删除工作区中的文件,并将其同时从暂存区和版本库中删除。

例如,我们可以使用如下命令删除工作目录下的index.html文件:

$ git rm index.html  # 删除index.html文件
$ git commit -m "delete index.html file"# 提交删除操作

5. 移动文件

如果我们要移动一个文件到新的目录,可以使用

git mv

命令,它可以同时将文件移动到新目录并将移动操作提交到版本库中。

例如,我们需要将工作区中的index.html文件移动到新目录subdir中:

$ git mv index.html subdir/index.html  # 将index.html文件移动到subdir目录中
$ git commit -m "move index.html to subdir"# 提交移动操作

七、暂存区

1. 添加到暂存区

使用

git add

命令将工作区修改的文件添加到暂存区,例如添加一个文件my_file。

$ touch my_file # 在工作区中创建文件my_file
$ git add my_file # 将my_file添加到暂存区

2. 查看暂存区状态

使用

git status

命令查看暂存区状态,可以列出暂存区中已经准备好的文件清单。
例如,使用

git status

命令查看当前暂存区中的状态。

$ git status # 查看暂存区中的状态

3. 移除文件或目录

使用

git rm

命令可以将暂存区中的文件或目录从Git版本库中删除,例如删除暂存区中的一个文件my_file。

$ git rm my_file # 删除暂存区中的my_file文件
$ git commit -m "delete my_file"# 将修改提交到版本库中

4. 恢复文件或目录

使用

git reset

命令可以将暂存区中的文件或目录恢复到工作区中,例如将暂存区中的my_file文件的修改内容恢复到工作区。

$ git reset my_file # 恢复暂存区中my_file的修改内容

八、提交

1. 提交到本地仓库

在Git中,我们需要先将代码保存在本地仓库中,然后再将其推送到远程仓库中。要将代码提交到本地仓库,我们需要使用

git add

git commit

命令。

使用

git add

命令将代码变更添加到暂存区中。暂存区是一个将要提交的代码变更的缓存区域。

git add <file>

使用

git commit

命令将暂存区中的代码变更提交到本地仓库中。提交时,我们需要提供一个提交信息,用于说明本次提交的目的。

git commit -m "commit message"

2. 撤销提交

在Git中,我们可以使用

git reset

命令来撤销提交。撤销后,代码变更会回退到上一次提交的状态。

使用git reset HEAD~命令可以撤销上一次提交:

git reset HEAD~

也可以使用

git reset <commit>

命令来撤销指定的提交,其中是需要撤销的提交的哈希值。

git reset <commit>

注意,撤销提交会删除提交信息和提交所包含的代码变更,慎用。

3. 查看提交日志

我们可以使用

git log

命令来查看提交日志。提交日志会显示每一次提交的哈希值、作者、提交时间和提交信息。

git log

我们可以使用不同的选项来过滤提交日志的显示。例如,使用

--author

选项可以只显示指定作者提交的日志:

git log --author=<author>

4. 修改提交信息

如果我们提交时写错了提交信息,可以使用

git commit --amend

命令来修改提交信息。

git commit --amend -m "new commit message"

注意,使用–amend选项修改提交信息会修改提交哈希值,因此只适用于还未推送到远程仓库的提交。

如果修改的是最后一次提交的提交信息,我们也可以使用

git commit --amend

命令的简写:

git commit --amend

5. 修改上一次提交

有时候,我们提交时可能漏掉了一些代码变更或写错了变更内容,希望将这些变更合并到上一次提交中。可以使用

git commit --amend

命令来修改上一次提交。

git add <file>
git commit --amend

我们先使用

git add

命令将漏掉的代码变更添加到暂存区中,然后使用

git commit --amend

命令将其合并到上一次提交中。

需要注意的是,修改上一次提交会修改其哈希值,因此只适用于还未推送到远程仓库的提交。

九、分支操作

1. 创建分支

在Git中,我们可以使用

git branch

命令来创建新的分支。创建分支时,我们需要指定新分支的名称。

git branch <branch-name>

此时代码库中存在两个指针,HEAD指向当前所在的分支,另一个指针指向新创建的分支。

2. 切换分支

使用

git checkout

命令切换分支。切换分支后,HEAD指针会指向当前分支。

git checkout <branch-name>

3. 查看分支

查看分支
使用

git branch

命令查看分支。使用-a选项可以查看所有分支,包含本地和远程分支。

git branch -a

使用-v选项可以查看每个分支的最后一次提交。

git branch -v

4. 删除分支

使用

git branch -d

命令删除本地分支。如果分支未合并,需要使用-D选项强制删除。

git branch -d <branch-name>

如果需要删除远程分支,我们需要使用

git push

命令,将空的分支推送到远程仓库。

git push origin :<branch-name>

5. 合并分支

5.1 Fast-forward合并

如果从分支创建以来没有在当前分支上进行过提交,那么Git会采用

fast-forward

合并,可快速合并分支。

假设我们现在在分支

branch-A

中进行了提交,想要将branch-A合并到main分支。

git checkout main
git merge branch-A

此时,main分支已经包含了

branch-A

分支的代码变更。

5.2 非Fast-forward合并

如果当前分支和被合并的分支都进行了提交,Git会使用一种

非fast-forward的合并方式

。此时,Git会在合并日志中添加一个新的提交,来记录分支的合并记录。

假设在分支branch-A和main上都进行了提交,并且存在冲突。

git checkout main
git merge branch-A

此时,Git会自动提示存在冲突。我们需要手动解决冲突,并提交合并结果。

git add <conflicting-file>
git commit

6. 解决冲突

在进行分支合并时,可能会出现冲突。如果出现冲突,Git会自动提示我们,需要手动解决冲突并重新提交。
当出现冲突时,我们需要先使用

git status

命令查看冲突文件。

git status

然后,我们需要手动编辑冲突文件,删除不需要的代码。

<<<<<<< HEAD
<code>
=======
<code>
>>>>>>> branch-A

编辑完成后,我们需要使用

git add

命令将编辑后的文件添加到暂存区,然后再提交合并结果。

git add <conflicting-file>
git commit

十、远程仓库

1. 创建远程仓库

我们可以使用Github、GitLab等Git托管服务创建远程仓库。在创建远程仓库时,需要提供仓库名称、描述等信息。

2. 关联远程仓库

在本地Git工作区中与远程仓库进行通信之前,我们需要将两者进行关联。我们可以使用

git remote add

命令来关联远程仓库。

git remote add origin <remote-repository-URL>

在这里,URL是远程Git托管服务提供的仓库URL地址,origin是自己定义本地仓库对应的名称,该名称在下面的对话框中使用的较为频繁。

3. 克隆远程仓库

如果我们想获取一个远程Git仓库的完整副本,将其克隆到本地,我们可以使用

git clone

命令。

git clone <remote-repository-URL>

此时远程仓库的文件将会被克隆到本地。

4. 推送到远程仓库

要将本地仓库的代码更改推送到远程仓库,我们可以使用git push命令。

git push <remote-name> <branch-name>

在这里,是远程仓库的名称,通常为origin;是本地分支的名称,需要将其推送到远程仓库。

5. 从远程仓库拉取代码

在Git中,我们可以使用

git pull

命令从远程仓库拉取代码,与

git push

命令类似。

git pull <remote-name> <branch-name>

使用上述命令,Git将从远程仓库的中拉取分支的最新代码。

6. 查看远程仓库信息

我们可以使用

git remote

命令查看当前本地仓库关联的所有远程仓库。

git remote

使用

git remote -v

命令可以查看每个远程仓库的详细信息。

git remote -v

7. 删除远程仓库

如果我们不再需要远程仓库,可以使用

git remote remove

命令将其删除。

git remote remove <remote-name>

在这里,是需要删除的远程仓库的名称。

8. SSH方式连接远程仓库

除了HTTP协议之外,我们还可以使用

SSH协议与远程仓库进行通信

。要使用

SSH

连接到远程Git服务器,我们需要向远程服务器生成

SSH密钥

ssh-keygen -t rsa -C "[email protected]"

在命令后面输入你的email,然后一路回车即可。

然后,我们需要将公钥添加到远程Git服务器的“

SSH keys

”中。在Github或GitLab网站的“settings”页面中,可以找到“

SSH and GPG keys

”选项。

添加公钥后,我们可以使用以下命令将本地仓库与远程仓库关联。

git remote add origin [email protected]:<username>/<repository>.git

在这里,和分别是远程Git仓库的用户名和仓库名称。我们在本地修改代码并推送时,可以使用如下命令推送代码更改到远程仓库。

git push origin <branch>

其中,是需要被推送到远程仓库的分支的名称。

十一、标签

1. 创建标签

我们可以使用

git tag

命令创建标签。

git tag <tagname>

这个命令会在当前分支的HEAD处创建一个轻量级的标签。如果要创建一个带有附注的标签,可以使用-a选项,并在后面添加标签信息。

git tag -a <tagname> -m "tag info"

2. 查看标签

我们可以使用

git tag

命令查看所有标签。

git tag

使用-l选项可以根据匹配模式查找标签。

git tag -l "v1.*"

3. 删除标签

我们可以使用

git tag

命令删除标签。

git tag -d <tagname>

4. 推送标签

我们需要使用

git push

命令将标签推送到远程仓库。

git push <remote-name> <tagname>

在这里,是远程仓库的名称,如origin。如果要将所有标签推送到远程仓库,可以使用–tags选项。

git push <remote-name> --tags

十二、其他常用命令

1. git diff命令:比较文件的差异

git diff file1 file2

2. git branch命令:列出本地分支

git branch

3. git checkout命令:切换分支或checkout文件

git checkout <branch-name>
git checkout <file>

4. git stash命令:暂存当前所有更改并回到上一个提交状态

git stash
git stash apply

5. git rebase`将当前分支的提交放置在另一个分支的末尾,并在必要时解决冲突。

假设我们有两个分支:master和feature,我们在feature分支上做了一些开发工作后,想要将这些更改合并到master分支中。我们可以使用

git rebase

命令将feature分支上的提交放置在master分支的末尾。以下是一些示例命令:

  1. 切换到feature分支:
git checkout feature
  1. 使用git rebase命令将feature分支上的提交重放到master分支上:
git rebase master
  1. 如果有冲突需要解决,则需要手动解决冲突,然后使用以下命令继续重放提交:
git add <文件名>
git rebase --continue
  1. 如果需要终止git rebase操作,则可以使用以下命令:
git rebase --abort
使用git rebase命令需要谨慎,确保我们理解重放提交对分支历史的影响,并且只在必要时进行操作。

6. git cherry-pick`将一个特定的提交应用于当前分支,无需将整个分支合并。

假设我们有两个分支:master和feature,我们在feature分支上做了一些特定的更改,我们只需要将一个特定的提交应用到master分支上,而不必将整个分支合并。我们可以使用

git cherry-pick

命令来实现。以下是一些示例命令:

  1. 切换到master分支:
git checkout master
  1. 使用git log命令查看feature分支上的提交历史,获取需要应用到master分支的提交的SHA-1值。
  2. 使用git cherry-pick命令将特定的提交应用到master分支上:
git cherry-pick <SHA-1值>
  1. 如果有冲突需要解决,则需要手动解决冲突,然后使用以下命令继续合并提交:
git add <文件名>
git cherry-pick --continue
  1. 如果需要终止git cherry-pick操作,则可以使用以下命令:
git cherry-pick --abort
使用git cherry-pick命令需要谨慎,确保我们理解应用特定提交对分支历史的影响,并且只在必要时进行操作。

7. git bisect`用于二分查找一个提交引入错误的位置,确定哪个提交引入了错误。

  1. 使用git bisect start来开始查找错误:
git bisect start
  1. 标记当前提交为错误/有问题的提交:
git bisect bad
  1. 标记一个之前未发现问题的提交为良好/未受损的提交:
git bisect good <SHA-1值>
  1. 自动跳转到下一个标记,再次测试并标记为错误/良好:
git bisect (good/bad)
  1. 查看当前进度:
git bisect log

8. git reflog`查看本地库的历史操作日志,包括撤销和删除的操作。

  1. 查看所有本地操作的历史记录:
git reflog
  1. 恢复一个已删除的分支或重置成之前的状态:
git reflog <分支名>
git reset --hard <SHA-1值>

9. git submodule`将另一个Git仓库作为当前目录中的子目录进行引用,轻松地维护多个相关的代码库。

  1. 添加一个子模块:
git submodule add <URL> <路径>
  1. 对库进行更新(包括其子模块):
git submodule update --init --recursive
  1. 克隆一个带有子模块的仓库:
git clone --recurse-submodules <URL>

10. git blame 用于查看每一行代码最近一次修改的提交信息。

查看文件中每一行代码的最近一次修改提交信息:

git blame <文件名>

11. git graft 用于将另一个Git仓库的部分提交合并到当前仓库,但是它不像子模块那样将整个仓库作为子目录引入。

查看文件中每一行代码的最近一次修改提交信息:

git blame <文件名>

12. git worktree 用于查看每一行代码最近一次修改的提交信息。

  1. 创建一个新的工作目录并检出不同的分支:
git worktree add -b <分支名> <文件夹名> <起点>
  1. 列出当前目录中存在的工作目录:
git worktree list

13. git annex 用于查看每一行代码最近一次修改的提交信息。

  1. 将文件加入 annex:
git annex add <文件名>
  1. 随时获取 annex 中的文件,即使它们不在本地:
git annex sync

14. git mergetool 用于解决合并冲突,可以调用图形化工具来协助解决冲突。

  1. 将图形化工具配置为解决冲突:
git config --global merge.tool <工具名>
  1. 启动图形化工具:
git mergetool

十三、总结

在本篇文章中,我们介绍了Git中标签和其他常用命令。标签是Git中很有用的功能,可以帮助我们更好地标记版本和重要的里程碑。其他常用命令提供了一种简单方便的方式来进行代码的管理,包括查看提交记录、比较文件差异、暂存当前所有更改等。掌握这些技巧对于使用Git进行版本控制和管理代码是非常有帮助的。

标签: git linux ubuntu

本文转载自: https://blog.csdn.net/weixin_46780832/article/details/129646124
版权归原作者 陈书予 所有, 如有侵权,请联系我们删除。

“Git命令大全:轻松掌握Git工具,提高代码管理效率”的评论:

还没有评论