一,git 简介
谈到git,其实分两部分,一是git工具,二是git使用的传输协议,主流的传输协议(应用层协议)有:ssh、http、git(基于传输层TCP)
二,git 操作
git 克隆代码仓
git clone + url
git 配置
git config --global user.name "your name"
git config --global user.email "your_email@youremail.com"
git 提交代码
git add + 文件
git add + 目录
git commit -m “内容” 或者 git commit 进入内容编辑界面
git push + <远端主机名> + <本地分支名>:<远程分支名>
gerrit下提交代码
在git push时,需要根据gerrit的要求,进行选择:
1,需要review
refs/for/[branch]
git push origin HEAD:refs/for/<远程分支名>
HEAD:指向当前分支最新的修改
2,不需要review
refs/heads/[branch]
git push origin HEAD:refs/for/<远程分支名>
git 修改提交记录
git commit --amend
使用 git commit --amend 直接修改上一次的 commit message
git rebase -i
git rebase -i [start-commit ] [end-commit]
(start-commit, end-commit] 前开后闭区间,默认 end-commit 为当前 HEAD
git拉取/更新代码
git pull
git分支操作
1,查看当前分支
git branch -a
2,创建和远程分支对应的本地分支
git checkout -b + 分支名 + 远程分支名
3,切换分支
git checkout + 分支名
git 查看远程仓库地址
git remote -v
git 查看提交记录
git log
git 查看当前仓库状态
git status
git 查看差异
git diff + 文件/目录
git 暂存区操作
git ls-files
查看暂存区:
–cached(-c)显示暂存区中的文件,git ls-files命令默认的参数
–deleted(-d)显示删除的文件
–modified(-m) 显示修改过的文件
–other(-o)显示没有被git跟踪的文件
–stage(-s) 显示mode以及文件对应的Blob对象,进而我们可以获取暂存区中对应文件里面的内容
git 放弃当前工作区代码
git checkout + 文件路径(如果是放弃当前目录所有修改,可使用“.”)
git 将当前工作区修改的代码缓存/释放
例如:在分支1的修改,先git stash 缓存,切换到分支2后,再git stash释放出来
git 将当前分支的修改暂存,并释放到其他分支
git stash save “暂存改动的描述”
git checkout <目标分支>
git stash apply
git 将本地分支与远程分支对齐
git branch --set-upstream-to=origin/ <local_branch>
git 将本地仓库状态重置到某个节点的状态(可以是远程仓库的节点也可以是本地的)
远程
git reset --hard origin/
本地
git reset --hard HEAD
三,repo
初始化
repo init -u + url -b + 分支名
同步
repo sync
将所有git仓恢复最初状态
repo forall -c “git reset --hard HEAD”
将所有git仓清理
repo forall -c “git clean -df”