IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Git 常用命令 -> 正文阅读

[开发工具]Git 常用命令

1 Git 起步

1.1 运行 Git 前的配置

?安装完 Git 之后,要做的第一件事就是设置你的用户名和邮件地址。 这一点很重要,因为每一个 Git 提交都会使用这些信息,它们会写入到你的每一次提交中,不可更改:

$ git config --global user.name <用户名>
$ git config --global user.email <用户邮箱>

1.2 检查配置信息

$ git config --list #列出所有 Git 当时能找到的配置
$ git config <key>  #检查 Git 的某一项配置

1.3 Git 命令帮助

$ git <command> -h #获取某个命令 command 的帮助

1.4 Git 的三种状态

  • 已修改 modified :表示修改了文件,但还没保存到数据库中。
  • 已暂存 staged :表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
  • 已提交 committed :表示数据已经安全地保存在本地数据库中。

所以 Git 项目拥有三个阶段:工作区 Working Directory 、暂存区 Staging Area 以及 Git 仓库 Repository

2 Git 基础

2.1 获取 Git 仓库

在已存在目录中初始化仓库
$ git init #用 Git 来控制当前项目目录
$ git init [project-name] #新建一个目录,将其初始化为Git代码库

该命令将创建一个名为 .git 的子目录,这个子目录含有初始化的 Git 仓库中所有的必须文件。

克隆现有的仓库
$ git clone <url> #在当前目录下克隆远端仓库
$ git clone <url> <project-name> #在当前目录下克隆远端仓库,并自定义本地仓库名字

2.2 记录每次更新到仓库

查看所有文件状态
$ git status
未跟踪的工作区文件
$ touch <file> #新建一个新的文件

使用 git status 查看,输出日志中该文件显示为红色,且在 Untracked files 下面,表示文件在工作区。

添加文件到暂存区 / 跟踪新文件
$ git add <file> #添加指定文件到暂存区
$ git add .  #添加当前目录的所有文件到暂存区

使用 git status 查看,输出日志中该文件显示为绿色,且在 Changes to be committed 下面,表示文件被添加到暂存区。

删除暂存区文件
$ git rm --cached <file>

git status 查看文件为红色,文件从暂存区删除,但是工作区的文件还在。

文件重命名
$ git mv <old file> <new file> #文件重命名
提交文件

在此之前,请务必确认还有什么已修改或新建的文件还没有 git add 过, 否则提交的时候不会记录这些尚未暂存的变化。所以,每次准备提交前,先用 git status 看下,你所需要的文件是不是都已暂存起来了。如果文件都暂存了,要运行提交命令 :

$ git commit -m "<commit message>" # 提交暂存区到仓库
$ git commit -m "<commit message>" <file> # 提交暂存区的指定文件到仓库
$ git commit -a # 提交工作区自上次commit之后的变化到仓库
$ git commit -v #提交时显示所有diff信息

#如果代码没有任何新变化,改写上一次commit的提交信息
#如果代码发生新变化,替代上一次提交
$ git commit --amend -m "<commit message>" 

2.3 查看提交历史

$ git reflog  #显示当前分支的最近几次提交

$ git log #按时间先后顺序列出所有的提交,最近的更新排在最上面。按 q 退出
$ git log --oneline #查看历史记录的简洁版本
$ git log --graph #查看历史拓扑图中什么时候出现了分支、合并
$ git log -5 --pretty --oneline # 显示过去5次提交
$ git log --oneline --before={1.weeks.ago} #查看一周前的所有提交
$ git log --oneline --after={2022-07-01} #查看七月一日后的所有提交
$ git log -p -n #查看最近的 n 次提交的差异
$ git diff  #显示暂存区和工作区的差异
$ git diff HEAD   #显示工作区与当前分支最新commit之间的差异
$ git diff --cached <file>  #显示暂存区和上一个commit的差异
$ git diff <first-branch>...<second-branch>  #显示两次提交之间的差异

2.4 撤销

$ git checkout <file> # 恢复暂存区的指定文件到工作区
$ git checkout  #恢复暂存区的所有文件到工作区


$ git reset <file>  #重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
$ git reset --hard  #重置暂存区与工作区,与上一次commit保持一致
$ git reset --hard <commit> #重置当前分支指针指向commit,暂存区和工作区与commit一致

2.5 暂存

$ git stash  #暂存未提交的变化
$ git stash pop  #移入未提交的变化

