当前位置:   article > 正文

Git命令大全:轻松掌握Git工具,提高代码管理效率_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
  • 2
  1. yum安装方式(CentOS/RHEL):在终端中使用以下命令安装Git。
sudo yum install git
  • 1
  1. 源码安装方式:从Git官方网站下载源代码,解压后运行以下命令进行编译和安装:
make prefix=/usr/local all
sudo make prefix=/usr/local install
  • 1
  • 2

3. MAC系统上的Git安装

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

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

三、配置

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

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

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

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

五、创建仓库

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/
  • 1

初始化完毕后,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
  • 1

其中,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"  # 提交修改
  • 1
  • 2

2. 查看状态

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

例如,使用git status命令查看当前工作区和暂存区的状态。

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

3. 撤销修改

如果我们在工作区修改了一个文件,但又不希望提交这个修改,可以使用git checkout命令,它可以将工作区中的修改撤销掉(但是注意,这会删除已经修改的文件内容,所以要谨慎操作)。

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

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

4. 删除文件

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

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

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

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
  • 2

七、暂存区

1. 添加到暂存区

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

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

2. 查看暂存区状态

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

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

3. 移除文件或目录

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

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

4. 恢复文件或目录

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

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

八、提交

1. 提交到本地仓库

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

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

git add <file>
  • 1

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

git commit -m "commit message"
  • 1

2. 撤销提交

在Git中,我们可以使用git reset命令来撤销提交。撤销后,代码变更会回退到上一次提交的状态。

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

git reset HEAD~
  • 1

也可以使用git reset <commit>命令来撤销指定的提交,其中是需要撤销的提交的哈希值。

git reset <commit>
  • 1

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

3. 查看提交日志

我们可以使用git log命令来查看提交日志。提交日志会显示每一次提交的哈希值、作者、提交时间和提交信息。

git log
  • 1

我们可以使用不同的选项来过滤提交日志的显示。例如,使用--author选项可以只显示指定作者提交的日志:

git log --author=<author>
  • 1

4. 修改提交信息

如果我们提交时写错了提交信息,可以使用git commit --amend命令来修改提交信息。

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

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

如果修改的是最后一次提交的提交信息,我们也可以使用git commit --amend命令的简写:

git commit --amend
  • 1

5. 修改上一次提交

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

git add <file>
git commit --amend
  • 1
  • 2

我们先使用git add命令将漏掉的代码变更添加到暂存区中,然后使用git commit --amend命令将其合并到上一次提交中。

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

九、分支操作

1. 创建分支

在Git中,我们可以使用git branch命令来创建新的分支。创建分支时,我们需要指定新分支的名称。

git branch <branch-name>
  • 1

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

2. 切换分支

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

git checkout <branch-name>
  • 1

3. 查看分支

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

git branch -a
  • 1

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

git branch -v
  • 1

4. 删除分支

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

git branch -d <branch-name>
  • 1

如果需要删除远程分支,我们需要使用git push命令,将空的分支推送到远程仓库。

git push origin :<branch-name>
  • 1

5. 合并分支

5.1 Fast-forward合并

如果从分支创建以来没有在当前分支上进行过提交,那么Git会采用fast-forward合并,可快速合并分支。

假设我们现在在分支branch-A中进行了提交,想要将branch-A合并到main分支。

git checkout main
git merge branch-A
  • 1
  • 2

此时,main分支已经包含了branch-A分支的代码变更。

5.2 非Fast-forward合并

如果当前分支和被合并的分支都进行了提交,Git会使用一种非fast-forward的合并方式。此时,Git会在合并日志中添加一个新的提交,来记录分支的合并记录。

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

git checkout main
git merge branch-A
  • 1
  • 2

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

git add <conflicting-file>
git commit
  • 1
  • 2

6. 解决冲突

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

git status
  • 1

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

<<<<<<< HEAD
<code>
=======
<code>
>>>>>>> branch-A
  • 1
  • 2
  • 3
  • 4
  • 5

编辑完成后,我们需要使用git add命令将编辑后的文件添加到暂存区,然后再提交合并结果。

git add <conflicting-file>
git commit
  • 1
  • 2

十、远程仓库

1. 创建远程仓库

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

2. 关联远程仓库

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

