0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

git命令的基本使用

马哥Linux运维 来源:稀土掘金技术社区 2023-12-11 13:53 次阅读

1、初次使用git必用命令

git config 第一次使用git或者刚安装的git时,使用此命令设置身份Name 和 Eamail 地址。并且每次提交时会使用此信息


git config --global user.name "用户名"
git config --global user.email 邮箱

git version 检查当前使用的git版本号


git version
git -v

2、操作远程仓库命令

git init 初始化仓库创建新项目使用该命令进行项目初始化,创建一个空白的存储库,用于存储源代码

git init

git clone 克隆存储库命令,将远程仓库代码克隆到本地

git clone 和git init区别

将尚未进行版本控制的本地目录转换为 Git 仓库;

从其它服务器克隆一个已存在的 Git 仓库。

git clone ” 远程仓库url “

git add 命令会把所有的代码文件或修改后的文件添加到存储库中。此命令提供了添加文件和文件夹的不同选项。


git add *      //添加所有文件到暂存区
git add .      //添加所有文件到暂存区
git add -u .   //-u 表示将已跟踪文件中的修改和删除的文件添加到暂存区,不包括新增加的文件
git add -A .   //-A 表示将所有的已跟踪的文件的修改与删除和新增的未跟踪的文件都添加到暂存区
git add *.html
git add *.txt  //添加某个文件类型到暂存区,比如所有的 .html 文件
git add index/ //添加整个文件夹到暂存区,比如index文件夹
git add index/index.html //添加某个文件或者某个文件夹中的某个文件到暂存区 ,比如 index 下的 index.html 文件


git commit将工作区内容或暂存区内容提交到版本库


# 将暂存区内容提交到版本库, 进入 vi 命令界面输入提交信息
git commit


# 将某些已被跟踪的文件提交到版本库(包含工作区和版本库)
git commit [file1] [file2] [...]


# 将暂存区内容提交到版本库, 无需进入 vi 命令界面输入提交信息
git commit -m [message]


# 跳过 git add, 将所有已被跟踪的文件更改提交到版本库
git commit -am [message]


# 使用一次新的commit, 替代上一次提交
# 如果代码没有任何新变化, 则用来改写上一次commit的提交信息
git commit --amend -m [message]


git status 显示暂存区文件和当前 HEAD 提交之间有差异的路径,工作区和暂存区文件之间有差异的路径,以及工作区中没有被 Git 跟踪的路径 (也没有被 gitignore 忽略) 。

git status [<选项> …] [--] [<路径名> …]   //[ ] 表示可选,...表示可以有多项。

git branch命令主要用来处理跟分支有关系的功能,比如创建分支、删除分支、查看本地分支、查看远程分支等


git branch          //查看本地分支
git branch -v       //查看本地分支+上次提交的信息
git branch -vv      //查看本地分支+上次提交的信息+本地和远程分支的关系
git branch -vv -a   //查看本地分支+上次提交的信息+本地和远程分支的关系+远程分支 (如果不想显示提交的信息,也可以去掉-vv参数)
git branch -r       //只查看远程分支
git branch -d (branchName) //删除本地分支
git push <主机名> -d <分支名>git push <主机名> --delete <分支名>git push <主机名> :<分支名>         //删除远程分支
git checkout (branchName)          //切换本地分支
git branch (branchName) //创建本地分支git checkout -b (branchName) //创建本地分支并切换
git push <远程主机名> <本地分支名>:<远程分支名>        //创建远程分支

       


git checkout 本意是检出的意思,也就是将某次commit的状态检出到工作区;所以它的过程是先将HEAD指向某个分支的最近一次commit,然后从commit恢复index,最后从index恢复工作区。


git checkout (branchName)       
git checkout -b (branchName)  
 

3、git进阶

git remote 如果需要与远程仓库链接,必须使用此命令。此命令会将本地存储库连接到远程。


git remote 
git remote -v | --verbose 
git remote add url 
git remote rm name 
git remote rename old_name new_name 

git push令用于从将本地的分支版本上传到远程并合并


git push <远程主机名> <本地分支名>:<远程分支名>     //将本地的分支版本上传到远程并合并
git push <远程主机名> <本地分支名>                 //如果本地分支名与远程分支名相同,则可以省略冒号