2.6 远程仓库的使用

查看远程仓库
$ git remote #查看已经配置的远程仓库服务器简称
$ git remote -v #查看远程仓库的简称与其对应的 URL
$ git remote show <remote> #查看远程仓库的更多信息
添加远程仓库
$ git remote add <shortname> <url> #自行添加远程仓库,并指定其简称
从远程仓库中抓取与推送
$ git fetch <remote> #抓取远程仓库中所有分支的引用
$ git pull <remote> <branch>  #取回远程仓库的变化,并与本地分支合并
$ git push <remote> <branch> #上传本地指定分支到远程仓库
$ git push <remote> <local branch>:<remote branch> #将本地分支推送到远程分支合并
$ git push <remote> <branch> #将本地分支推送到远程同名分支合并
$ git push <remote> --force  #强行推送当前分支到远程仓库,即使有冲突
$ git push <remote> --all  #推送所有分支到远程仓库
远程仓库的重命名
$ git remote rename pb pc #修改远程仓库pb简称为pc
远程仓库的移除
$ git remote remove pc #移除远程仓库pc

2.7 Git 标签

#列出已有标签
$ git tag #列出所有标签
$ git tag -l <pattern> #列出名称与给定模式匹配的标签
$ git tag -l "v1.1*" #列出所有 1.1 系列标签

#创建标签
$ git tag <tag> #为当前commit创建轻量标签
$ git show <tag> # 查看tag信息

#删除标签
$ git tag -d <tag> #删除本地仓库上的标签

#提交标签
$ git push <remote> <tag> #创建完标签后,显式地推送标签到远程仓库
$ git push origin --tags #把所有不在远程仓库上的标签全部推送上

3 Git 分支

3.1 管理分支

$ git branch -r  #列出所有远程分支
$ git branch -a  #列出所有本地分支和远程分支
$ git branch --merged #查看哪些分支已经合并到当前分支
$ git branch --no-merged #查看哪些分支还未合并到当前分支

3.2 创建和切换分支

$ git branch -r  #列出所有远程分支
$ git branch -a  #列出所有本地分支和远程分支

$ git branch <branch>  #新建一个分支,但停留在当前分支
$ git checkout -b <branch>  #新建分支并同时切换到那个分支上
$ git checkout -  #切换到上一个分支

3.3 合并分支

当我们在 masteriss7 分支上工作时,系统突然出现一个紧急问题需要解决。我们不希望这个紧急问题和 iss7 的修改混在一起:

$ git checkout master #先切换回 master 分支
$ git checkout -b hotfix #新建一个 hotfix 分支来解决这个紧急问题

紧急问题在 hotfix 解决后,如果要将 hotfix 分支合并回 master 分支:

$ git checkout master #先要再切换回 master
$ git merge hotfix #再将 hotfix 合并到 master

3.4 删除分支

如果要删除已合并的 hotfix 分支:

$ git checkout master #先切换回 master
$ git branch -d hotfix #删除已合并的 hotfix 分支

如果要删除未合并的 hotfix 分支,使用 git branch -D <branch> 命令删除

3.5 合并冲突

合并分支的过程中,如果两个分支都修改过同一个文件的相同地方,通常会产生冲突。使用 git status 查看产生冲突的具体文件下面的内容显示(假设是 index.html 文件 )。
用编辑器打开冲突文件,你会发现有冲突的地方是下面这样:

$ git status
<<<<<<< HEAD:index.html
<div id="footer">contact : email.support@github.com</div>
=======
<div id="footer">please contact us at support@github.com
</div>
>>>>>>> iss7:index.html

Git 用 <<<<<<<< 符号、======= 符号和 >>>>>>> 符号标注每一处冲突,=====上半部分代表 HEAD(即 master 分支)的内容,下半部分代表 iss7 分支的内容。为了解决冲突,你必须选择使用由 ======= 分割的两部分中的一部分,或者你也可以自行合并这些内容:

<div id="footer">
please contact us at email.support@github.com
</div>

上述的冲突解决方案仅保留了其中一个分支的修改,并且 <<<<<<< , ======= , 和 >>>>>>> 这些行也需要被手动删除。 在你解决了所有文件里的冲突之后,对每个冲突文件使用 git add 命令来将其标记为冲突已解决。 一旦暂存这些原本有冲突的文件,Git 就会将它们标记为冲突已解决

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-07-20 19:07:01  更:2022-07-20 19:08:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 19:26:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计