〇、前言
在软件开发的世界里,Git 是一款广泛使用的分布式版本控制系统。它的众多命令犹如工具包中的各式工具,帮助开发者高效管理代码版本、协作开发。本文将详细介绍 Git 中常用命令,让你能更好地驾驭 Git。
一、仓库初始化与克隆
- git init- 作用:在本地创建一个新的空Git仓库。这个命令会在当前目录下创建一个.git隐藏文件夹,用于存储仓库的元数据(如版本历史、分支信息等)。- 示例:如果要在一个新的项目目录下创建Git仓库,可以进入该目录后执行
git init
。 - git clone [repository - url]- 作用:从远程Git仓库(如GitHub、GitLab等)克隆一个副本到本地。它会自动下载仓库中的所有文件、版本历史等信息。- 示例:要克隆一个名为
my - project
的GitHub仓库,可以执行git clone [email protected]:zhongxianyao/test-go.git
。
二、文件状态与暂存
- git status- 作用:查看工作区(当前目录下的文件)的状态。它会显示哪些文件被修改了、哪些文件是新添加的、哪些文件已经被暂存等信息。- 示例:执行
git status
,如果看到modified: file.txt
,表示file.txt
文件被修改了。 - git add [file - name(s)]- 作用:将工作区中的文件添加到暂存区。暂存区是一个过渡区域,用于准备要提交的文件。可以逐个添加文件,也可以使用通配符添加多个文件。- 示例:如果要将
file.txt
添加到暂存区,可以执行git add file.txt
;如果要添加当前目录下所有修改和新添加的文件,可以执行git add .
;添加所有的文件可以用git add --all
。 - git stash list- 作用- 查看已经保存的
stash
列表。每次执行git stash
都会创建一个新的stash
记录,git stash list
可以显示这些记录的详细信息,包括stash@{0}
、stash@{1}
等,其中stash@{0}
表示最近一次保存的stash
。- 示例- 执行git stash list
可能会看到类似这样的结果:stash@{0}: WIP on feature - branch: 1234567 some commit messagestash@{1}: WIP on another - branch: 7654321 another commit message
- git stash apply [stash@{n}]- 作用- 将指定的
stash
记录应用到当前工作区。如果不指定stash@{n}
,则默认应用最近一次保存的stash
(stash@{0}
)。应用stash
后,stash
记录仍然存在于stash
列表中。- 示例- 如果你之前保存了一个stash
,现在想要恢复到工作区,可以执行git stash apply
。如果要恢复特定的stash
,例如stash@{1}
,则执行git stash apply stash@{1}
。 - git stash pop [stash@{n}]- 作用- 与
git stash apply
类似,将指定的stash
记录应用到当前工作区,但与apply
不同的是,pop
操作在应用stash
后会从stash
列表中删除该stash
记录。如果不指定stash@{n}
,则默认弹出最近一次保存的stash
(stash@{0}
)。- 示例- 要恢复最近一次保存的stash
并从stash
列表中删除它,可以执行git stash pop
。如果是stash@{2}
,则执行git stash pop stash@{2}
。 - git stash drop [stash@{n}]- 作用- 直接删除指定的
stash
记录。如果不指定stash@{n}
,则默认删除最近一次保存的stash
(stash@{0}
)。- 示例- 如果你确定不再需要某个stash
记录,例如stash@{3}
,可以执行git stash drop stash@{3}
来删除它。 - git stash clear- 作用- 清空整个
stash
列表,删除所有保存的stash
记录。- 示例- 执行git stash clear
将删除所有之前保存的stash
记录,使用时需要谨慎,因为一旦执行无法恢复。 - git stash save “message”- 作用- 在保存
stash
时添加一条自定义的消息,以便在查看stash
列表时能更清楚地知道每个stash
保存的内容。- 示例- 执行git stash save "Mid - development of feature X"
,这样在git stash list
中看到这个stash
时就能明确是在功能X开发中途保存的。
三、提交操作
- git commit - m “commit - message”- 作用:将暂存区的文件提交到本地仓库,并附上一条提交信息(commit - message)。提交信息应该简洁明了地描述本次提交的内容。- 示例:如果对
file.txt
进行了修改并添加到暂存区后,可以执行git commit - m "Update file.txt"
。 - git commit - a - m “commit - message”- 作用:这是一个组合命令,相当于先执行
git add - - all
(将所有修改、删除和新添加的文件添加到暂存区),然后再执行git commit - m "commit - message"
。- 示例:如果对多个文件进行了修改并且不想逐个添加到暂存区,可以执行git commit - a - m "Update multiple files"
。
四、分支管理
- git branch- 作用:查看本地分支列表。它会显示当前仓库中所有的本地分支名称,并且当前所在分支会以特殊标记(如
*
)显示。- 示例:执行git branch
,如果看到master
和feature - branch
,表示仓库中有这两个本地分支,并且如果*
在master
旁边,说明当前处于master
分支。 - git branch [branch - name]- 作用:创建一个新的本地分支。新分支会从当前分支的相同提交点创建。- 示例:如果要创建一个名为
new - feature
的分支,可以执行git branch new - feature
。 - git checkout [branch - name]- 作用:切换到指定的分支。这会使工作区、暂存区和本地仓库的状态切换到目标分支的状态。- 示例:要从
master
分支切换到new - feature
分支,可以执行git checkout new - feature
。 - git merge [branch - name]- 作用:将指定分支合并到当前分支。例如,将
feature - branch
合并到master
分支。- 示例:在master
分支下执行git merge feature - branch
,会将feature - branch
中的所有提交合并到master
分支。
五、远程仓库操作
- git remote - v- 作用:查看当前仓库关联的远程仓库信息,包括远程仓库的名称(通常是
origin
)和对应的URL地址。同时还会显示推送(push)和拉取(pull)的URL是否相同。- 示例:执行git remote -v
,会看到类似origin [email protected]:zhongxianyao/test-go (fetch)
和origin [email protected]:zhongxianyao/test-go (push)
。 - git push [remote - name] [branch - name]- 作用:将本地分支推送到远程仓库。通常
remote - name
是origin
,表示默认的远程仓库。- 示例:如果要将本地的master
分支推送到origin
远程仓库,可以执行git push origin master
。 - git pull [remote - name] [branch - name]- 作用:从远程仓库拉取指定分支的最新代码到本地。它实际上是先执行
git fetch
(获取远程仓库的更新信息),然后执行git merge
(将获取到的更新合并到本地分支)。- 示例:要从origin
远程仓库的master
分支拉取最新代码,可以执行git pull origin master
。
六、标签操作
- git tag- 作用:列出本地仓库中的所有标签。标签可以用于标记特定的版本,如软件发布版本等。- 示例:执行
git tag
,如果仓库中有v1.0
、v1.1
等标签,它们会被列出。 - git tag [tag - name]- 作用:在当前提交上创建一个轻量级标签。轻量级标签只是一个指向特定提交的指针,没有包含额外的元数据。- 示例:如果要为当前版本创建一个名为
v2.0
的轻量级标签,可以执行git tag v2.0
。 - git tag - a [tag - name] - m “tag - message”- 作用:创建一个带注释的标签。带注释的标签包含标签名、指向的提交、标签创建者、日期以及标签消息等信息。- 示例:执行
git tag - a v2.1 - m "Release version 2.1"
可以创建一个名为v2.1
且带有注释的标签。 - git push [remote - name] [tag - name]- 作用:将本地标签推送到远程仓库。- 示例:如果要将
v2.0
标签推送到origin
远程仓库,可以执行git push origin v2.0
。
七、日志查看
- git log- 作用:查看提交历史记录。默认情况下,它会按时间顺序列出每个提交的哈希值、作者、日期和提交消息等信息。- 示例:执行
git log
会显示类似如下信息:
commit 5f0ad77fe04094bdc2b5883bc32f8d130bdb7696 (HEAD -> master,
origin/master, origin/HEAD)
Author: jasperzhong <[email protected]>
Date: Fri Aug 30 18:47:49 2024 +0800
feat: pprof
- git log --oneline- 作用:以简洁的一行格式显示提交历史。每个提交只显示哈希值的前几位和提交消息,这样可以更快速地浏览提交历史。- 示例:执行
git log --oneline
可能会显示:
5f0ad77 (HEAD -> master, origin/master, origin/HEAD) feat: pprof
2b3843d feat: loadsh_style (lo, go-fun)
04104bb chore(): cmd cobra
八、撤销操作
- git reset [commit - hash]- 作用:将当前分支的头指针移动到指定的提交(commit - hash)。这可以用于撤销最近的一些提交。如果不指定
--hard
、--soft
或--mixed
(默认是--mixed
)选项,它会将暂存区和工作区的状态调整到指定提交后的状态。- 示例:如果要撤销最近的一次提交并保留工作区的修改,可以执行git reset HEAD^
(HEAD^
表示上一个提交)。 - git revert [commit - hash]- 作用:创建一个新的提交来撤销指定提交的更改。与
git reset
不同,git revert
不会删除历史记录,而是通过创建一个反向的提交来抵消之前的提交效果。- 示例:如果要撤销一个已经推送到远程仓库的提交,可以执行git revert a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0
,这会创建一个新的提交来还原之前提交所做的更改。
版权归原作者 编程点滴 所有, 如有侵权,请联系我们删除。