git与svn对比
- svn 集中式版本控制系统,版本库集中放在中央服务器,需要自己电脑从上边下载再提交
- git 分布式版本控制系统,分为本地仓库和远程仓库
git工作流程
- 从远程仓库克隆到本地仓库
- 在本地仓库中checkout代码然后进行代码修改
- 再提交前先将代码提交到暂存区
- 提交到本地仓库,呢美的仓库保存修改的历史版本
- 修改完成时,需要和团队成员共享代码时,将代码push到远程仓库

git代码托管服务
- Github
- Gitee(码云)
- GitLab
git常用代码
- 环境配置
git config --global user.name
git config --global user.email
git config -list
git config user.name
- 通过上述命令设置的信息会保存在~/.gitconfig文件夹中
- 获取Git仓库
git init
git clone 远程仓库地址
- 本地仓库操作
git status
git status-s//输出信息更加简洁
git add 文件名称
git reset 文件名称
git commit -m " init hello.txt"//-m是要记录日志""内部记录修改内容
git rm 文件名称
//不通过git命令删除需要将操作添加到缓存区
git add 文件名称
- 将文件添加到忽略列表 touch.gitignore
*.a //忽略所有以.a结尾的文件
!lib.a//除了lib.a文件以外的.a结尾文件
/TODO//当前文件下叫TODO的文件需要忽略
//build/表示build文件夹下所有文件需要忽略
build/
dog/*.a//忽略dog目录下以.a结尾的所有文件
dog/**/*.pdf//忽略所有dog目录、子目录下PDF结尾文件
git log// q退出界面
- 远程仓库操作
git remote
git remote -v//列出具体仓库地址
git remote add 库名 地址
git remote re 库名//只是从本地移除,并不会对远程仓库产生影响
git fetch//从远程仓库获取到最新版本,不会合并到本地仓库
// 手动合并
git merge 库名 分支名
git pull//从远程仓库获取到最新版本并合并到本地仓库
// 如果本地仓库是自己建立不是克隆,有重名会报错,需要加入参数
git pull -allow-unrelated-histories
git push 库名 分支名
- Git分支
//列出所有本地分支
git branch
//列出所有远程分支
git branch -r
//列出所有本地和远程分支
git branch -a
//本地创建
git branch 分支名
git checkout 分支名
git push 库名 分支名
git merge 需要合并进来的分支名
//不同分支同一文件同一部分做出不同修改,合并后会报错,需要打开冲突文件修复冲突内容,最后git add 来标识冲突已解决
git branch -d 分支名
//如果分支做出修改,-d不生效,用-D
git branch -D 分支名
git push origin -d 分支名称
- Git标签
//列出所有标签
git tag
//查看标签信息
git show 标签名
git tag 标签名
git checkout -b 分支名 标签名
//删除本地标签
git tag -d 标签名
// 删除远程标签
git push origin :refs/tags/标签名