Git是分布式的,SVN是集中式的。
Git支持离线操作,在本地可以进行很多种操作,而SVN必须联网。
Git把内容按元数据存储,SVN是按文件。
Git分支和SVN分支不同。
Git分支是指针指向某次提交(分支切换快,创建成本低),SVN是拷贝的目录。Git有本地分支,SVN没有本地分支。

工作区(workspace):就是你在电脑里能看到的目录。 暂存区(staging area):英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件。 版本库(local repository):工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。 远程仓库(remote repository):远程仓库。
git init
#在项目中生成了 .git 这个子目录,这就是Git仓库
git init
复制
git add
#添加文件到暂存区
git add [file]
#添加目录到暂存区
git add [dir]
#添加所有文件到暂存区
git add .
复制
git commit
#提交暂存区到本地仓库
git commit -m [message]
#提交暂存区的指定文件到仓库区
git commit [file1] [file2] ... -m [message]
#不需要执行 git add 命令,直接来提交
git commit -a
复制
git config
#设置提交代码的用户名和电子邮件地址
git config --global user.name 'runoob'
git config --global user.email test@runoob.com
复制
git clone
#克隆代码
git clone [url]
复制
git diff
#显示尚未添加到stage的文件的变更
git diff [file]
#显示暂存区和上一次提交(commit)的差异
git diff --staged [file]
复制
git status
#查看上次提交之后的修改文件有哪些
git status
#通常只查看精简的文件列表
git status -s
复制
git reset
git reset [--soft | --mixed | --hard] [HEAD]
#默认--mixed,用于重置暂存区的文件,工作区文件内容保持不变。
git reset [HEAD]
#回退到某个版本
git reset --soft HEAD
#撤销工作区修改,将暂存区与工作区都回退上一版本,并删除之前的所有信息提交
git reset --hard HEAD
git reset --hard [SHA bae128]
复制
git log
#查看提交记录,英文模式下按q可退出
git log
#按照简洁的列表显示提交记录
git log --oneline
#按照时间顺序看log
git log --reverse --oneline
#看5条Linus提交的记录
git log --author=Linus --oneline -5
复制
git pull
git pull <远程主机名> <远程分支名>:<本地分支名>
git pull
git pull origin
#将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并
git pull origin master:brantest
复制
注:git pull = git fetch + git merge
git pull = git fetch + git merge
git fetch origin master //从远程主机的master分支拉取最新内容
git merge FETCH_HEAD //将拉取下来的最新内容合并到当前所在的分支中
复制
git push
git push <远程主机名> <本地分支名>:<远程分支名>
#如果本地分支名与远程分支名相同,则可以省略冒号
git push origin master
#本地版本与远程版本有差异,但又要强制推送
git push --force origin master
#删除 origin 主机的 master 分支
git push origin --delete master
复制
git fetch
#用于从远程获取代码库
git fetch origin
复制
git merge
#将dev分支合并到当前分支
git merge dev
复制
git remote
#列出远程仓信息
git remote -v
#显示某个远程仓库(origin)的信息
git remote show origin
复制
git branch
#查看当前所有分支
git branch
#新建一个分支
git branch dev2
#切换到一个分支
git checkout dev2
#查看本地和远程分支
git branch -a
#删除本地分支
git branch --delete dev2
git branch -d dev2 //删除前检查merge状态
git branch -D dev2 //直接删除 --force
#删除远程分支
git push origin --delete <remote-branchname>
#分支重命名
git branch -m oldname newname
#将本地分支推送到远程分支
git push origin dev2
#合并dev2分支到master
git checkout master
git merge dev2
复制
简易教程
简易的命令行入门教程:
Git 全局设置:
git config --global user.name "likyo"
git config --global user.email "xingchen.zhao@qq.com"
创建 git 仓库:
mkdir esp-idf
cd esp-idf
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin https://gitee.com/likyo/esp-idf.git
git push -u origin master
已有仓库?
cd existing_git_repo
git remote add origin https://gitee.com/likyo/esp-idf.git
git push -u origin master
复制
其他1
存在多用户先后提交的时候,去掉merge信息:
git rebase origin/dev
复制
其他2
合并某个分支的某次提交
git cherry-pick <commit-id>
复制
其他3
# 默认就是-mixed参数
git reset <commit-id>
# 回退至上个版本将重置HEAD到另外一个commit
# 并且重置暂存区以便和HEAD相匹配,但是也到此为止,工作区不会被更改
git reset --mixed HEAD^
# 回退至三个版本之前,只回退了commit的信息,暂存区和工作区与回退之前保持一致
# 如果还要提交,直接commit即可
git reset --soft HEAD~3
# 彻底回退到指定commit-id的状态,暂存区和工作区也会变为指定commit-id版本的内容
git reset --hard <commit-id>
复制
其他4
[1] 展示本地分支关联远程仓库
git branch -vv
[2] 列出所有远程分支
git branch -r
[3] 列出本地和远程分支
git branch -a
[4] 查看远程分支和本地分支的对应关系
git remote show origin
复制
其他5
同步远程仓信息
git remote update origin --prune
更新远程跟踪分支
git fetch origin
查看远程仓所有分支
git branch -a
创建分支 本地名称 远端名称
git branch dev3 origin/dev3
创建分支并切换到该分支
git checkout -b dev3 origin/dev3
复制
其他6
错误:git 当前分支 dev3 没有对应的上游分支
为推送当前分支并建立与远程上游的跟踪,使用
git push --set-upstream origin dev3
如果您想要为此分支创建跟踪信息,您可以执行:
git branch --set-upstream-to=origin/<远程分支> <本地分支>
复制
文章转载自嵌入式IoT笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。