开发中如何使用git来管理代码,以及如何与pycharm 结合使用

在开发中,很多公司一般都会用到git、svn、cvs等方式来管理代码。使用平台有很多,比如github、gitlab、码云、自己的服务器等。

介绍

代码版本管理工具

CVS代码版本管理工具

  • 解决了多个人协同开发,代码合并的问题,从服务器更新代码完成合并,降低了排查问题的难度,每次提交都有记录;
  • 新的问题:代码在服务器上同时存储了多个版本(完整),重复量过大,对服务器存储空间要求大。

SVN代码版本管理工具

  • 在实现CVS所有功能的基础上,实现了差异化管理,让服务的储存空间不再出现重复的代码,极大的节省了服务器空间。

git代码版本管理工具
全称:分布式版本控制系统
git支持分布式部署,可以有效、高速的处理从很小到非常大的项目版本管理。分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。

  • 相对于传统的SVN管理工具,去服务器,没有服务器的概念,每个开发人员的本地仓库既是开发端也是服务器,可以和另一个人完成代码同步和版本管理
  • 基于网络,突破了局域网的显示,可以让开发人员随时随地在任何时间办公,可以通过广域网完成代码的同步和版本管理
  • 基于本地,在没有网络的情况下,可以让代码在自己的本地仓库完成代码的同步和版本的管理,将不同功能不同批次的代码管理在不同的代码

代码版本管理平台

  • github:有私有和公共仓库,私有仓库一般收费
  • gitlab:可以免费搭建私有仓库,并且可以部署在自己的服务器
  • 码云:中国社区推出的基于git的代码托管平台

具体操作。

1、注册代码管理平台账号

      注册github:
官网:https://github.com/
      注册码云:
官网:https://gitee.com/
(以下操作一码云为例)

2、安装git

官方下载地址:https://git-scm.com/downloads
网盘链接:https://pan.baidu.com/s/1iKxNx_K6k5wH8Hy7DeFIoA 提取码:7xp3
安装步骤比较简单,一路下一步。注意地方:安装目录
测试是否安装好:右键可以看到如下图所示

git安装好后

3、配置环境变量

找到安装路径:D:/Git/usr/bin
并在环境变量里面添加路径:
我的电脑 --> 右键属性 --> 高级环境设置 --> 环境变量 --> 系统变量 --> Path里面添加

4、配置远程仓库开发人员

在桌面打开终端输入一下代码:(三次回车)

ssh-keygen -t rsa -C "码云账号"

解释:
    ssh-keygen:生成秘钥文件的命令
    -t rsa:指定秘钥的算法
    -C :添加开发人员身份
如果报不是内部或外部命令,说明环境变量添加有问题。

配置远程长裤开发人员

(此时,C:\Users\Administrator\下面会生成一个.ssh的文件,里面是私钥和密钥,如下如所示。)


公私钥列表

    然后打开C:\Users\Administrator.ssh\id_rsa.pub,复制其中的内容,添加到远程仓库的SSH秘钥列表

步骤
1.右上角下拉箭头,找到设置,点击进入

设置

2.左列在安全设置下面点击SSH公钥
ssh公钥

3.然后添加标题,添加公钥,点击确定即可
添加公钥

如果是注册的是github,前面步骤基本一样,这里步骤在github网站,右上角-->setting --->New SSH key-->SSH keys->添加公钥

5、git本地和远程仓库的交互

1.本地创建一个文件夹:作为本地仓库

2.进入文件夹,鼠标右击,使用git bash here 打开,使用git工具管理文件夹

3.配置git用户,执行命令配置

    git config --global user.name "起一个名字"
    git config --global user.email "码云账户"

解释:
         --global参数,用例参数,表示这台机器所有的git仓库都会使用这个配置

#查看自己的配置信息
git config --list

4.初始化仓库

  git init

执行命令,初始化这个文件夹,转换为本地仓库。此时出现了一个隐藏文件.git,跟踪管理版本库的文件,不要手动修改这个目录里面的文件。

HTTP方式

5.将远程仓库关联到本地仓库,执行命令,这里采用HTTP方式关联。

  git remote add origin https:地址

此地址是远程仓库的地址,如下图:

https关联地址

同步仓库信息
就是将平台上的文件拉取到本地文件夹内,实现平台与本地同步,执行如下代码:

  git pull --rebase origin master

6.现在来实现一下本地开发后将代码推送到远程平台
在本地仓库添加一个文件demo1.txt,输入一些内容,保存;
此时在Git Base Here开发工具中输入一下命令,可以查看版本管理状态

 git status

7.将文件添加到暂存区

git add demo1.txt

8.将暂存区的新文件,提交到本地仓库

git commit demo1.txt -m "基础代码1"

9.将本地仓库中的数据推送远程仓库

    git push origin master:master

解释:git push <远程主机名><本地分支名>:<远程分支名>

