Git基本操作
正文开始@Assassin
目录:
- Git基本操作
- 1. Git工作四区:
- 2. 四个工作区域常用操作命令 :
- 3. Git配置操作命令:
- 4. 工作区上的操作命令(Workspace):
- 4.1 新建本地仓库:
- 4.2 提交操作:
- 4.3 撤销操作:
- 4.4 更新操作:
- 4.5 查询操作:
- 5. 暂存区上的操作命令(Index/Stage):
- 5.1 提交文件到版本库:
- 5.2 查看信息:
- 5.3 标签:
- 5.4 分支管理:
- 6. 本地仓库上的操作(Local Repository):
- 7. 忽略文件.gitignore:
1. Git工作四区:
版本库:.git
文件夹,里面包含两部分:暂存区和本地仓库;
名词
|
解释
|
Workspace
|
工作区,本地计算机存放项目文件的地方
|
Index/Stage
|
暂存区,存在于.git 文件夹,存放临时文件,用来准备一个提交,但可以不用把工作目录中所有的修改内容都包含进来。这样你可以创建一个高度聚焦的提交,尽管你本地修改很多内容。使用add 命令之后,将工作区的改动文件添加到此处
|
Local Repository
|
本地仓库,存在于.git 文件夹,是各个分支存储处,包括git 自动创建的master /main 分支,使用commit 命令可以将暂存区中的文件添加到本地仓库中
|
Remote Repository
|
远程仓库 ,存在于git 服务器
|
2. 四个工作区域常用操作命令 :
命令
|
作用
|
git add [file]或.
|
将改动从工作区提交到暂存区
|
git commit -m "提交说明"
|
将暂存区改动提交到本地仓库
|
git pull
|
拉取远程仓库改动至工作区
|
首先git fetch ,然后git merge
|
拉取远程仓库改动至本地仓库,然后合并工作区
|
git push origin master/main
|
一般使用简单写法git push :推送本地仓库改动至远程仓库
|
3. Git配置操作命令:
git
的配置文件为.gitconfig
,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。
命令
|
作用
|
git config --list
|
列出当前配置
|
git config --local --list
|
列出repository 配置
|
git config --global --list
|
列出全局配置
|
git config --system --list
|
列出系统配置
|
git config --global user.name "your name"
|
配置用户名
|
git config --global user.email "youremail@github.com"
|
配置用户邮箱
|
git config --global user.password "your password"
|
配置用户密码
|
git config --global color.ui auto
|
配置git 命令输出为彩色
|
git config --global core.editor vi
|
配置git 使用的文本编辑器
|
git config --global merge.tool vimdiff
|
配置解决冲突时使用哪种差异分析工具,比如要使用vimdiff
|
4. 工作区上的操作命令(Workspace):
4.1 新建本地仓库:
命令
|
作用
|
git init
|
在当前目录新建一个Git 仓库
|
git init [project-name]
|
新建一个目录,将其初始化为Git 仓库
|
git clone [url]
|
下载一个项目和它的整个代码历史
|
git clone [url] [project name]
|
克隆远程库,并且重命名项目名称
|
4.2 提交操作:
命令
|
作用
|
git add .
|
提交工作区所有文件到暂存区
|
git add [file1] [file2] ...
|
提交工作区中指定文件到暂存区
|
git add [dir]
|
提交工作区中某个文件夹中所有文件到暂存区(包括子目录)
|
4.3 撤销操作:
命令
|
作用
|
git rm [file1] [file2] ...
|
删除工作区文件,并且也从暂存区删除对应文件的记录
|
git rm --cached [file]
|
从暂存区中删除文件,但是工作区依然还有该文件
|
git reset HEAD [file]...
|
取消暂存区已经暂存的文件
|
git checkout --[file]
|
当改乱了工作区某个文件的内容,而且尚未进行add 命令,想直接丢弃工作区的修改时使用此命令
|
git stash
|
隐藏当前变更,以便能够切换分支
|
git stash list
|
查看当前所有的储藏
|
git stash apply
|
应用最新的储藏
|
git stash apply stash@{0}
|
恢复指定的 stash (0代表第一个)
|
git stash apply --index
|
重新应用被暂存的变更,使用apply 命令只是应用储藏,而内容仍然还在栈上,需要移除指定的储藏
|
git stash drop stash{0}
|
移除指定的储藏
|
git stash pop
|
恢复储藏,并删除stash 内容
|
4.4 更新操作:
命令
|
作用
|
git mv [file-original] [file-renamed]
|
重命名文件,并将已改名文件提交到暂存区
|
4.5 查询操作:
命令
|
作用
|
git status
|
查询当前工作区所有文件的状态
|
git diff
|
比较工作区中当前文件和暂存区之间的差异,也就是修改之后还没有暂存的内容
|
git diff [file-name]
|
指定文件在工作区和暂存区上差异比较
|
5. 暂存区上的操作命令(Index/Stage):
5.1 提交文件到版本库:
命令
|
作用
|
git commit -m [commit info]
|
将暂存区的改动提交到本地仓库,每次提交都会产生一个commit id
|
git commit [file1] [file2] ... -m [commit info]
|
提交暂存区的指定文件到本地仓库,每次提交都会产生一个commit id
|
git commit -a
|
将所有已经使用git管理过的文件暂存后一并提交至本地仓库,跳过add到暂存区的过程,每次提交都会产生一个commit id
|
git commit --amend
|
提交文件时,发现漏掉几个文件,或者注释写错了,可以撤销上一次提交,即amend 提供对最后一次commit 的反悔,但是如果已经push 过了,那么便是最后一次final提交,不能再次修改
|
git rebase -i HEAD~3
|
表示要修改当前版本的倒数第三次状态
|
5.2 查看信息:
命令
|
作用
|
git diff --cached
|
比较暂存区与上一版本的差异
|
git diff <file-name> --cached
|
指定文件在暂存区和本地仓库的不同
|
git log
|
查看提交历史
|
git log -p -2
|
参数-p展开每次提交的内容差异,用-2显示最近的两次更新
|
git reflog
|
用来记录每一次命令,即显示整个本地仓储的commit , 包括所有branch 的commit , 甚至包括已经撤销的commit , 只要HEAD 发生了变化, 就会在reflog 里面看得到. git log 只包括当前分支的commit
|
5.3 标签:
命令
|
作用
|
git tag
|
列出现在所有的标签
|
git tag v1.5
|
创建一个轻量级标签的话,就直接使用git tag 命令即可,连-a ,-s 以及-m 选项都不需要,直接给出标签名字即可
|
git tag -l "v1.4.2.*"
|
使用特定的搜索模式列出符合条件的标签,例如:这个命令是只对1.4.2系列的版本感兴趣
|
git tag -a v1.4 -m "my version 1.4"
|
创建一个含附注类型的标签,需要加-a 参数
|
git show v1.4
|
使用git show 命令查看相应标签的版本信息,并连同显示打标签时的提交对象
|
git tag -s v1.5 -m "my signed 1.5 tag"
|
如果有自己的私钥,可以使用GPG 来签署标签,只需要在命令中使用-s 参数
|
git tag -v v1.5
|
验证已签署的标签
|
git push origin v1.5
|
将标签推送到远程仓库中
|
git push origin --tags
|
将本地所有的标签全部推送到远程仓库中
|
5.4 分支管理:
命令
|
作用
|
git branch [branch-name]
|
创建分支
|
git checkout [branch-name]
|
从当前所处的分支切换到其他分支
|
git checkout -b [branch-name]
|
新建并切换到新建分支上
|
git push origin local_branch:remote_branch
|
创建远程分支,建立在本地分支的基础上
|
git branch -d [branch-name]
|
删除分支
|
git merge [branch-name]
|
将当前分支与指定分支进行合并
|
git branch
|
显示本地仓库的所有分支
|
git branch -v
|
查看各个分支最后一个提交对象的信息
|
git branch --merged
|
查看哪些分支已经合并到当前分支
|
git branch --no-merged
|
查看当前哪些分支还没有合并到当前分支
|
git merge [remote-name]/[branch-name]
|
把远程分支合并到当前分支。 如果是单线的历史分支不存在任何需要解决的分歧,只是简单的将HEAD 指针前移,所以这种合并过程可以称为快进(Fast forward ),而如果是历史分支是分叉的,会以当前分叉的两个分支作为两个祖先,创建新的提交对象;如果在合并分支时,遇到合并冲突需要人工解决后,再才能提交
|
git checkout -b [local_branch-name] [origin-name]/[remote_branch-name]
|
在远程分支的基础上创建新的本地分支,而后便可拉取该分支代码
|
git pull
|
在跟踪分支上,拉取远程仓库的变化,并与本地分支合并
|
git rebase
|
可以对某一段线性提交历史进行编辑、删除、复制、粘贴,可以把本地未push 的分叉提交历史整理成直线。 使用rebase 操作应该遵循的原则是:一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行rebase 操作。
|
git rebase -i [startpoint] [endpoint]
|
-i 的意思是--interactive ,即弹出交互式的界面让用户编辑完成合并操作,[startpoint ]和[endpoint ]则指定了一个编辑区间,如果不指定[endpoint ],则该区间的终点默认是当前分支HEAD 所指向的commit (注:该区间指定的是一个前开后闭的区间)。 如:git rebase -i 36224db 或git rebase -i HEAD~3
|
git rebase [rebase-branch] [branch-name]
|
如git rebase master server ,将特性分支server提交的改变在基底分支master/main 上重演一遍
|
git rebase [startpoint] [endpoint] --onto [branchName]
|
即将某一段commit 粘贴到另一个分支上。 [startpoint ]和[endpoint ]仍然和上一个命令一样指定了一个编辑区间(前开后闭),--onto 的意思是要将该指定的提交复制到哪个分支上
|
git branch --set-upstream-to=origin/remotebranch localbranch
|
将远程分支与本地分支建立关联
|
6. 本地仓库上的操作(Local Repository):
命令
|
作用
|
git remote
|
查看本地仓库关联的远程仓库
|
git remote add [remote-name] [url]
|
添加远程仓库,一般会取一个简短的别名
|
git fetch [remote-name]
|
从远程仓库中抓取本地仓库中没有的更新。 使用fetch 只是将远端数据拉到本地仓库,并不自动合并到当前工作分支,只能人工合并。 如果设置了某个分支关联到远程仓库的某个分支的话,可以使用git pull 来拉去远程分支的数据,然后将远端分支自动合并到本地仓库中的当前分支
|
git push [remote-name] [remote-branch]
|
推送分支代码
|
git push [remote-name] [local-branch]:[remote-branch]
|
将本地分支推送到远程仓库的不同名或同名分支
|
git push [romote-name] :[remote-branch] ,或者git push origin --delete dev
|
删除远程分支。 如git push origin :serverfix ,这里省略了本地分支,也就相当于将空白内容推送给远程分支,就等于删掉了远程分支。
|
git branch -D dev
|
删除本地分支
|
git push
|
git push 的一般形式为:git push <远程主机名> <本地分支名> <远程分支名> 。 如果当前分支只有一个远程分支,那么主机名都可以省略,形如 git push ,可以使用git branch -r ,查看远程的分支名
|
git remote rename [old-name] [new-name]
|
修改某个远程仓库在本地的简称
|
git remote rm [remote-name]
|
移除远程仓库
|
7. 忽略文件.gitignore:
命令
|
作用
|
*.a
|
忽略所有.a 结尾的文件
|
!lib.a
|
lib.a 除外
|
/TODO
|
仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
|
build/
|
忽略 build/ 目录下的所有文件
|
doc/*.txt
|
忽略 doc/notes.txt 但不包括 doc/server/arch.txt
|
doc/**/*.txt
|
忽略 doc/ 目录下所有扩展名为.txt 的文件
|
【Git】Git基本操作详解相关推荐
- Git客户端图文详解如何安装配置GitHub操作流程攻略
Git客户端图文详解如何安装配置GitHub操作流程攻略 软件应用 爱分享 3个月前 (08-15) 8896浏览 0评论 Git介绍 分布式 : Git版本控制系统是一个分布式的系统, 是用来 ...
- git checkout 命令详解—— Git 学习笔记 16
git checkout 命令详解 概览 git checkout 这条命令的常用格式如下: 用法一 git checkout [<commit>] [--] <paths> ...
- git reset 命令详解(二)—— Git 学习笔记 08
git reset 命令详解(二) 上一篇博文git reset 命令详解(一)讲了 git reset 命令的基本原理和用法,这篇博文谈一谈 git reset 的另一种用法--后面跟一个路径(或文 ...
- git reset 命令详解(一)—— Git 学习笔记 07
git reset 命令详解(一) 简而言之,git reset 命令是用来将当前 branch 重置到另外一个 commit 的,这个动作可能同时影响到 index 以及 work director ...
- git diff命令详解
git diff命令详解 diff里面a表示前面那个变量,b表示第二个变量 HEAD commit版本 Index staged版本 a.查看尚未暂存的文件更新了哪些部分,不加参数直接 ...
- Git的原理详解与使用-臧雪园-专题视频课程
Git的原理详解与使用-3人已学习 课程介绍 2018 Git的原理详解与使用视频教程,该课程主要从四个部分进行讲解:第一部分主要讲解了Git的基本使用.比如安装和git基本命令使用, ...
- Git 常用命令详解
Git 常用命令详解 1. Git 常用命令 1.1 常用git 命令图表汇总 1.2 配置个人信息 1.3 创建版本库 1.4 常用Git命令汇总 2. Git 解决代码冲突 3. Git 分支管理 ...
- git log 命令详解
git log 命令详解 git log 命令用于查看提交历史: git log [options] [<file> <commit> <tag>...] 如果不加 ...
- 运维之道 | Git log 命令详解
Git log 命令详解 Git log 可以让我们查看提交commit history [root@localhost villian]# git log commit 7a690b414f87fb ...
- git reset 命令详解 git revert命令详解。
git reset 命令详解 reset命令 介绍 参数 补救 git revert命令 revert说明 举例: 命令 reset命令 介绍 git reset 命令格式为: git reset [ ...
最新文章
- android 网络调试 源代码,一个步骤教你调试Android系统源代码
- 离线安装python第三方库的实用方法:解决公司内网,服务器/电脑不能上网却需要安装python三方库问题(上:Windows环境中)
- 关于wcf三大工具的使用(wsdl.exe svcutil.exe disco.exe)
- linux用户和群组的作用,linux中的用户、群组和权限
- 如何为JBoss Developer Studio 8设置集成和SOA工具
- Python实现GitBook工具
- UVa——110303 Common Permutation(字符串)
- nginx 完全关闭 access_log
- C# MSchart图表控件安装与使用
- Android四大组件(activity task stack)
- CS229 笔记-1
- JAVA看云判断天气_看云,能否“识”天气?
- 整型常量是整数类型的数据
- 4核处理器_最便宜的16核洋垃圾怎么样?建议别买
- Vue 爬坑之旅 -- 用自定义指令解决 IOS 12 中键盘收起后页面底部有留白的问题
- vue 环境配置.env;.env.development;.env.production配置
- 玛格丽特·米德2019下半年EI会议与人格理论初探
- IP67 | IP58 防护等级理解
- cocos2dx layer理解
- linux打包文件夹命令
热门文章
- 被骂垃圾货,却卖出8000万副,干翻国外大牌!这个产品杀手凭什么?
- 现男友代言!最强自拍手机荣耀20S正式发布:售价1899元起
- 假的!微信上询问商品会被封号 微信朋友圈公布1月份十大谣言
- 入驻商户卖隐形眼镜护理液 饿了么遭监管警告
- 谈软件测试---一年测试工作总结
- 晨哥真有料丨为什么越优秀的女生越寡?
- redis订阅怎么退出_关于redis,学会这8点就够了
- android 传递接口对象吗,android中Intent传递对象,需要实现Serializable接口或者Parcelable接口...
- Golang实践录:oracle数据库实践
- Maven常见警告解决办法