以下命令将本地的 master 分支推送到 origin 主机的 master 分支
$ git push origin master === git push origin master:master
如果本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数
$ git push --force origin master
删除主机的分支可以使用 --delete 参数,以下命令表示删除 origin 主机的 master 分支
$ git push origin --delete master

git push --set-upstream先把本地的当前分支推送到远程仓库origin的main分支,然后把本地的当前分支关联到远程仓库origin的main分支

git push --set-upstream     

git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中


git fetch <远程主机名> //这个命令将某个远程主机的更新全部取回本地
如果只想取回特定分支的更新,可以指定分支名
git fetch <远程主机名> <分支名> //注意之间有空格

git pull取回远程主机某个分支的更新,再与本地的指定分支合并


git pull [options] [ […]]
$ git pull <远程主机名> <远程分支名>:<本地分支名>
要取回origin主机的next分支,与本地的master分支合并,需要写成下面这样
$ git pull origin next:master
如果远程分支(next)要与当前分支合并,则冒号后面的部分可以省略。上面命令可以简写为
$ git pull origin next
上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再执行git merge。
$ git fetch origin
$ git merge origin/next
在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动”追踪”origin/master分支。Git也允许手动建立追踪关系
$ git branch --set-upstream master origin/next
上面命令指定master分支追踪origin/next分支。如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名
$ git pull origin
上面命令表示,本地的当前分支自动与对应的origin主机”追踪分支”(remote-tracking branch)进行合并。如果当前分支只有一个追踪分支,连远程主机名都可以省略
$ git pull
上面命令表示,当前分支自动与唯一一个追踪分支进行合并。如果合并需要采用rebase模式,可以使用–rebase选项。
$ git pull --rebase <远程主机名> <远程分支名>:<本地分支名>




git fetch和git pull的区别


git fetch:相当于是从远程获取最新版本到本地,不会自动合并。


git pull:相当于是从远程获取最新版本并merge到本地

git stash会把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录


git stash save "test-cmd-stash"     //存储一个test-cmd-stash到本地存储列表git stash list           //查看缓存列表
git stash pop            //恢复之前缓存的工作目录,这个指令将缓存堆栈中的第一个stash删除,并将对应修改应用到当前的工作目录下
git stash apply          //将缓存堆栈中的stash多次应用到工作目录中,但并不删除stash拷贝git stash list           //查看现有stash
git stash drop           //移除stash
git stash show           //查看指定stash的diff

git log 查看所有之前的提交,最近的提交出现在最前面。


git log [] [..] [[--] ...]  

常用参数

-p:

按补丁格式显示每个更新的差异,比下一条--stat命令信息更全。

--stat:

显示每次提交修改文件的统计信息,每个提交都列出了修改过的文件,以及其中添加和移除的行数,并在最后列出所有增减行数小计。

--shortstat:

只显示--stat中最后的行数添加、修改、删除的统计。

--name-only:

仅在提交信息后,显示已修改的文件清单。

--name-status:

显示新增、修改、删除的文件清单。

--abbrev-commit:

仅显示SHA-1校验和的前几个字符,而非所有的40个字符。

--relative-date:

使用较短的相对时间,而不是完整格式显示日期(比如“2 weeks ago”)。

--graph:

在日志旁以ASCII图形显示分支与合并历史。

--online:

列表的形式查看历史版本记录,--pretty=oneline --abbrev-commit合用的简写。

--pretty:

使用其他格式显示历史提交信息。

可用的选项包括oneline、short、full、fuller和format(用来定义自己的格式)

git shortlog 命令会显示来自 git log 命令的摘要。如果只对简短的摘要感兴趣,此命令就非常有用了。


git shortlog [] [] [[--] …]
git log --pretty=short | git shortlog []

4、git高级命令

git rebase 可以提取我们在A分支上的改动,然后应用在B分支的代码上

git rebase -i  [startpoint]  [endpoint]          //-i的意思是--interactive,即弹出交互式的界面让用户编辑完成合并操作

gitrebase和git rebase

git merge:当需要保留详细的合并信息的时候建议使用,特别是需要将分支合并进入master分支时

git rebase:当发现自己修改某个功能时,频繁进行了git commit提交时,发现其实过多的提交信息没有必要时使用,分支多,内容多时也可以考虑使用

git bisect 命令可以帮助查找糟糕的提交。

git bisect  

