1 git
1.1 什么是 git
Git 是一个版本控制系统。版本控制是一种用于记录一个或多个文件内容变化,方便我们查阅特定版本修订情况的系统。
以前在没有使用版本控制的时候,我们通常在我们的项目根目录下这样命名项目:project_v1、project_v1.1、project_v2等,通过这种方式记录我们项目的不同版本的修改,有的时候我们还会在不同版本的文件中写一个说明,记录此版本项目新增、修改,删除等操作。
这样的操作是很繁杂的,有的时候还可能因为一些非人为因素导致文件丢失这样的事故。
有了版本控制系统,我们就不用再手动进行一些繁杂的操作,并且对于文件丢失这种事故我们也不用再担心,你可以随便回到历史记录的某个时刻。
早期出现的版本控制系统有:SVN、CVS等,它们是集中式版本控制系统,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同合作的开发人员都通过客户端连接到这台服务器,取出最新的文件或者提交更新。
1.2 分布式版本控制系统
集中式版本控制系统,版本库是集中存放在中央服务器的,工作的时候,用的是自己的电脑,所以,我们首先需要从中央服务器上拉取最新的版本,然后开始工作,等工作完了,再把自己的工作提交到中央服务器。
集中式版本控制系统的一个最大问题就是必须联网才能工作,所以对于网络环境比较差的情况使用集中式版本控制系统是一件比较让人头疼的事情。
分布式版本控制系统没有中央服务器的概念,我们使用相关的客户端提取的不只是最新的文件,而是把代码仓库完整地镜像下来,相当于每个人的电脑都是一个完整的版本库,这样的话,任何一处协同工作的服务器出现故障,都可以用任何一个镜像出来的本地仓库恢复。并且,即便在网络环境比较差的情况下也不用担心,因为版本库就在本地电脑上。
1.3 安装git
(1)安装路径D:\Program Files\Git
(2)配置环境变量
(3)git --version查看版本
(4)start a working area
clone :Clone a repository into a new directory。
init:Create an empty Git repository or reinitialize an existing one。
(5)work on the current change (see also: git help everyday)
add Add file contents to the index
mv Move or rename a file, a directory, or a symlink
restore Restore working tree files
rm Remove files from the working tree and from the index
sparse-checkout Initialize and modify the sparse-checkout
(6)examine the history and state (see also: git help revisions)
bisect Use binary search to find the commit that introduced a bug
diff Show changes between commits, commit and working tree, etc
grep Print lines matching a pattern
log Show commit logs
show Show various types of objects
status Show the working tree status
(7)grow, mark and tweak your common history
branch List, create, or delete branches
commit Record changes to the repository
merge Join two or more development histories together
rebase Reapply commits on top of another base tip
reset Reset current HEAD to the specified state
switch Switch branches
tag Create, list, delete or verify a tag object signed with GPG
(8)collaborate (see also: git help workflows)
fetch | Download objects and refs from another repository |
pull | Fetch from and integrate with another repository or a local branch |
push | Update remote refs along with associated objects |
2 gitHub和GitLab
网址https://github.com/
2.1 拉取远程代码
(1)新建一个空目录,目录名为test
(2)进入目录名中,>git init初始化
(3)>git remote add origin 地址.git
与远程仓库建立连接用origin代指远程地址。
(4)>git fetch origin master(master为远程仓库的分支名)把远程分支拉到本地
弹窗输入用户名和密码username和password
为解决每次输入的问题,可以进行配置
git config --global user.name “用户名”
git config --global user.email “邮箱”
(5)在本地创建分支master并切换到该分支
git checkout -b master(本地分支名称)
(6)把某个分支上的内容都拉取到本地
git pull origin master(远程分支名称)
(7)回到本地文件夹test查看,已完成拉取远程某个分支到本地
2.2 创建本地分支dev和master
在dev中操作后,切换回master,合并,推送。
git checkout -b dev创建并切换
git branch dev创建
git checkout master切换
git merge dev合并
git branch命令查看当前分支
2.3 配置SSH key
git clone -b 指定分支名称 项目ssh地址
git clone 项目ssh地址
问题解决Please make sure you have the correct access rights and the repository exists.
(1)在git设置一下身份的名字和邮箱
git config --global user.name "yourname"
git config --global user.email "your@email.com"
注:yourname是你要设置的名字,your@email是你要设置的邮箱。
(2)git bash输入命令
ssh-keygen -t rsa -C "your@email.com"(请填你设置的邮箱地址)
直接按下回车,然后系统会自动在.ssh文件夹下生成两个文件,
id_rsa和id_rsa.pub,用记事本打开id_rsa.pub,将全部的内容复制。
windows中C:\Users\user\.ssh。
把[c盘->用户->自己的用户名->.ssh]目录下生成好的公钥
"id_rsa.pub"文件以文本打开复制放进 key输入框中。
(3)打开gitHub或GitLab,登陆你的账户,进入设置,进入ssh设置
点击add ssh key
2.4 推送
(1)git pull 失败 ,提示:fatal: refusing to merge unrelated histories
其实这个问题是因为 两个根本不相干的 git 库, 一个是本地库, 一个是远端库, 然后本地要去推送到远端, 远端觉得这个本地库跟自己不相干, 所以告知无法合并。
具体的方法, 是从远端库拉下来代码 ,本地要加入的代码放到远端库下载到本地的库, 然后提交上去 , 因为这样的话, 你基于的库就是远端的库, 这是一次update了
(2)注意:如果报以下异常
【fatal: remote origin already exists.】
git remote rm origin
(3)注意:如果报以下异常
问题描述:Git在推送项目时报错:fatal: The remote end hung up unexpectedly。
问题原因:推送的文件太大。
解决方法:修改设置git config文件的postBuffer的大小。(设置为500MB)
git config --local http.postBuffer 524288000
(4)将要上传的文件拷贝进来
git add .【添加】
git commit -m “Initial commit”【提交】
git push -u origin master【推送】
3 pycharm
(1)pycharm设置git和github
Files->Settings->Versions Control->Git->D:\Program Files\Git\bin\git.exe
Files->Settings->Versions Control->GitHub->XXXXX@qq.com;bing@1992
(2)pycharm中文件颜色区分
新建未add的文件颜色是红色的
add之后是绿色的
做过修改是蓝色的
忽略的文件是灰黄色的
(3)创建github上仓库
(3-1)先本地创建git仓库
VCS->Import into Version Control->Create Git Repository【会弹窗询问是否在指定目录进行git init操作】
添加
提交
3.1 直接拉取远程仓库
(1)使用http链接
如果是public可以直接拉取
http://10.26.10.201/rulebuilder/rb-alg.git
私有仓库Clone failed拉取失败
Unable to update url base from redirection:
asked for: http://10.26.10.201/rulebuilder/rb-alg.git/info/refs?service=git-upload-pack
redirect: http://10.26.10.201/users/sign_in
(2)使用ssh链接
通过SSH方式拉取推送项目代码必须要导入SSH key。
git@10.26.10.201:rulebuilder/rb-alg.git
默认显示master分支,通过pycharm右下角切换分支。