Git 是什么
非常简单地说,Git 是一个快速、可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系统提供了高级操作和完全访问。所谓版本控制系统 (VersionControl System),从狭义上来说,它是软件项目开发过程中用于储存我们所写的代码所有修订版本的软件,但事实上我们可以将任何对项目有帮助的文档交付版本控制系统进行管理。
为什么使用版本控制系统
版本控制系统是为懒人准备的,它让懒人们比那些善于备份文档的勤劳人拥有更干净的文件系统以及更多的可以活着的时间。
git常用命令
master :默认开发分支 Head(当前版本) : 默认开发分支origin :默认 远程版本库 Head^ : Head 的父提交(上个版本) Head^^ : (上上个版本)
创建版本库:
$ git clone (仓库地址) #克隆远程版本库
$ git init #初始化本地版本库
修改和提交:
$ git status #命令用于查看在你上次提交之后是否有对文件进行再次修改。
$ git diff #命令比较文件的不同,即比较文件在暂存区和工作区的差异。
git diff 有两个主要的应用场景。
- 尚未缓存的改动:git diff
- 查看已缓存的改动: git diff --cached
- 查看已缓存的与未缓存的所有改动:git diff HEAD
- 显示摘要而非整个 diff:git diff --stat
$ git add #添加文件到暂存区
- 添加一个或多个文件:git add [file1] [file2] ...
- 添加整个目录下的文件:git add [dir]
- 添加所有更改问价:git add .
$ git mv #重命名文件
例如:git mv README README.md
README修改为README.md
$ git rm #删除文件
当我们需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了, 可以使用: git rm file_path(文件名)
当我们需要删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制, 可以使用: git rm --cached file_path(文件名)
$ git commit -m '提交日志备注' #提交到本地暂存区
$ git commit --amend #下次提交时不想保留上一次的记录;或者你上一次的commit message的描述有误。进行修改
$ git reset --hard HEAD #回退版本(每次提交本地暂存区都有版本号)可以回退到指定版本
$ git log #查看提交历史(有head值版本号)
$ git checkout (分支名) #切换本地分支
$ git checkout -b (分支名) #创建新分支
$ git checkout -b (分支名) origin/(分支名) #创建本地分支并推送到远程仓库 (远程仓库已经建好的情况下)
$ git push --set-upstream origin 分支名 # 推送到远程仓库 (远程仓库没有,推送到远程创建远程分支)
$ git revert #撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销.版本会递增,不影响之前提交的内容
$ git branch #查看当前本地分支
$ git branch -r #查看远程分支
$ git branch -a #查看所有分支
$ git branch -d #删除本地分支
会在删除前检查merge状态(其与上游分支或者与head)。
$ git branch -D #是git branch --delete --force的简写,它会直接删除。
$ git tag #打标签 Git 可以给仓库历史中的某一个提交打上标签,以示重要。
$ git tag -d #删除标签
$ git push origin --delete (分支名) #删除远程分支
合并与衍合:
$ git merge #合并指定分支到当前分支
$ git rebase #衍合指定分支到当前分支
远程操作:
$ git remote -v #查看远程版本库信息
$ git remote show #查看指定远程版本库信息
$ git remote add #添加远程版本库
git remote #删除添加的远程地址
$ git fetch #从远程库获取代码
$ git pull #下载代码及快速合并
$ git push #上传代码及快速合并
$ git push --tags #上传所有标签
$ git stash #隐藏到暂存区
$ git stash pop #释放
注意事项:git clone只能clone远程库的master分支,无法clone所有分支,解决办法如下:
- 找一个干净目录,假设是git_work
- cd git_work
- git clone myrepo.xxx.com/project/.gi… ,这样在git_work目录下得到一个project子目录
- cd project
- git branch -a,列出所有分支名称如下:
remotes/origin/dev remotes/origin/release
- git checkout -b dev origin/dev,作用是checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支
- git checkout -b release origin/release,作用参见上一步解释
- git checkout dev,切换回dev分支,并开始开发。 9.添加远程仓库
git remote add origin https://github.com/balaba/balabala.git10.本地仓库也远程仓库关联
git branch --set-upstream-to=origin/master master
设置git push和pull的默认远程分支
git branch --set-upstream-to=origin/master mastergit pull
一.当推送到服务器时首先要添加远程地址的
git remote add origin https://gitee.com/kingCould/HelloWord.git
二.查看本地添加了哪些远程地址
$ git remote -v
origin https://github.com/zhidao/crm.git (fetch)
origin https://github.com/zhidao/crm.git (push)
sdorigin https://github.com/zhidao/erp.git (fetch)
sdorigin https://github.com/zhidao/erp.git (push)
三.删除本地指定的远程地址
git remote remove origin 删除即可
1.切换新分支(需要推送到另外的git仓库) 需要分离代码到其他的仓库
2.git remote add bnbOrigin (仓库名) git@gitee.com:syc_home_yf/md-bnb-mini.git
3.git push -u bnbOrigin bnb-mini (推送到远程仓库的分支)
拉取分支创建分支上传 git checkout -b develop
git push -u origin develop
Git撤销本次pull rebase(变基) 回退到pull前的代码
1.输入命令查看本地记录
git reflog
列表记录:
2.找到本次rebase之前的id
3.执行命令回退
git reset --hard ca606c6
4.执行命名取消rebase状态
git rebase --abort