20 个让你成为版本控制专家的 Git 命令。
对于希望在团队中处理代码时有效协作并跟踪更改的程序员来说,版本控制至关重要。Git 是一个版本控制系统,允许您跟踪修订、识别文件版本并在必要时恢复旧版本。
具有一定编程经验的用户可以相当轻松地开始使用 Git,但要掌握所有高级功能并不容易。在本文中,我将向您展示一些最有用的命令,它们将使您成为 Git 专家。
1.git config
git config是你必须知道的基本 Git 命令之一。该命令有助于设置电子邮件、用户名、文件格式、首选文件算法和许多其他属性的配置值。命令示例如下:
# configure the user which will be used by Git
# this should be not an acronym but your full name
$ git config --global user.name "Firstname Lastname"
# configure the email address
$ git config --global user.email "your.email@example.org"
$ git config -l //查看当前git默认行为
2.git init
git init是最常用的 Git 命令之一,非常适合初始化 Git 存储库。该命令有助于在现有或新项目中创建初始 .git 目录。.git 文件夹保持隐藏状态,如果是 Windows,您必须禁用该功能才能看到它。对于 Linux,您可以使用“ls –a”命令查看 .git目录。建议任何人都不要篡改 .git 文件夹的内容。
$ git init <the name of your repository>
3.git clone
此命令用于从现有 URL 获取存储库
$ git clone <the url of the repository>
4. git add
“ git add” 命令有助于将当前在工作目录中的文件修改添加到用户的索引中。该命令有助于添加准备提交到远程存储库的未跟踪文件。使用 “git add” 命令的示例如下。
git add myfile //暂存指定文件
git add -A //保存所有的修改
git add . //保存新的添加和修改,但是不包括删除
git add -u //保存修改和删除,但是不包括新建文件
注意:在git2版本中git add .和git add-A已经效果一致了
此命令会将 myfile 添加到暂存区。
5.git branch
“git branch”是 Git 初学者命令中值得一提的。“分支”命令可帮助您创建、删除和列出分支。
这个命令有一些重要的选项:
. -v -a
提供有关所有分支的更多信息。默认情况下,列出您的分支机构只会显示您当地分支机构的名称。
- 添加“-a”标志将确保远程分支也包含在列表中。
添加“-v”标志将使命令更加“冗长”并且 - 包括 SHA-1 哈希以及分支上最新提交的提交主题。
— no-merged
返回所有尚未合并到当前 HEAD 分支的分支。
-d
删除指定的分支。
用法
#list all branches
$ git branch -a -v
#Return all branches that has not merged
$ git branch --no-merged
#Return all branches thaat has merged
$ git branch --merged
6.git commit
git commit 命令捕获项目当前暂存更改的快照。
$ git commit -m “first commit”
7. git push
' git push '命令可以帮助将所有修改过的本地对象推送到远程存储库,然后增长其分支。使用该命令的示例如下
$ git push origin master
8. git diff
' git diff ' 命令可用于创建补丁文件或统计索引、工作目录或 git 存储库中路径或文件之间的差异。使用该命令的示例如下
$ git diff
git diff branch1 branch2 --stat //--stat参数,显示两分支简单diff信息
git diff branch1 branch2 //显示两分支详细的diff信息
git diff branch1 branch2 path //显示两分支指定路径下文件的详细diff信息
git diff branch1 branch2 file_name(带路径) //显示两分支指定文件的详细diff信息
git diff commitid1 commitid2 //显示不同提交的diff信息
9.git status
' git status '命令可以帮助显示索引中文件和工作目录中文件的状态。该命令将轻松列出未跟踪、修改和暂存的文件。使用'git status'命令的例子如下
$ git status
10. git show
此命令显示指定提交的元数据和内容更改。
$ git show
11.git tag
此命令将有助于使用简单、持久且人类可读的句柄标记特定提交。该命令的示例如下
git tag //展示所有tag
git tag –a v2.0 –m ‘this is version 2.0 tag’
git tag 标签名 : 直接给当前的提交版本创建一个【轻量标签】
git tag 标签名 提交版本号 :给指定的提交版本创建一个 【轻量标签】
git tag -d 标签名称 : 删除指定名称的标签
git push origin 标签名称 : 将指定的标签上传到远程仓库
git push origin --tags : 将所有不在远程仓库中的标签上传到远程仓库
12.git merge
“ git merge ”是一项强大的功能,可让您将两个分支的工作合并为一个。当开发人员处理相同的代码并希望在将它们推送到分支之前集成它们的更改时,这很有用。
$ git merge branch_name
13. git log
“ git log ”命令列出了项目中曾经发生的每一次提交,以查看随着时间的推移发生了什么变化,以及有关提交如何完成的其他一些信息。
$ git log
14. git git reset
使用 git reset 来“取消跟踪”一个文件,不再有任何指向 Git 存储库的链接。
$ git reset [commit id]
15.git rm
此命令用于从当前工作目录中删除特定文件并分阶段删除。要从当前工作目录中删除特定文件并分阶段删除,请使用以下命令:
$ git rm <filename>
16. git remote
此命令用于将本地 git 存储库连接到远程服务器。
git remote add [variable name] [Remote URL] //是添加远程仓库地址
git remote set-url origin newURL //修改远程仓库地址
git remote -v //显示所有远程仓库地址
git remote rm name //删除远程仓库
git remote rename old_name new_name //修改仓库名
17.git fsck
此命令用于检查 Git 文件系统的完整性,它还有助于识别损坏的对象。
$ git fsck
18. git pull
此命令获取远程服务器上的更改并将其合并到您的工作目录。
git pull repository_link //拉取最新代码
git pull --rebase
//这个命令会做三件事
a.把你 commit到本地仓库的内容,取出来放到暂存区(stash)(这时你的工作区是干净的)
b.然后从远端拉取代码到本地,由于工作区是干净的,所以不会有冲突
c.从暂存区把你之前提交的内容取出来,跟拉下来的代码合并,有冲突则解决冲突
所以 rebase 在拉代码前要确保你本地工作区是干净的,如果你本地修改的内容没完全 commit 或者 stash,就会 rebase 失败
19. git checkout
“ git checkout ”命令允许我们切换到现有分支或创建并切换到新分支。为此,您要切换到的分支应该存在于您的本地系统中,并且在您进行切换之前应该提交或隐藏当前分支中的更改。您还可以使用此命令签出文件。
# Switch to an existing branch:
$ git checkout <branch-name>
#Create and switch to a new branch
$ git checkout -b <branch-name>
20. git stash
git stash这个命令可以将当前的工作状态保存到git栈,在需要的时候再恢复。
使用场景:当在一个分支的开发工作未完成,却又要切换到另外一个分支进行开发的时候,可以先将自己写好的代码,储存到 git 栈,进行另外一个分支的代码开发。这时候 git stash 命令就派上用场了!
git stash //保存当前的工作区与暂存区的状态,把当前的修改的保存到git 栈,等以后需要的时候再恢复
git stash save '注释' //等同于git stash,区别是可以加⼀些注释, 执⾏存储时,添加注释,⽅便查找
git stash pop //默认恢复git栈中最新的一个stash@{num},建议在git栈中只有一条的时候使用,以免混乱
git stash list //查看当前stash的所有内容
git stash drop // 移除全部的stash
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1天,点击查看活动详情