git简介
分布式版本控制系统。特点:分布式、强大的分支管理。
根据版本库位置,git由工作区、版本库(stage暂存区、master主分支组成)
git的使用
首次配置
$ git config --global user.name “xxx”
$ git config --global user.email “xxx@163.com”
//配置所有分支rebase
$ git config --global branch.autosetuprebase always
常规使用
克隆一个本地库,用于首次从远程库拉取
git clone [gitUrl] //克隆一个本地库
如果要创建本地库,以后同步到远程。
git init //初始化本地库
git提交
git add [fileName] //把文件添加到暂存区
git commit -m [desc] //把暂存区的所有内容提交到当前分支
git撤销修改
git checkout – [file] //撤销工作区的修改
git reset HEAD readme.txt //撤销暂存区的修改
git rest --hard [version] //回退到之前版本, [version]一般写版本hash值前7位
git查看
git status //查看仓库当前状态,查看修改
git log --pretty=oneline //从最近到最远的提交日志,加上oneline显示更加简洁
git reflog //查看命令历史, 以便确定要回到未来的哪个版本
git分支
git branch //查看分支
git branch<branchName>
//创建分支
git checkout<branchName>
//切换分支
git checkout -b<branchName>
//创建+切换分支
git merge<branchNmae>
//合并某分支到当前分支
git branch -d<branchName>
//删除分支
git push origin --delete<BranchName>
//删除远程分支
在编辑分支中有文件在修改,还未修改完成,需要创建一个bug分支。需要先保存现场,之后在切换回来恢复现场
git stash //保存现场,创建issue分支时,先把现场保存一下
git stash pop //恢复现场,并删除stash文件
git远程仓库
git pull; //拉去origin
git push (-u) origin master; //第一次加上 -u,和远程的关联起来
git remote add origin git@server-name:path/repo-name.git; //将本地库与远程库关联
git的地址说明
GitHub给出的地址不止一个,还可以用https://github.com/michaelliao/gitskills.git这样的地址。实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议
git高级
根据一个远程分支,创建一个本地分支。(拉取远程分支)
git checkout -b [localBranchName] origin/[romateBranchName]
查看远程所有分支git branch -r
推送分支到远程git push [origin] [localName:romateName]
//如果没有localName则远程与本地名字一致
要关联一个远程库,使用命令
git remote add origin git@server-name:path/repo-name.git;
配置rebase
使用git pull –rebase
可以使代码提交记录更整洁。
它的过程是先将HEAD指向origin/master,然后逐一应用本地的修改,这样就不会产生Merge branch提交了
每次都加 -rebase
有些麻烦,我们可以指定某个分支
# 指定master分支
$ git config branch.master.rebase true
指定所有分支
$ git config --global branch.autosetuprebase always
git的比较
在git add之前比较
git diff [file]
与版本库最新版本比较git diff HEAD -- [file]
将多个commit合并
git rebase -i [startpoint] [endpoint]
其中-i的意思是–interactive,即弹出交互式的界面让用户编辑完成合并操作,startpoint, endpoint表示范围(startpoint, endpoint], 不包含startpoint,包含endpoint.
git rebase -i HEAD~3
也可以使用这个,表示合并前三个,建议使用这种方式设置。
然后会打开交互界面,见下图,vi编辑即可,注意修改pick。然后再统一修改注释即可
git SSH配置
总共两步:
- 生成公私钥。这一步纯粹在git命令中可以实现(不管是
window
还是mac/Linux
)。如下命令行。参考Git-生成SSH公钥 - 将公钥配置到服务器。
# 切换到.ssh目录(略)
cd ~/.ssh
# 生成公私钥
# 生成公私钥-不指定文件名,默认名称为 id_rsa
ssh-keygen -t rsa -C "xxx@163.com"
# 生成公私钥-制定文件名,生成名称为id_rsa_df,对于需要多个公私钥对的需要生成多个
ssh-keygen -t rsa -C "xxx@qq.com" -f ./id_rsa_df
# 如果配置多个ssh, 需要配置config
touch config
vim config
# 配置信息如下:
# 公司git
# 域名地址的别名
Host git.xxx.com
# 这个是真实的域名地址
HostName git.xxxx.com
# 配置使用用户名
PreferredAuthentications publickey
# 这里是id_rsa的目录位置
IdentityFile ~/.ssh/id_rsa_df
# 默认是22,如果是其他端口,一定要配置
Port 2228
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
完成以上步骤后,需要测试下git是否通
ssh -T git@gitee.com
ssh -T git@github.com
参考此教程,git SSH 配置
问题解决
Git:解决报错:fatal: The remote end hung up unexpectedly
或者
error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 Request Entity
这是因为使用 http/https
上传,文件过大会出现中止。配置成SSH
可以解决。修改远程地址为ssh使用命令。
git remote set-url origin git@git.xxx:android_base/xxx.git