Git使用总结

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。然后再统一修改注释即可
squash合并

git SSH配置

总共两步:

  1. 生成公私钥。这一步纯粹在git命令中可以实现(不管是window还是mac/Linux)。如下命令行。参考Git-生成SSH公钥
  2. 将公钥配置到服务器。
# 切换到.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

参考资料

廖雪峰git教程
使用rebase合并多个commit
git SSH 配置
Git高级之配置多个SSH key

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值