常用git命令

Git树是一个版本控制系统中的数据结构,它记录了项目的历史变化。你可以把它想象成一棵树,树的每个节点代表着一个提交,也就是项目的一个版本。每个提交都包含着对项目文件的一系列修改,以及指向其父节点(上一个版本)的链接。这些提交节点以及它们之间的链接形成了一个有向无环图(DAG),我们通常把它称为“提交树”或“提交图”。

1.第一次初始化

  • git init: 初始化一个新的Git仓库。
  • git add .: 将当前目录下的所有文件添加到暂存区。
  • git commit -m ‘first commit’: 提交暂存区中的文件到版本库,并附上提交消息为“first commit”。
  • git remote add origin git@github.com:帐号名/仓库名.git: 添加远程仓库,命名为origin,地址为git@github.com:帐号名/仓库名.git。
  • git pull origin master: 从远程仓库的master分支拉取最新的更改到本地仓库。
  • git push origin master: 将本地提交推送到远程仓库的master分支。选项 -f 用于强制推送。
  • git clone: 克隆一个远程仓库到本地。

2.工作基本操作

  • git checkout master: 切换到主分支。
  • git fetch origin: 从远程仓库获取最新变更。
  • git checkout -b dev origin/master: 基于主分支创建名为dev的新分支,并将其设置为跟踪远程的master分支。
  • git add .: 将当前目录下的所有修改添加到暂存区。
  • git commit -m ‘xxx’: 将暂存区的文件提交到本地仓库,并附上提交消息为'xxx'。
  • git fetch origin: 从远程仓库获取最新变更。

3.初始化仓库

git init

4.查看仓库当前状态

git status

5.文件相关操作

1) 将文件添加到仓库:
  • git add 文件名: 将工作区的某个文件添加到暂存区。
  • git add .: 将当前工作区的所有文件都加入暂存区。
  • git add -u: 添加所有被跟踪的文件中被修改或删除的文件信息到暂存区,不处理未跟踪的文件。
  • git add -A: 添加所有被跟踪的文件中被修改或删除的文件信息到暂存区,包括未跟踪的文件。
  • git add -i: 进入交互界面模式,按需添加文件到缓存区。
2)将暂存区文件提交到本地仓库:
  • git commit -m “提交说明” 将暂存区内容提交到本地仓库
  • git commit -a -m “提交说明” 跳过缓存区操作,直接把工作区内容提交到本地仓库
3)比较文件异同
  • git diff: 比较工作区与暂存区的差异。
  • git diff 分支名: 比较工作区与指定分支的差异,远程分支使用remotes/origin/分支名表示。
  • git diff HEAD: 比较工作区与最新提交的内容的差异。
  • git diff 提交id 文件路径: 比较工作区某文件当前版本与历史版本的差异,提交id是目标版本的标识。
  • git diff –stage: 比较工作区文件与上次提交的差异(1.6版本前用–cached)。
  • git diff 版本TAG: 比较从某个版本后的所有改动内容。
  • git diff 分支A 分支B: 比较分支A和分支B之间的差异,也支持比较两个TAG。
  • git diff 分支A…分支B: 比较两分支在分叉后各自的改动。

另外:如果只想统计哪些文件被改动,多少行被改动,可以添加 –stat 参数

6.查看历史记录

  • git log: 查看所有提交记录,包括SHA-A校验和、作者名称、邮箱、提交时间和提交说明。
  • git log -p -次数: 查看最近指定次数的提交记录,并显示每次提交的详细内容变更。
  • git log --stat: 简略显示每次提交的内容更改。
  • git log --name-only: 仅显示已修改的文件清单。
  • git log --name-status: 显示新增、修改、删除的文件清单。
  • git log --oneline: 让提交记录以精简的一行输出。
  • git log --graph --all --oneline: 图形展示分支的合并历史,以及所有提交记录的一行输出。
  • git log --author=作者: 查询指定作者的提交记录。与grep同时使用需要添加一个--all-match参数。
  • git log --grep=过滤信息: 列出提交信息中包含指定过滤信息的提交记录。
  • git log -S查询内容: 列出提交记录中引入或删除指定内容的提交。S和查询内容之间没有空格。
  • git log fileName: 查看某文件的修改记录。

7.代码回滚

  • git reset HEAD^: 将当前HEAD指向的版本回退到上次提交的版本,但保留工作区和暂存区的修改。
  • git reset HEAD^^: 将当前HEAD指向的版本回退到上上次提交的版本,以此类推,或者使用~后跟次数指定回退的版本数。
  • git reflog: 查看引用日志,即查看当前仓库的操作记录,包括HEAD的变动。
  • git reset --hard 版本号: 将当前HEAD指向的版本回退到指定的版本号,同时重置暂存区和工作区。选项--soft表示只改变HEAD指针指向,不改变暂存区和工作区;选项--mixed表示修改HEAD指针指向,暂存区内容丢失,但工作区不变;选项--hard表示修改HEAD指针指向,暂存区内容丢失,工作区恢复至指定版本状态。

