什么是Git?什么是Git的仓库与分支?
Git 主页上的定义:Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
意思是:Git是一个免费开源的分布式版本管理系统,它可以快速有效的处理大大小小的项目。其实Git就像是一个软件,这个软件帮助开发者们管理自己的项目版本进度。
Git的远程仓库
Git 并不像 SVN 那样有个中心服务器, 而且Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作,你就需要将数据放到一台其他开发人员能够连接的服务器上。所以一般说的远程仓库指的是远端的一个服务器,上面部署了当前项目Project,一个远程服务器上面可以部署很多个项目。
Git的远程分支
远程分支,又叫远程跟踪分支remote-tracking branch,是远程分支状态的引用,它们是你不能移动的本地引用,远程跟踪分支是你上次连接到远程仓库时,那些分支所处状态的标签,远程分支以(remote)/(branch)命名。
当你在本地执行git clone
时,会将远程仓库中所有的内容克隆下来,包括远程分支,并且远程分支会以/remote/origin/branchname这种方式自动命名。当需要切换到对应的远程分支时,只需要在本地仓库执行git checkout branchname
,这样不仅能够切换到对应的分支,而且git会帮你在本地建立一个分支branchname,它与远端分支/remote/origin/branchname之间是上下流关系。
Git的本地分支
Git作为一款版本管理工具,自然少不了在开发过程中建立多个开发分支。本地分支,顾名思义,指的是开发者在本地仓库建立的一个分支,通过在该分支上修改文件,达到开发目的。本地分支与远端分支之间没有对应关系,需要配置上下流关系,才能将本地分支的文件改动推送到远端分支。
常用的Git命令有哪些?
git clone repoURL
简单来说,git clone的repoURL就是以http或者ssh开头的网址,其实就是远程仓库的地址,也就是远程服务器地址+远程仓。
git clone
会完全克隆repoURL仓库中的内容,远程仓库中每一个分支都会在本地仓库生成对应的远程跟踪分支,这些远程跟踪分支在.git/refs/remotes/远程仓库名/下面,并在本地创建并检出远程分支上的当前分支
git checkout repo
git checkout -b repo
git status
git log
git add file
git commit -m "commit message"
git branch --set-upstream-to=="origin branch"
git push -u
git config --global user.name "xiaoming"
git config --global user.email "xiaoming@163.com"
git fetch
git peak
git reset --hard ^HEAD
git reset --hard commitId
git reflog
一般工作流程
- 在远端仓库建立对应的开发分支A
- 克隆远端仓库,如果本地已经有对应项目的git仓库,则需要切换到主分支(即master分支)执行
git pull
即可将远端已经建立的分支A拉到本地 - 在开发分支A上添加或修改文件
git add
和git commit
- 如果其他人修改这个分支,你需要更新分支内容,在当前分支执行
git pull
- 在提交前查看修改是否符合预期
git diff
- 提交修改到远端开发分支
git push -u
- 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交
git reset
等