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 HEADgit reset --hard [SHA bae128]
git log
#查看提交记录,英文模式下按q可退出git log#按照简洁的列表显示提交记录git log --oneline#按照时间顺序看loggit log --reverse --oneline#看5条Linus提交的记录git log --author=Linus --oneline -5
git pull
git pull <远程主机名> <远程分支名>:<本地分支名>git pullgit pull origin#将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并git pull origin master:brantest
注:git pull = git fetch + git merge
git pull = git fetch + git mergegit 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 dev2git 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分支到mastergit checkout mastergit merge dev2
简易教程
简易的命令行入门教程:Git 全局设置:git config --global user.name "likyo"git config --global user.email "xingchen.zhao@qq.com"创建 git 仓库:mkdir esp-idfcd esp-idfgit inittouch README.mdgit add README.mdgit commit -m "first commit"git remote add origin https://gitee.com/likyo/esp-idf.gitgit push -u origin master已有仓库?cd existing_git_repogit remote add origin https://gitee.com/likyo/esp-idf.gitgit 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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