8.版本库相关操作

  • git rm 文件名: 从版本库中删除指定文件,并将删除操作添加到暂存区。
  • git rm -r --cached folder: 递归地删除 folder 文件夹及其所有内容的跟踪记录,但不会删除实际的文件。
  • git checkout -- 文件名: 将版本库中的文件替换工作区的文件,即撤销对工作区文件的修改,恢复到最近一次提交的状态。

9.远程仓库相关操作

  • 同步远程仓库:git push -u origin master
    将本地的master分支内容推送到远程仓库origin,并建立本地master分支与远程master分支的关联。

  • 本地仓库内容推送到远程仓库:git remote add origin git@github.com:帐号名/仓库名.git
    将本地仓库关联到远程仓库,命名为origin,地址为git@github.com:帐号名/仓库名.git。

  • 从远程仓库克隆项目到本地:git clone git@github.com:git帐号名/仓库名.git
    从远程仓库克隆项目到本地。

  • 查看远程库信息:git remote
    查看当前仓库配置的远程仓库信息。

  • 拉取远程分支到本地仓库:

    git checkout -b 本地分支 远程分支 # 会在本地新建分支,并自动切换到该分支
    git fetch origin 远程分支:本地分支 # 会在本地新建分支,但不会自动切换,还需checkout
    git branch --set-upstream 本地分支 远程分支 # 建立本地分支与远程分支的链接
    
  • 同步远程仓库更新:git fetch origin master
    从远程仓库origin的master分支获取最新变更,但不合并到当前分支。

10.分支相关操作

  • git checkout -b dev: 创建并切换到名为dev的新分支。
  • git branch dev: 创建名为dev的新分支,但不切换到该分支。
  • git checkout dev: 切换到名为dev的分支。
  • git branch: 查看所有分支。
合并分支:
  • git merge dev: 将名为dev的分支合并到当前分支。这种合并会产生一个新的合并提交,并且合并后的历史记录会显示分支的合并情况。
  • git merge --no-ff -m “merge with no-ff” dev: 使用普通模式合并名为dev的分支到当前分支。选项--no-ff表示禁用快速合并(Fast-forward),这样合并后的历史记录中会保留分支的信息,能够清晰地看出曾经进行过合并。
删除分支:

git branch -d dev

查看分支合并图:

git log –graph –pretty=oneline –abbrev-commit

11.git相关配置

安装完Git后第一件要做的事,设置用户信息(global可换成local在单独项目生效):

  • git config --global user.name “用户名”: 设置全局Git用户名为“用户名”。
  • git config --global user.email “用户邮箱”: 设置全局Git用户邮箱为“用户邮箱”。
  • git config --global user.name: 查看全局Git用户名是否配置成功。
  • git config --global user.email: 查看全局Git用户邮箱是否配置成功。

其他配置相关:

  • git config --global --list: 查看全局设置相关参数列表。
  • git config --local --list: 查看本地设置相关参数列表。
  • git config --system --list: 查看系统配置参数列表。
  • git config --list: 查看所有Git的配置,包括全局、本地和系统级别的配置。
  • git config --global color.ui true: 设置全局Git颜色显示为true,即启用Git相关颜色显示。

13.撤消某次提交

  • git revert HEAD: 撤销最近的一个提交,并创建一个新的提交来反转该提交引入的更改。
  • git revert 版本号: 撤销指定版本号的提交,并创建一个新的提交来反转该提交引入的更改。

14.标签

  • git tag 标签: 在当前HEAD指向的提交上打上标签。
  • git tag: 显示所有标签。
  • git tag 标签 版本号: 给指定的commit版本添加标签。
  • git show 标签: 显示指定标签的详细信息。

15.clean

  • git clean: 命令可以用来删除当前目录下没有被 Git 管理的文件,包括编译生成的文件、临时文件等不需要的文件,提高代码仓库的整洁性。命令默认不会删除目录,只会删除文件。如果要删除目录,需要加上 -d 参数。
    -git clean -n: 查看删除文件列表
    -git clean -f -x: 命令来强制删除。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,026评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,655评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,726评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,204评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,558评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,731评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,944评论 2 314
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,698评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,438评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,633评论 2 247
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,125评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,444评论 3 255
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,137评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,103评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,888评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,772评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,669评论 2 271

推荐阅读更多精彩内容

  • 文件说明 Git开发常用命令,是在 hongiii 的基础上在进行补充 Git介绍 Git是分布式版本控制系统 集...
    微光北下阅读 230评论 0 0
  • 一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。 下面是我整理的常用...
    f09037cb27f7阅读 103评论 0 0
  • 阅读 2907收藏 171原文 www.ruanyifeng.com 我每天使用 Git ,但是很多命令记不住。 ...
    我家有个小太阳阅读 185评论 0 0
  • 总结 git的几个常用词汇 Workspace:工作区 Index / Stage:暂存区 Repository:...
    Predor阅读 226评论 0 0
  • 生成SSH key在Windows下查看[c盘->用户->自己的用户名->.ssh]下是否有id_rsa、id_r...
    上杉丶零阅读 180评论 0 1