git安装和配置:
一、安装git客户端,查看如下链接:
https://www.cnblogs.com/ximiaomiao/p/7140456.html
二、首次使用需要配置邮箱信息和密码,还需要生成ssh keys密钥,配置链接如下:
https://www.cnblogs.com/superGG1990/p/6844952.html
补充配置或修改密钥对:
1、新增或者修改已存在的密钥对
$ ssh-keygen -t rsa -C "your_email@youremail.com"
Creates a new ssh key using the provided email # Generating public/private rsa key pair.
Enter file in which to save the key (/home/you/.ssh/id_rsa):
直接按Enter就行。然后,会提示你输入密码,如下,直接回车不用输入:
Enter same passphrase again: [Type passphrase again]
完了之后,大概是这样:
Your public key has been saved in /home/you/.ssh/id_rsa.pub.
The key fingerprint is: # 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@youremail.com
到此为止,你本地的密钥对就生成了。
cat ~/.ssh/id_rsa.pub
查看秘钥对
2、登陆你的github帐户。点击你的头像,然后 Settings -> 左栏点击 SSH and GPG keys -> 点击 New SSH key
3、然后你复制上面的公钥内容,粘贴进“Key”文本域内。 title域,自己随便起个名字。
4、点击 Add key。
git使用https协议,每次pull, push都会提示要输入密码,使用git协议,然后使用ssh密钥,这样免去每次都输密码的麻烦。
初次使用git的用户要使用git协议大概需要三个步骤:
一、生成密钥对
二、设置远程仓库(本文以github为例)上的公钥
三、把git的 remote url 修改为git协议(以上两个步骤初次设置过以后,以后使用都不需要再次设置,此步骤视以后项目的remote url而定,如果以后其他项目的协议为https则需要此步骤)
在本地操作git,本地操作就是工作区,把文件git add到暂存区,git commit 后提交到git本地仓库,最后再push到git服务器上:
git的基本命令学习:
注:每一步都可以执行git status 查看文件的状态,通过git diff可以查看修改内容。
1、本地建一个文件夹,进入安装好的git Bash端,有两种方式关联git仓库:
进入文件夹目录: cd d:/cfw-test (文件夹中可以有文件也可以没有)
第一种方式:
○1从远程仓库克隆仓库到本地,<server> 是远程仓库地址,克隆后默认是主分支
git clone <server>
比如: git clone git仓库地址
第二种方式:
○2初始化本地目录为git仓库,然后用命令去关联远程仓库
git init
git remote add origin git仓库地址
如果远程仓库没有添加ssh密钥,远程仓库的地址就是http://开头的 (远程仓库添加ssh密钥,请参考)
2、查看本地仓库是否和远程仓库关联:
git remote -v
3、添加本地工作区内容到暂存区:
git add <文件名称>
或者用git add . .代表添加全部文件到暂存区
4、提交暂存区内容到本地仓库,建立版本库
git commit –m ‘注释’
比如git commit –m ‘20180815’
如下例子中git commit命令执行成功,1 file changed表示1个文件被改动;2 insertions表示插入了两行内容
5、本地分支默认是master,可以新建分支
git branch qinzhenxiatwo
查看本地所有分支,git branch
查看远程分支,git branch -a
目前是指向master分支
6、切换分支
git checkout qinzhenxiatwo
再查看分支,git branch 指向qinzhenxiatwo分支
7、从远程仓库拉取内容与本地仓库合并
git pull <分支名称>
从远程仓库某个分支中拉取内容到本地仓库分支中。如
git pull master
从远程master分支中拉取内容到本地仓库分支。
8、推送分支到远程仓库
git push origin <分支名称>
git push origin qinzhenxiatwo
origin是指远程仓库,远程仓库自动创建qinzhenxiatwo分支,并把本地仓库内容推送到远程仓库中。
9、总结
○1克隆远程仓库 git clone <server>
○2添加本地操作到暂存区 git add .
○3提交暂存区内容到本地仓库 git commit –m ‘20180815’
○4从远程仓库拉取内容与本地仓库合并 git pull <分支名称>
○5推送到远程仓库,默认是master分支,可以先创建分支,再推送
git branch <分支名称>
git checkout <分支名称>
git push orign <分支名称>
10、其他命令介绍:
10.1 git status命令
git status 检查当前工作区状态,git会告诉你该执行什么命令了
○1如下命令说明要添加test-git-status.txt文件,需要执行git add命令
○2如下命令说明.idea/workspace.xml文件修改,需要执行git add命令
○3如下命令说明要提交新加的文件到本地仓库
○4如下命令说明本地删除了文件,需要用git add命令或者git rm命令去添加到暂存区,再commit 更新版本库中内容
○5如下命令说明工作区是干净的不需要执行什么命令
10.2 git log命令
如下图红框中内容是每次commit的注释内容
git log命令显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是append GPL,上一次是add distributed,最早的一次是wrote a readme file。
如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:
10.3 版本回退
Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。
如下日志中是有两个版本,要回退到20180815001版本:
git reset --hard HEAD^
要想再回到20180815002版本,需要输入commitid,commitid就是上图log日志中开头的一长串的字段。不过只要输入前几位就行
git reset –hard 5a038
10.4 撤销修改
如下图中在test-git-statu.txt中添加了一个2,还没有添加到暂存区,这时可以撤销操作。
git checkout -- <文件名称>
还没有添加到暂存区做撤销修改可以用git checkout --<文件名称>命令。
如果提交到暂存区就需要用命令git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区。
git reset HEAD test-git-status.txt 把暂存区的修改撤销掉
cat test-git-status.txt 查看本地文件仍没有撤销修改
git checkout -- test-git-status.txt 撤销本地工作区操作再查看文件修改才撤销
要结合git checkout -- <文件名称>命令使用。
总结:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,git reset --hard HEAD^,不过前提是没有推送到远程库。
10.5 分支
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
注:切换到哪个分支,本地的仓库目录就显示哪个分支下的文件信息
10.6更新和合并分支
切换分支,从远程仓库分支拉取内容到本地仓库分支,这样你的工作目录中 就获取(fetch) 并 合并(merge)了 远端的改动:
git pull
要合并其他分支到你的当前分支执行:
git merge <branch>
两种情况下,git 都会尝试去自动合并改动。不幸的是,自动合并并非次次都能成功,并可能导致 冲突(conflicts)。 这时候就需要你修改这些文件来人肉合并这些冲突(conflicts) 了。改完之后,你需要执行如下命令以将它们标记为合并成功:
git add <filename>
在合并改动之前,也可以使用如下命令查看:
git diff <source_branch> <target_branch> 查看两个分支都改动了什么。
10.7仓库不一致问题
最开始我们在本地新建仓库,然后推送到远程,远程自动创建一个仓库,这样本地仓库和远程仓库是对应关系。如果我在本地再建一个仓库,关联远程仓库,git pull或者git push时就会提示是两个不同的仓库,提示fatal: refusing to merge unrelated histories。这时需要执行如下语句:
git pull origin master --allow-unrelated-histories
origin是远程仓库的意思,master是分支,可以写成其他的子分支也行。
10.8其他情况
假如你想要丢弃你所有的本地改动与提交,可以到服务器上获取最新的版本并将你本地主分支指向到它:
git fetch origin
git reset --hard origin/master
注:合并分支时,会出现冲突,可以多人去查看冲突信息,再提交。
10.9突破github的100M单个大文件上传限制
突破github限制,支持单个文件超出100M (使用 Git LFS)
这也是无意中浏览解决问题的方案时看到的 有关Google Maps SDK的问题
这里给了我们一件终极武器: Git LFS 全名为:Git Large File Storage-
Git LFS的官方网址在这里: https://git-lfs.github.com/,官网上有很详细的说明,现在来简单说下使用方式:先安装 Git LFS 的客户端,然后在将要push的仓库里重新打开一个bash命令行:
只需设置1次 LFS :
git lfs install
然后 跟踪一下你要push的大文件的文件或指定文件类型
git lfs track "*.pdf"
, 当然还可以直接编辑.gitattributes文件-
以上已经设置完毕, 其余的工作就是按照正常的 add , commit , push 流程就可以了 :
git add yourLargeFile.pdf
git commit -m "Add Large file"
-
git push -u origin master
参考链接:https://blog.csdn.net/miniykyk/article/details/54578839
10.10从版本库删除较大文件