git基础实践
Git 是 Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
git常用命令
列出当前配置
1
git config --list
列出repository配置
1
git config --local --list
列出全局配置
1
git config --global --list
列出系统配置
1
git config --system --list
配置用户名
1
git config --global user.name "your name"
配置用户邮箱
1
git config --global user.email "youremail@github.com"
配置git命令输出为彩色
1
git config --global color.ui auto
查看当前工作区的所有文件的状态
1
git status
查看提交历史:
1
git log
参数-p展开每次提交的内容差异,如-2显示最近的两次更新
1
git log -p -2;
提交工作区所有文件到暂存区
1
git add .
删除工作区文件并且也从暂存区删除对应文件的记录
1
git rm <file1> <file2>
比较工作区中当前文件和暂存区之间的差异
1
git diff <file-name>
隐藏当前变更
1
git stash
查看当前所有的储藏
1
git stash list
应用最新的储藏
1
git stash apply
将暂存区中的文件提交到本地仓库
1
git commit -m "commit_info"
将所有已经使用git管理过的文件暂存并提交,相当于执行git add和git commit
1
git commit -a -m "commit_info"
撤销上一次提交
1
git commit --amend
比较暂存区与上一版本的差异
1
git diff --cached
指定文件在暂存区和本地仓库的不同
1
git diff <file-name> --cached
列出现在所有的标签
1
git tag
使用特定的搜索模式列出符合条件的标签
1
git tag -l "v1.*"
创建一个含附注类型的标签,加-a参数
1
git tag -a v1.4 -m "my version 1.4"
使用git show命令查看相应标签的版本信息
1
git show v2.0
将标签推送到远程仓库中
1
2git push origin
eg: git push origin v2.0将本地所有的标签全部推送到远程仓库中:
1
git push origin --tags
创建分支
1
git branch <branch name>
切换分支
1
git checkout <branch name>
创建并切换到分支
1
git checkout -b <new branch name>
删除分支
1
git branch -d <branch name>
将当前分支与指定分支进行合并
1
git merge <another branch name>
显示本地仓库的所有分支
1
git branch
显示各个分支最新一次提交对象的信息
1
git branch -v
查看哪些分支已经合并到了当前分支
1
git branch --merged
查看哪些分支还没有合并到当前分支
1
git branch --no-merged
把远程分支合并到当前分支
1
2
3git merge <remote-name>/<branch name>
eg:
git merge origin/devel在远程分支的基础上创建新的本地分支(跟踪分支)
1
2
3git checkout -b <branch name> <remote-name>/<branch name>
eg:
git checkout -b devel orgin/devel查看本地仓库关联的远程仓库,-v参数会显示远程仓库的url地址
1
2git remote
git remote -v添加远程仓库
1
2
3git remote add <remote-name> <url>
eg:
git remote add blog https://github.com/blog/blog.git从远程仓库中拉取更新
1
2git fetch <remote-name>
git fetch origin- git fetch 只会讲远端数据拉到本地仓库,并不会自动合并到当前工作分支,需要人为合并,如果设置了某个分支关联到远程仓库的某个分支可以使用
git pull
来拉取远程分支的数据自动合并到当前分支;
- git fetch 只会讲远端数据拉到本地仓库,并不会自动合并到当前工作分支,需要人为合并,如果设置了某个分支关联到远程仓库的某个分支可以使用
将本地仓库分支推送到远程仓库
1
2git push <remote name> <branch name>
git push origin master将本地分支推送到远程仓库不同名分支
1
git push <remote name> <local branch>:<remote branch>
删除远程分支(本地内容为空)
1
2git push <remote name> :<remote branch>
git push origin查看远程仓库的详细信息
1
git remote show origin
修改远程仓库在本地的简称
1
2git remote rename <old name> <new name>
git remote rename origin ori移除远程仓库
1
git remote rm <remote name>
git clone 指定分支:
1
git clone -b stable-2.2 https://github.com/ansible/ansible-modules-core.git
git 回滚版本
1
2git reset --hard sha
git push origin HEAD --force合并到主分支
git rebase和git merge的区别
常见报错处理
报错内容
1
2
3
4
5
6
7
8
9
10
11fatal: unable to access 'https://github.com/xxxx/xxxx.github.io.git/': SSL certificate problem: self signed certificate in certificate chain
FATAL Something's wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.html
Error: fatal: unable to access 'https://github.com/xxxx/xxxx.github.io.git/': SSL certificate problem: self signed certificate in certificate chain
at ChildProcess.<anonymous> (H:\hexo-Blog\node_modules\hexo-util\lib\spawn.js:37:17)
at emitTwo (events.js:126:13)
at ChildProcess.emit (events.js:214:7)
at ChildProcess.cp.emit (H:\hexo-Blog\node_modules\cross-spawn\lib\enoent.js:40:29)
at maybeClose (internal/child_process.js:925:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)- 解决方法
1
git config --global http.sslVerify false
- 解决方法
报错内容
1
2Cloning into 'jplot'...
fatal: unable to access 'https://github.com/rs/jplot.git/': Peer certificate cannot be authenticated with known CA certificates- 解决方法
1
git config --global http.sslVerify false
- 解决方法
.gitigore不生效
.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
解决方法就是先把本地缓存删除(改变成未track状态)
1
2
3git rm -r --cached .
git add .
git commit -m 'update .gitignore.gitginore规则示例
1
2
3
4
5
6# 注释内容 井号开头为注释内容
*.md # 忽略所有 .md 结尾的文件
!readme.md # 但 readme.md 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 source/TODO
node_modules/ # 忽略 node_modules/ 目录下的所有文件
public/*.html # 会忽略 public/index.html 但不包括 public/2019/index.html
gitlab api操作
1 | https://gitlab.local/api/v4/projects?search=roadrescue1 |