git简介
git是一个分布式版本控制软件,最初由林纳斯·托瓦兹(Linus Torvalds)创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。
Git 官方中文手册 https://git-scm.com/book/zh/v2
安装git
Linux安装
1、yum安装git
yum install git -y
2、编译安装
编译安装可以安装较新版本的git
Git下载地址: https://github.com/git/git/releases
# 安装依赖关系 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel # 编译安装 tar -zxf git-2.0.0.tar.gz cd git-2.0.0 make configure ./configure --prefix=/usr make make install
github托管
Github顾名思义是一个Git版本库的托管服务,是目前全球最大的软件仓库,拥有上百万的开发者用户,也是软件开发和寻找资源的最佳途径,Github不仅可以托管各种Git版本仓库,还拥有了更美观的Web界面,您的代码文件可以被任何人克隆,使得开发者为开源项贡献代码变得更加容易,当然也可以付费购买私有库,这样高性价比的私有库真的是帮助到了很多团队和企业。
1、注册GitHub
浏览器访问github官网 : https://github.com/ ,点击Sign up 进行注册
2、添加秘钥
在github上添加一个新的ssh密钥
获取主机(linux)上的密钥
[root@centos ~]# ssh-keygen
[root@centos ~]# cat .ssh/id_rsa.pub
3、创建仓库
准备工作已经完毕,右上角点击创建一个新的仓库
创建仓库,输入个人信息
根据上面的提示,创建一个代码仓库
4、使用实例
(1)配置git
git config --global user.name "ljy" #配置git使用用户 git config --global user.email "1129719492@qq.com" #配置git使用邮箱 git config --global color.ui true #语法高亮 git config --list # 查看全局配置 cat .gitconfig #查看生产的配置文件
(2)代码提交
[root@gitlab ~]# mkdir -p clsn [root@gitlab ~]# cd clsn/ [root@gitlab clsn]# echo "# test" >> README.md [root@gitlab clsn]# git init #初始化空的 Git 版本库于 /root/clsn/.git/ [root@gitlab clsn]# git add README.md #添加文件到暂存区 [root@gitlab clsn]# git status #查看添加进暂存区的内容 [root@gitlab clsn]# git commit -a -m "first commit" #-m提交的描述内容,-a表示直接提交,可以不加 #提交 [root@gitlab clsn]# git remote add origin git@github.com:datagd/test.git #添加新的远程仓库 #查看远端 git remote -v [root@gitlab clsn]# git push -u origin master
(3)代码删除
删除git内文件 没有添加到暂存区的数据直接rm删除即可。 已经添加到暂存区数据: git rm --cached database #→将文件从git暂存区域的追踪列表移除(并不会删除当前工作目录内的数据文件) git rm -f database #→将文件数据从git暂存区和工作目录一起删除
(4)代码拉取
客户端进行拉取 git push
pycharm使用Github管理项目
Github是我们首选的开源代码仓库,如果你没有私有仓库,并且不用保护代码,那么将项目上传到Github上是最佳的选择。
一、 创建requirements.txt文件
requirements.txt
文件是一个项目的依赖文件,可以通过下面的方式自动生成:
进入虚拟环境,切换到项目根目录下,使用pip工具的freeze参数。
pip freeze > ./requirements.txt
打开requirements.txt
文件,其内容如下:
Django==2.1.7 django-ranged-response==0.2.0 django-simple-captcha==0.5.10 Pillow==5.4.1 PyMySQL==0.9.3 pytz==2018.9 six==1.12.0 virtualenv==16.4.3
他人如果拷贝了我们的代码,要安装第三方库依赖的话,只需要:
pip install -r requirements.txt
就可以一次性安装好所有的库了。
二、创建.gitignore文件
在项目代码中,有一些文件是不能上传的,比如密码文件、数据库文件、核心配置文件等等,还有一些是不用上传的,比如临时文件。为了让git自动忽略这些文件,我们需要创建一个忽略名单。
在项目根目录下新建一个.gitignore
文件,这里可能需要你在Pycharm下安装ignore插件,如下图所示:
我这里是已经安装好了,新安装的话,要在搜索栏里搜索到插件后再安装。
在.gitignore
文件里写入下面的内容:
.idea settings.py db.sqlite3 mysite/__pycache__/
这些文件将不会上传到Github中,也不会进行版本管理。
三、特殊文件处理
对于settings.py文件有个问题,如果没有这个文件是无法运行Django项目的,但是settings中又可能包含很多关键的不可泄露的部分,比如SECRET_KEY:
# SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'b(&6i_$g2%8vh)ruu$)a9pkw+s-e&qj_e_#=@gnbo^48#gp_8a'
还有数据库的IP/port、用户名和密码,邮件发送端的用户名和密码,这些都是绝对不能泄露的。
那怎么办呢?简单!复制settings文件,并重命名为settings.example.py文件,放在同一目录里,把敏感信息、密码等修改或删除。使用者看到这个文件名,自然会明白它的作用。
四、添加说明文件和许可文件
通常我们要给Github的仓库添加说明文件和许可文件。
在项目根目录下创建一个README.md
文件,这是markdown格式的。在文件里写入项目说明,使用方法,注意事项等等所有你认为需要说明的东西。
对于许可文件LICENSE
,如果你暂时不想公开授权,或者不知道用哪种授权,可以暂时不提供。
下面是一个APACHE2.0授权的范例:
mysite - User login and register system Copyright 2017- www.liujiangblog.com Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
五、配置pycharm使用github
(1)配置pycharm
这一步很关键,很多同学配置完github就直接开始使用了,结果却是各种错误。
这是因为,除了配置github外还要配置本地的git软件。Github的配置只是告诉了Pycharm你的账号和密码,pycharm还不知道如何进行版本控制操作,它底层还是需要调用git的功能的。
因此,请提前下载并安装git程序到你的本机。 Windows中,可以使用Git-2.8.1-64-bit
,请自行百度下载并安装,然后设置。
安装完之后配置一下环境变量
六、上传代码
配置完了,就可以正常使用了,点击顶部菜单栏的VCS选项。
如果有如下报错,可以这样处理 git git config --global user.email you@example.com git config
--global user.name Your N... run_motor. PyCharm will ask if you want to add it to git; we’re using git to synchronize c...
在上传过程中,确认文件列表的时候,一定要注意查看没有保密文件被上传。
等待一会,项目文件上传完毕后,进入Github的仓库页面,如下所示:
现在,所有人都可以通过下面的方式,下载和使用本项目的源代码了:
https://github.com/datagd/python_project_1.git
gerrit场景
(1)在gerrit上提交代码,在patch未合并之前,本地文件丢失,从远程下载后继续修改,
并提交到之前的repository.
解决办法:
1、创建一个新目录并初始化 git init 2、 configure remote repository. run "git remote add gerrit https://Launchpad_id@review.openstack.org/openstack/tricircle.git" (Launchpad_id is your own launchpad id) 3、download the remote patch. run "git review -d patch_number". (patch_num is Change-Id) 4、then the remote files are downloaded to local respository. Just like the beginning of the your development. edit it as you planned. run "git add .". run "git commit -a --amend". #跟之前的代码合并提交的意思 run "git review".
常见问题
1、git无法添加远程仓库
liujinyuan@liujinyuan00 MINGW64 /d/Python_virtualenvs/QGW/mysite (master) $ git remote add origin git@github.com:datagd/blog.git fatal: remote origin already exists.
解决:
先删除远程 git 仓库 git remote rm origin 再添加