-1概述
git三种操作
从git读取数据
改动代码
将改动传回git
两个不同的repository
remote repository 远程库
local repository 本地库
0 前期准备
0.1 GitHub账号注册
在GitHub官网上直接注册账号就行了,要分清name和ID,比如我的username = xiaozhou
,但是ID = 135****569
,另外,Windows下还可以下gitHub 桌面版,是一个操作GUI界面,作用和git命令是一样的,很容易上手,也容易查看。
0.2 Git下载安装
我是在Windows下使用的git,也可以在官方Git下载直接下载就行了,中间正常安装一般不会出什么错,完成后,在任何一个文件夹点击鼠标右键,或者在所有程序中,都能看到以下两个选项:
(注:鼠标右键选项中没有git CMD)
0.3 一些配置
- 首先配置用户名和邮箱
我就是安装github
上的注册信息配置的,打开git cmd
,一般配置全局变量,使用
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
若后面忘了本地所配置的用户名和邮箱信息,也可以在git cmd
中查看和修改
git config user.name
git config user.email
- 将
git
(本地)和github
(远程)链接起来
为了不用每次从本地push
到远程时都输入账目密码,在本地生成一个SSH密码,包括公有和私有两个秘钥,我们将公有秘钥设置给github账号。同样,在git cmd
中使用如下命令:
ssh-keygen -t rsa
然后会提示你输入保存秘钥的文件夹、密码等一系列数据,我懒,就一直按回车,默认就行了,默认的存储目录为C:\User\user\.ssh
,是一个隐藏文件夹,打开可以看到
看到那个明显的.pub
文件了嘛,对,就是它,公有秘钥,用文本编辑器打开即可。然后在你的github--setting--SSH and GPG keys
中,将其添加进去就行啦。
1 将本地文件推送到Github(不同branch操作)
1.1 将本地库与远程库建立连接
在github中,进入你要推送到的repository中,在右上角有一个clone or download
选项,点开,可以看到一个https
的url
,这就是远程库的url,复制,然后在本地你要进行操作的项目文件夹下,git bash here
,(若未init,则需init)
git remote add origin https://github.com/1358304569/Temp_python
注:在未进行连接的状态下,进行push操作,会提示错误:
'origin' does not appear to be a git repository
1.2 本地版本管理
在本地项目文件夹下(已于github远程库连接),开发过程中可以进行以下几种操作:
git add **.py // 将文件加入暂存区,点.表示所有文件
git commit -m "titile" -m "description" //将暂存区的所有文件加入本地库中
git reset HEAD^ //回退到上一个commited的版本
git reset --hard 7ba74fxx //按版本号,强制回退
注:在commit
时,可以不加参数,直接打开编辑器操作,默认是vim。
1.3 将本地分支推送到远程库
- 新分支操作
git branch //查看所有分支
git branch newbranch //新建分支
git checkout newbranch //切换到此分支
git branch -d newbranch //删除分支
git branch -D newbranch //强制删除分支
- 从下图可以看出,在
commit
以后,本地默认创建了master分支,然后创建并切换到SRCC分支,从第三行到第四行的括号内容可以看到,branch已经由master转为SRCC了,此时查看分支可以发现,指针在SRCC分支上(最后一行)
- 进行推送
$ git push origin HEAD -u
$ git push origin branchname
此时再github的分支上就可以看到了。
第一次推送到master分支上时,使用
-u
参数:
git push -u origin master
2 将远程库拉到本地进行操作(同一分支)
2.1 本地初始化
在本地新建一个用于操作的文件夹,对其进行git init
初始化,用于存放从远程库中pull
下来的文件。
2.2 建立连接
git remote add origin https:xxx//git@xxx.git
2.3 进行pull操作
git pull origin master:master
pull操作有几种用法:
git pull origin <remote_branch>:<local_branch>
git pull origin <remote_branch>
git pull
详细区别和用法参考来源小志君的简书
在此处,尝试了两种连接方式 HTTPS
和SSH
,从HTTPS切换到SSH时,出了一点小问题,具体见最后一节问题汇总。
2.4 将更新push到远程
git push origin master
在本地进行编辑和add、commit后,将最新的版本推送到远程库
n-1 一些解释
1. origin/master是什么
-
origin
就是一个名字,当从本地clone
远程库时,git为你默认创建的、指向这个远程库的标签,指向的是repository
,但是master
只是这个repository中默认创建的第一个branch
,当你push的时候,因为origin和master都是默认创建的,所有可以省略,但是最好别偷懒,因为换一个branch的时候就难搞了。
origin/master----远程库名/分支名
2. -u 到底是干嘛的
有人说,加了参数-u后,以后即可直接用git push 代替git push origin master;
但真正使用上面,第一次进行push的时候才加u,后面不加,暂时不懂
n 一些问题
1. add file时出现fatal: Not a git repository (or any of the parent directories): .git错误
原因是没有进行git init
,导致没有生成.git
隐藏文件夹。
2. 新建分支时,出现fatal: Not a valid object name: 'master'错误
原因是没有提交一个对象,要先经过add``commit
等操作后才会真正建立master
分支,此时才可以建立其他分支。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
$ git push origin branchname
在本地仓库提交后推送到远程仓库
作者:Cloud_9527
链接:https://www.jianshu.com/p/0995b062396c
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
3. 在将本地分支推送到远程库时,出现fatal: TaskCanceledException encountered
原因未知,执行下列语句可以解决:
$ git config --global credential.helper manager
4. 在git commit 编辑title和description后,按Esc键后未推出编辑器
今天用git commit -m “注释”提交的时候,注释写错了。
首先 使用 git commit --amend 命令,(修改最近一次提交的注释信息),会进入到vim 编辑器,然后 你会发现编辑器里你怎么输入都没反应,这是因为vim处在不可编辑状态,按下字母键 c,此时进入编辑状态,可以开始修改注释信息了。
在然后 你会发现你怎么都退出不了,回到shell了,然后操作如下: ESC --》 退出编辑状态;接着 连续按两次大写字母键 Z,接着你会惊喜的发现,终于保存好退出来了!
windows 系统 ,亲测有效!!拿走不谢!
来源:月下小狸123的博客园
4.2 commit补充:在windows下的commit默认编辑器是,是TM啥啊,我也不知道,但是,打开Git CMD
通过下面语句将其改为vim
$ git config --global core.editor vim
,
以后就不会编辑后不知道咋退出啦。
5. git提示modified:xxx(modified content, untracted content)
原因:目录没有被跟踪;
解决:删除xxx目录下的.git文件夹即可继续操作
6. pull时提示The authenticity of host 'github.com (xx.xx.xx.xx)' can't be estabilished
因为默认是用HTTPS连接远程库和本地库,但git的连接方式有两种,还可以用ssh连接,我就手欠的试了一下ssh连接方式
就会出现以下错误
The authenticity of host 'github.com (52.xx.xxx.119)' can't be established.RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? //yes
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.
解决方案:需要进行git ssh 配置,登录github,进入要pull的项目中的setting,点击Deploy keys
,将本地的ssh 公钥添加进去,即可。
现在知道这是干嘛的了,so,以后还是老老实实用HTTPS吧。