赞
踩
参考文章链接:
Git教程(超详细,一文秒懂)
上图来自RUNOOB Git教程
上图来自RUNOOB Git教程
图中左侧为工作区,右侧为版本库。在版本库中标记为 “index” 的区域是暂存区(stage/index),标记为 “master” 的是 master 分支所代表的目录树;HEAD是指向当前分支的一个游标(别名),输入命令时可相互替换;objects 标识的区域为 Git 的对象库,实际位于 “.git/objects” 目录下,里面包含了创建的各种对象及内容
git add *
临时存储在暂存区(**暂存区:**英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)),暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中git commit -m “ xxx”
提交在本地库并描述(**版本库:**工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库),暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树git push
上传到远程仓库代码托管中心是基于网络服务其的远程代码仓库,简称为远程库
#安装 apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \ libz-dev libssl-dev apt-get install git git --version # 输出:git version 1.8.1.2 #配置 gitconfig # /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config --system ,读写的就是这个文件 #~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config --global ,读写的就是这个文件 #当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量 #下面--global 可以更换为 --system 或不加,意义如上 git config --global user.name "abc" git config --global user.email abc@qq.com #查看已有配置信息 git config --list #输出:user.name=abc user.email=abc@qq.com # 有时候会看到重复的变量名,那就说明它们来自不同的配置文件(比如 /etc/gitconfig、~/.gitconfig),不过最终 Git 实际采用的是最后一个。
git config --global user.name xxx #设置用户名 git config --global user.email xxx #设置用户邮箱 git init #初始化本地库,生成一个 .git 目录,该目录包含了资源的所有元数据, git init 文件夹名 #指定目录作为Git仓库,会在该目录下生成.git目录,所有Git需要的数据资源都放在该目录 #如果当前目录有几个文件想要纳入版本控制,需要先用git add命令告诉Git开始对这些文件进行跟踪,然后提交: git add *.c git add README git commit -m "初始化项目版本" git rm #将文件从暂存区和工作区中删除 git mv #移动或重命名工作区文件 git status #查看本地库状态 git add xxx #将xxx文件加入到暂存区 git commit -m "xxx" #提交到本地库并添加日志 git reflog #查看历史记录 git reset --hard 版本号 #版本穿梭 git rm --cached 文件名 #清除暂存区文件 git checkout -- 文件名 #将暂存区中同名文件覆盖到工作区 git checkout 分支名 -- 文件名 #将本地库中同名文件覆盖到暂存区和工作区 git restore #恢复或撤销文件的更改
git status
查看本地库状态git add
上传工作区文件至本地库git add xxx
git status
会检测到暂存区有新文件git commit -m “日志信息” 文件名
提交至本地库git commit -m 'first commit' hello.txt
git reflog
查看提交的版本及日志信息git log
查看完整的提交版本及日志信息git log [选项] [分支名/提交哈希]
常用的选项包括:
-p
:显示提交的补丁(具体更改内容)--oneline
:以简洁的一行格式显示提交信息--graph
:以图形化方式显示分支和合并历史--decorate
:显示分支和标签指向的提交--author=<作者>
:只显示特定作者的提交--since=<时间>
:只显示指定时间之后的提交--until=<时间>
:只显示指定时间之前的提交--grep=<模式>
:只显示包含指定模式的提交消息--no-merges
:不显示合并提交--stat
:显示简略统计信息,包括修改的文件和行数--abbrev-commit
:使用短提交哈希值--pretty=<格式>
:使用自定义的提交信息显示格式git blame 文件名
以列表形式显示修改记录
git reset 版本号
暂存区的目录树会被重写,被定义版本号指向的目录树所替换,但工作区不受影响git rm --cached 文件名
会直接从暂存区删除文件,工作区不作出改变git checkout .
或者 git checkout -- 文件名
会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动git checkout 分支名 .
或者git checkout -- 文件名
会用定义或指向分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。git branch 分支名 #创建分支
git branch -v #查看分支
git checkout 分支名 #切换分支
git checkout -b 分支名 #创建新分支并切换
git switch 分支名 #切换分支
git switch -c 新分支名 #创建新分支并切换
git merge 分支名 #把指定的分支合并到当前分支上
git branch -d 分支名 #删除分支
git branch -v
git branch 分支名
git checkout 分支名
git checkout 主分支
git merge 分支名
git add 文件名
git merge 合并分支名
git branch -d 分支名
上图来自RUNOOB Git教程
git remote -v #查看当前所有远程地址别名
git remote add 别名 远程地址 #起别名(第一次)
git push 别名 分支 #推送本地分支上的内容到远程仓库
git clone 远程地址 #将远程仓库的内容科隆到本地(第一次)
git pull 远程库地址别名 远程分支名 #将远程仓库对于分支最新内容拉下来后与当前本地分支直接将合并
git clone 远程地址
,执行该命令会默认处于master分支下,也会自动将origin设置成该远程仓库的标识符
git clone 远程地址 新名字
克隆仓库并在本地修改仓库名
设置提交代码时的用户信息
git config --global user.name "abc"
git config --global user.email abc@qq.com
#如果去掉 --global 参数只对当前仓库有效。
git remote -v #先查看当前所有远程地址一般会叫origin
git remote add 仓库别名 远程地址 #增加远程仓库
git remote -v #再次查看当前所有远程地址
#会有两个仓库,又分别有1个可以推送(push) 一个可以拉取(fetch)
#删除仓库
git remote rm 仓库名
git push 远程仓库地址别名 分支名
,推送的最小单位是分支,所以一定要指定分支,例如:git push origin master
git pull 远程仓库地址别名 分支名
,例如:git pull origin master
git fetch
获取远程仓库中最新的提交和分支信息,但不会自动合并到当前分支上
例如:git fetch origin
从名为origin的远程仓库获取所有分支的最新更改
git diff
比较本地分支和远程分支之间的差异,避免潜在冲突,例如git diff HEAD origin/分支名
,HEAD 是指当前分支的最新提交
然后进行合并:git merge orgin/分支名
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。