git cherry-pick"挑拣"提交,它会获取某一个分支的单笔/多笔提交,并作为一个新的提交引入到你当前分支上


git cherry-pick         //将指定的提交(commit)应用于其他分支
转移多个提交
git cherry-pick  




转移到另一个代码库
git remote add target git://gitUrl
上面命令添加了一个远程仓库target。然后,将远程代码抓取到本地。
git fetch target
上面命令将远程代码仓库抓取到本地。接着,检查一下要从远程仓库转移的提交,获取它的哈希值
git log target/master
最后,使用git cherry-pick命令转移提交
git cherry-pick 

git blame追溯一个指定文件的历史修改记录


git blame [filename] 
git blame的具体显示格式是
commit ID  (代码提交作者  提交时间  代码位于文件中的行数)  实际代码

git tag主要用于发布版本的管理,一个版本发布之后,我们可以为git打上 v.1.0.1 v.1.0.2 ...这样的标签


git tag  //创建本地tag
git push origin  //推送到远程仓库
若存在很多未推送的本地标签,你想一次全部推送的话:
git push origin --tags
以上是基于本地当前分支的最后的一个commit 创建的 tag ,但是如果不想以最后一个,只想以某一个特定的提交为tag ,也是可以的,只要你知道commit 的id。
git log --pretty=oneline //查看当前分支的提交历史 里面包含 commit id
git tag -a  
git show 
查看本地所有 tag:
git tag 或者 git tag -l
查看远程所有 tag:
git ls-remote --tags origin
本地 tag 的删除:
git tag -d 
远程 tag 的删除:
git push origin :refs/tags/

git verify-commit使用 GPG、SSH 或 S/MIME,您可以在本地对标签和提交进行签名

git verify-commit 

git verify-tag检查标签的 GPG 签名

git verify-tag [--format=] 

git diff比较文件的差异


情景一:查看工作区和暂存区之间文件的差异
git diff 命令,默认查看的就是 工作区 和 暂存区之间文件的差异


1.git diff : 查看工作区和暂存区之间所有的文件差异
2.git diff 
3.git diff 
【注意】:查看具体文件的时候 


情景二:查看工作区和版本库之间文件的差异git diff HEAD : 查看工作区与最新版本库之间的所有的文件差异


git diff 具体某个版本 : 查看工作区与具体某个提交版本之间的所有的文件差异
git diff HEAD 
git diff HEAD 
git diff 具体某个版本 
git diff 具体某个版本 


情景三:查看暂存区和版本库之间文件的差异git diff 
git diff 
git diff 
git diff 




情景四:查看不同版本库之间文件的差异git diff 版本号1 版本号2 :查看两个版本之间的差异
git diff 版本号1 版本号2 
git diff 版本号1 版本号2 
git diff 版本号1 版本号2 src : 查看两个版本之间的文件夹 src 的差异

git citool 基于 Tcl / Tk 的图形界面用于查看修改后的文件,将它们放入索引,输入提交消息并将新提交记录到当前分支。该接口是交互程序较少的替代git commit方案

git citool

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 命令
    +关注

    关注

    5

    文章

    683

    浏览量

    22011
  • 源代码
    +关注

    关注

    96

    文章

    2945

    浏览量

    66730
  • Git
    Git
    +关注

    关注

    0

    文章

    198

    浏览量

    15755