git remote add origin <remote-repository-URL>
  • 1

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

3. 克隆远程仓库

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

git clone <remote-repository-URL>
  • 1

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

4. 推送到远程仓库

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

git push <remote-name> <branch-name>
在这里,是远程仓库的名称,通常为origin;是本地分支的名称,需要将其推送到远程仓库。

5. 从远程仓库拉取代码

在Git中,我们可以使用git pull命令从远程仓库拉取代码,与git push命令类似。

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

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

6. 查看远程仓库信息

我们可以使用git remote命令查看当前本地仓库关联的所有远程仓库。

git remote
  • 1

使用git remote -v命令可以查看每个远程仓库的详细信息。

git remote -v
  • 1

7. 删除远程仓库

如果我们不再需要远程仓库,可以使用git remote remove命令将其删除。

git remote remove <remote-name>
  • 1

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

8. SSH方式连接远程仓库

除了HTTP协议之外,我们还可以使用SSH协议与远程仓库进行通信。要使用SSH连接到远程Git服务器,我们需要向远程服务器生成SSH密钥

ssh-keygen -t rsa -C "your_email@example.com"
  • 1

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

然后,我们需要将公钥添加到远程Git服务器的“SSH keys”中。在Github或GitLab网站的“settings”页面中,可以找到“SSH and GPG keys”选项。

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

git remote add origin git@github.com:<username>/<repository>.git
  • 1

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

git push origin <branch>
  • 1

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

十一、标签

1. 创建标签

我们可以使用git tag命令创建标签。

git tag <tagname>
  • 1

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

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

2. 查看标签

我们可以使用git tag命令查看所有标签。

git tag
  • 1

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

git tag -l "v1.*"
  • 1

3. 删除标签

我们可以使用git tag命令删除标签。

git tag -d <tagname>
  • 1

4. 推送标签

我们需要使用git push命令将标签推送到远程仓库。

git push <remote-name> <tagname>
  • 1

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

git push <remote-name> --tags
  • 1

十二、其他常用命令

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

git diff file1 file2
  • 1

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

git branch
  • 1

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

git checkout <branch-name>
git checkout <file>
  • 1
  • 2

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

git stash
git stash apply
  • 1
  • 2

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

假设我们有两个分支:master和feature,我们在feature分支上做了一些开发工作后,想要将这些更改合并到master分支中。我们可以使用git rebase命令将feature分支上的提交放置在master分支的末尾。以下是一些示例命令:

  1. 切换到feature分支:
git checkout feature
  • 1
  1. 使用git rebase命令将feature分支上的提交重放到master分支上:
git rebase master
  • 1
  1. 如果有冲突需要解决,则需要手动解决冲突,然后使用以下命令继续重放提交:
git add <文件名>
git rebase --continue
  • 1
  • 2
  1. 如果需要终止git rebase操作,则可以使用以下命令:
git rebase --abort
  • 1

使用git rebase命令需要谨慎,确保我们理解重放提交对分支历史的影响,并且只在必要时进行操作。

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

假设我们有两个分支:master和feature,我们在feature分支上做了一些特定的更改,我们只需要将一个特定的提交应用到master分支上,而不必将整个分支合并。我们可以使用git cherry-pick命令来实现。以下是一些示例命令:

  1. 切换到master分支:
git checkout master
  • 1
  1. 使用git log命令查看feature分支上的提交历史,获取需要应用到master分支的提交的SHA-1值。

  2. 使用git cherry-pick命令将特定的提交应用到master分支上:

git cherry-pick <SHA-1值>
  • 1
  1. 如果有冲突需要解决,则需要手动解决冲突,然后使用以下命令继续合并提交:
git add <文件名>
git cherry-pick --continue
  • 1
  • 2
  1. 如果需要终止git cherry-pick操作,则可以使用以下命令:
git cherry-pick --abort
  • 1

使用git cherry-pick命令需要谨慎,确保我们理解应用特定提交对分支历史的影响,并且只在必要时进行操作。

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

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

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

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

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

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

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

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

git blame <文件名>
  • 1

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

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

git blame <文件名>
  • 1

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

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

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

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

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

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

十三、总结

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/484186
推荐阅读
相关标签
  

闽ICP备14008679号