【注意】在要求输入用户名和密码的时候,输入错误可能会导致下次不再弹出输入用户名和密码的窗口,遇到此情况课通过以下代码解决:

  git config --system --unset credential.helper

解释:

  • 暂存区:临时存储代码的缓冲区域,暂存区的存在,是为例将非常频繁的小改动统一存储起来,等修改的代码成型可以提交了,再将暂存区的代码提交到本地仓库
  • 本地仓库:接受代码版本管理的一个仓库,方便开发人员在没有网络的情况下提交的数据依然接受版本管理
  • 远程仓库:一个多人协同开发的公共仓库,保持24小时在线,在最大程度上让所有开发人员在联网的第一时间同步到最新代码

SSH方式

采用SSH方式关联,将远程仓库关联到本地仓库
步骤:
1、在本地新建一个目录
【注】由于上面配置git用户时,采用了--global,所以这里就不要再配置了。

2、初始化仓库

 git init

3、拉取远程仓库完整项目

git clone 远程仓库链接地址

这次链接地址需要选择SSH,如下如:


SSH

4、拉取远程项目后,在本地仓库新建demo2.txt

5、通过如下代码查看版本管理状态

  git status

6、将文件添加到暂存区

 git add demo2.txt

7、将暂存区的新文件,提交到本地仓库

  git commit demo2.txt -m "新增demo2"

8、将本地仓库中的数据推送远程仓库

  git push 

此时只需要这一行代码即可,也不需要输入用户名和密码

分支创建即运用
  • 创建分支
  git  branch  分之名
  • 切换分支
  git  checkout  分支名
  • 查看分支
  git  branch
  • 在主分之下合并其他分支下的文件到主分支下
  ​git  merge  分支名
  • 删除分支
  ​git  branch  -d  dev

案例:

1、创建dev分支
    git branch dev
2、切换到dev分支下,并创建新文件或修改demo3.txt
    git checkout dev
3、查看状态
    git status
4、提交暂存区
    git add demo3.txt
4、提交本地仓库
    git commit demo3.txt
5、切换回主分之
    git checkout master
6、合并dev分支到master分支
    git merge dev
7、在主分之下推送到远程仓库
    git push
8、删除不需要的分支
    git branch -d dev
9、强制删除dev分支
    git branch -D dev 

【注意】在分支中添加修改文档后,需要添加到暂存区提交到到本地仓库,才会出现主分之和其他分支内部文件的差异。

版本回滚

在开发过程中,出现了代码问题,新提交的代码导致项目崩溃,git可以让代码回滚到上一个正常的状态。

  • 差异排查
git diff

解释:
如:-1,2 +1,4
修改前:从第一行开始,有两行发生变动
修改后:从第一行开始,有四行添加

  • 查看提交历史日志
git reflog/log 

reflog :简要信息
log : 详细信息

  • 版本回滚
    将先做版本回滚到9473dc93 这个版本
git reset --hard 9473dc93 

回退到此版本后,在此版本之后做的任何操作都会失效

版本冲突

什么是版本冲突
本地仓库有待提交的数据,和服务器上的数据不一致。

例如:A和B同时开发,都pull远程仓库的代码,A修改了demo1.py,提交并推送成功,B也修改了demo1.py,提交并推送,发现失败,产生了版本冲突,原因是推送前没有更新

原则:先更新,再提交,推送前先git pull获取最新代码,在合并,最后push提交

一旦发生冲突,需要手工合并,git用<<<<<<,=======,>>>>>>标记出不同分支的内容,我们修改后再提交本地数据。

制造冲突
git branch dev
git checkout dev
#在dev分支下修改1.txt 添加一行this is branch dev change
git add 1.txt
git commit 1.txt -m "branch dev change"
git checkout master
#在master分支下修改1.txt 添加一行this is master change
git add 1.txt
git commit 1.txt -m "master change"
git merge dev
此时查看1.txt,内容如下
this is first demo
<<<<<<< HEAD
this is master change
=======
this is branch dev change
>>>>>>> dev

冲突处理:
通过手动修改哪些留哪些去除

<1.txt修改后内容为>

this is first demo
this is master change
this is branch dev change

然后依次执行如下代码

git add 1.txt
git commit 1.txt -m "finall change"
git checkout master
git push origin master:master

【注意】以上合并发生冲突后,状态一直处于合并状态,在添加到本地仓库后,需要竟分支切换到推送文件夹下,才能进行推送。

Pycharm使用git

打开pycharm,选择环境变量:
file-->setting-->version control-->git-->Path to git
填入:c:\program files\git\cmd\git.exe

1、菜单栏vcs-->get from viersion control-->version control:git-->URL:码云clone地址-->选择一个本地仓库

2、新建demo4.py-->写入代码,右击-->git-->add-->commit file-->填写描述,然后commit-->repository-->push

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343