原文标题:git的必会的基本操作

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Git命令之本地分支与远程分支关联和解除

    在实际的工作生活中,往往需要将本地的分支和远程分支关联,这样我们就可以使用git pull命令来更新拉取最新的代码,并使用git push命令将自己本地的修改推送到远程仓库。但是如果此
    的头像 发表于 12-15 09:27 3230次阅读
    <b class='flag-5'>Git</b><b class='flag-5'>命令</b>之本地分支与远程分支关联和解除

    通过git命令获取ESP8266_RTOS_SDK失败如何解决?

    本人使用的硬件平台为esp8266,开发环境为ubuntu22.04。在通过git命令获取ESP8266_RTOS_SDK失败,通过上网搜索尝试了很多方法无效。具体情况如下
    发表于 06-07 07:26

    SVN,HG,GIT命令对照

    SVN,HG,GIT是三种常见的版本控制系统,本文简单列出一些相似的操作命令。当然,三种系统各有特点,严格的对应关系是没有的。1,第一次下载,包括源码和版本库: svn checkout http
    发表于 01-13 16:53 0次下载

    Git命令解析-merge、rebase

    时,会保存一个提交对象(commit object),在多次提交后,commit对象形成连续的快照链,分支指针自动指向最新一次提交。Git 的默认分支名字是 master。如下图:branch命令可以
    的头像 发表于 07-29 18:21 1074次阅读
    <b class='flag-5'>Git</b><b class='flag-5'>命令</b>解析-merge、rebase

    Git命令解析-patch、apply、diff

    无论是merge还是rebase,都是在同一个工作目录中协调差异,处理变更历史。而git的另一些命令,允许开发者单独保存,或者通过文件或邮件的方式与别人分享这些差异。
    的头像 发表于 06-15 09:28 2843次阅读

    这些常用git命令的工作过程,包你过目不忘

    我觉得创建一些最常用且最有用的 Git 命令的可视化示例会是一个完美的用例!下面我将介绍的很多命令都有可选参数——你可以使用这些参数来改变对应命令的行为。而我的示例只会涵盖
    的头像 发表于 06-05 16:18 1970次阅读
    这些常用<b class='flag-5'>git</b><b class='flag-5'>命令</b>的工作过程,包你过目不忘

    Git命令的讲解和Git数据通信原理的资料概述

    Git是一款开源的分布式版本控制系统(VCS),常用的VCS工具还包括SVN、Mercurial等,他们的使命是对资源变化的进行版本管理控制,对资源容灾备份,支持多域协同开发。这里的资源不仅仅是系统
    发表于 06-11 08:00 7次下载
    <b class='flag-5'>Git</b><b class='flag-5'>命令</b>的讲解和<b class='flag-5'>Git</b>数据通信原理的资料概述

    常用git命令的工作过程,包你过目不忘

    我觉得创建一些最常用且最有用的 Git 命令的可视化示例会是一个完美的用例!下面我将介绍的很多命令都有可选参数——你可以使用这些参数来改变对应命令的行为。而我的示例只会涵盖
    的头像 发表于 06-08 16:29 1521次阅读
    常用<b class='flag-5'>git</b><b class='flag-5'>命令</b>的工作过程,包你过目不忘

    第一本Git命令教程(六) - 日志

    。有三种 Git 命令可以帮我们查看记录,痞子衡为大家一一讲解: 1. 查看本地历史提交 git log git log 是最直接的查看历史提交的
    的头像 发表于 12-05 17:22 787次阅读

    Git 命令+原理 程序员必备的基础

    掌握Git命令是每位程序员必备的基础,之前一直是用smartGit工具,直到看到大佬们都是在用Git命令操作的,回想一下,发现有些Git
    的头像 发表于 11-14 10:01 1746次阅读
    <b class='flag-5'>Git</b> <b class='flag-5'>命令</b>+原理 程序员必备的基础

    Git命令合集(上)

    Git是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:Linux、kernel),管理私人的文档和源代码也有很多优势(如:wsi-lgame-pro)
    的头像 发表于 02-15 10:43 625次阅读
    <b class='flag-5'>Git</b><b class='flag-5'>命令</b>合集(上)

    Git命令合集(下)

    Git是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:Linux、kernel),管理私人的文档和源代码也有很多优势(如:wsi-lgame-pro)
    的头像 发表于 02-15 10:44 490次阅读
    <b class='flag-5'>Git</b><b class='flag-5'>命令</b>合集(下)

    git命令和参数

        不知道大家平时都是怎么去学习git的,要记忆那么多的命令和参数,我个人是不推荐死记硬背的,以往经验证明卷的越疯狂忘的也越快! 其实简单的理解工作原理和熟练运用少部分常用命令,日常开发问题不大
    的头像 发表于 05-31 14:22 551次阅读

    Git命令的综合手册怎么找

    若你使用 Git 时需要获取帮助,有三种等价的方法可以找到 Git 命令的综合手册(manpage): $ git help $ git -
    的头像 发表于 07-22 11:02 637次阅读

    Git命令解决常见场景记录

    不需要这些文件了,想要批量处理掉,所以记录一下用命令行一次性丢弃未跟踪文件的方法,同时也记录一下撤销push请求的git记录。
    的头像 发表于 12-20 09:44 487次阅读
    用<b class='flag-5'>Git</b><b class='flag-5'>命令</b>解决常见场景记录