Git 使用

您所在的位置:网站首页 origin怎么另存为到桌面 Git 使用

Git 使用

2023-06-02 19:55| 来源: 网络整理| 查看: 265

Pycharm 连接git 使用

Author : Chen_jia_wei

Github连接国外网站:  https://steampp.net/    这个叫Steam++ 免费的 可以打开github 还能摸鱼打游戏

python连接github连接,想的简单有点,就相当于一个云盘,存数据,取数据,没一点技术含量的东西

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目

查看是否安装git

which git

如果没有安装的话,则安装git

brew install git

1. 命令介绍

1.1 系统配置命令

跟linux命令一样

1.1.1 查看系统配置:git config -l

 

1.1.2 系统配置清单:git config --sysytem --list   

1.1.3 用户全局配置:git config --global --list

所有配置文件都保存在本地  可以去自己的C盘里面 搜索 gitconfig

1.1.4 配置自己的用户名:git config --global user.name "XXXXX"

1.1.5 配置自己的邮箱:git config --global user.email "[email protected]"

查看用户以及邮箱

git config user.name

git config user.email

1.2 基础操作命令

1.2.1 配置环境

pycharm 连接 github 添加秘钥

检查是否有秘钥:ls -al ~/.ssh

生产新的秘钥:ssh-keygen -t rsa -C "你可以设置你的邮箱"

测试:ssh -T [email protected]

1.2.2 git基础命令

git分支管理

不同环境的分支

不同版本的分支

1.2.2.1 创建一个仓库(repository)

这边仓库可以理解对应一个工程项目,下面分别出介绍创建一个新的仓库以及克隆(clone) 已有的一个仓库

1.2.2.2 新创建一个repository

首先 cd 进入到该工程项目根目录, 比如这个工程项目叫git-demo

1. 将该目录初始化为git仓库

git init

此时会在根目录下出现.git目录,该目录用作为对该仓库跟踪管理, 切记不要对该目录修改

2. 将根目录下指定文件添加到仓库, 比如我们以git-demo这个仓库下1.txt这个为例

git add 1.txt

你也可以一次 add 多个文件,比如 git add 1.txt 2.txt

当然也可以通过 git add . 将此目录下所有文件全部加入到git,但在不确定哪些文件需要加入到git仓库时请慎用此命令

很多时候我们不希望某些文件,比如编译之后生成的文件,日志以及部分文件虽然被我们更新过,可能只是临时修改且不希望提交到git里面,因此尽可能手动逐个add

3. 提交至本地仓库

git commit -m "这是本地提交的注释"

-m 后面需要带上说明,这样方便其他人查看说明

另外需要注意的是,add文件之后不一定要立马commit,你可以在多次add之后再commit也可以

4. 提交至远程仓库,目前远程仓库代码测试这边用的是gitlab管理

将本地仓库连接至某个远程仓库

git remote add origin http://gitlab.autotest.clickpaas.tech/qa/xxxx.git

目前自搭的gitlab ssh模式有问题,所以下面介绍以及使用中均先用http模式

推送至远程仓库

git push -u origin master

clone已存在的远程repository

首先cd进入到你存放项目的目录

clone远程仓库至本地

git clone http://gitlab.autotest.clickpaas.tech/qa/xxxx.git

1.2.2.3 常用命令

git branch     # 查看本地有哪些分支

git branch release/test  # 创建release/test分支,但不切换到该分支

git checkout release/test # 切换到release/test分支,但事先要有这个分支

git checkout -b release/test # 创建release/test分支并切换到该分支

写代码相关,请事先新建一个分支,严禁直接在本地master上进行代码编写

git add .  # 将当前路径下所有文件都追加到仓库(此时还未提交至本地仓库),注意在不明确的情况不建议这样追加所有文件

git add 1.txt 2.txt # 将当前1.txt, 2.txt文件追加到本地仓库(此时还未提交至本地仓库)

git commit -m "这是本次提交的注释" # 提交至本地仓库

git push origin release/test # 将当前分支提交至远程仓库的release/test分支,也可以提交至远程其他不同名的分支,但建议保持一致

1.2.2.4 提交代码冲突

提交远程仓库时,如果是多人共同维护此远程分支的话,此时可能有冲突

可将远程对应分支覆盖至本地,然后在本地解决冲突

git pull origin release/test # 将远程分支release/test拉取并覆盖至本地

本地解决冲突,人工修复之后再commit提交上去

另外还有一种情况,就是远程分支合并到远程master也可能有冲突,

这个时候需要将远程master最新的代码合并到当前分支,在本地解决冲突之后再提交至远程分支

有2种方式

1.2.2.4.1 方式1,先更新一下本地的master分支,然后将本地的master分支合并到本地当前的分支,解决冲突之后再提交

先切换到本地master,并拉取远程最新的master分支

git checkout master

git pull origin master

再切换到刚才开发分支,并将本地的master合并过来

git checkout release/test

git merge master

解决冲突之后,再提交至远程的开发分支release/test

1.2.2.4.2 方式2,直接在当前的开发分支上拉取远程的master分支,在本地解决冲突之后再提交至远程分支

git pull origin master

解决冲突之后,再提交至远程的开发分支release/test

其他命令

git reset --hard 分支名   # 回退到分支最新的版本

git log # 查看当前分支commit记录

git status # 查看哪些文件修改未被暂存,也就是哪些已被改动文件但未被add

git diff # 版本差异比较,如果需要指定文件的话,可以在后面加上文件名称

1.2.2.5 整合分支

1.2.2.5.1 合并(git merge)

可以先看这篇文章先理解下Git的合并:Git:合并分支----git merge命令应用的三种情景_Samven_7的博客-CSDN博客按照上图,这里是非快进的合并。整合分支最容易的方法是 merge 命令。 它会把两个分支的最新快照(C3 和 C4)以及二者最近的共同祖先(C2)进行三方合并,合并的结果是生成一个新的快照(并提交)。

命令:

Bash# 合并指定分支到当前分支 $ git merge 12

1.2.2.5.2 变基(git rebase)

其实,还有一种方法:你可以提取在 C4 中引入的补丁和修改,然后在 C3 的基础上应用一次。 在 Git 中,这种操作就叫做 变基(rebase)。 你可以使用 rebase 命令将提交到某一分支上的所有修改都移至另一分支上,就好像“重新播放”一样。

命令:

Bash# 将主题分支变基到目标分支上。# 即提取在上的补丁和修改,然后在的基础上应用一次。 $ git rebase   或者 $ git switch $ git rebase

1.2.2.5.3 用例子理解 合并(git merge)与变基(git rebase)的区别

 

1.2.2.5.4 合并(git merge)

Bash $ git switch master $ git merge experiment# 没有冲突时不需要下方的命令。有冲突时,就修改冲突文件,再add然后commit该文件,如下: $ git add readme.txt $ git commit -m "conflict fixed"123456

执行完上方的命令,达到下图效果:

此时可以删除dev分支:

 

Bash $ git branch -d dev1

1.2.2.5.5 变基(git rebase)

1、执行变基命令

Bash# 提取在 experiment分支 中引入的补丁和修改,然后在 master分支 的基础上应用一次。 $ git rebase master experiment         或者 $ git switch experiment $ git rebase master12345

GitHub 解决 Git 变基后的合并冲突_w3cschool

变基的原理是首先找到这两个分支(即当前分支 experiment、变基操作的目标基底分支 master) 的最近共同祖先 C2,然后对比当前分支相对于该祖先的历次提交,提取相应的修改并存为临时文件, 然后将当前分支指向目标基底 C3, 最后以此将之前另存为临时文件的修改依序应用。

执行完上方的命令,达到下图效果:

2、“快进”(无冲突)的合并

 

Bash $ git switch master $ git merge experiment12

执行完上方的命令,达到下图效果:

3、此时可以删除dev分支:

 

Bash $ git branch -d dev1

要用变基得遵守一条准则:如果提交存在于你的仓库之外,而别人可能基于这些提交进行开发,那么不要执行变基。也就是说,只对尚未推送或分享给别人的本地修改执行变基操作清理历史, 从不对已推送至别处的提交执行变基操作,这样,你才能享受到两种方式(变基 、 合并)带来的便利。

1.2.2.5.6 总结

这两种整合方法的最终结果没有任何区别,但是变基使得提交历史更加整洁。 你在查看一个经过变基的分支的历史记录时会发现,尽管实际的开发工作是并行的, 但它们看上去就像是串行的一样,提交历史是一条直线没有分叉。

一般我们这样做的目的是为了确保在向远程分支推送时能保持提交历史的整洁——例如向某个其他人维护的项目贡献代码时。 在这种情况下,你首先在自己的分支里进行开发,当开发完成时你需要先将你的代码变基到 origin/master 上,然后再向主项目提交修改。 这样的话,该项目的维护者就不再需要进行整合工作,只需要快进合并便可。

请注意,无论是通过变基,还是通过三方合并,整合的最终结果所指向的快照始终是一样的,只不过提交历史不同罢了。 变基是将一系列提交按照原有次序依次应用到另一分支上,而合并是把最终结果合在一起。

2. GIT 核心概念

2.1 工作区域

有三个工作区域,这个是必记的

一:工作目录(Working Directory) 平时放代码的地方

二:暂存区(Stage/Index)用于临时存放你的改动

三:资源库(Repository 或者Git Directory)仓库区/本地仓库,安全存放数据的位置,提交所有的版本的数据,HEAD指向最新放入仓库的版本

加上远程的git仓库就是第四个

四:远程仓库(Remote Diectory) 托管代码的服务器

2.2 转换关系

 

2.3 工作流程

 

 

3. GIT项目搭建

3.1 创建工作目录与常用指南

3.1.1 常用命令

 

有可能 只需要三个简单暴力命令

从工作目录 git add ./  到暂存区 git commit “第一次提交” 提交到本地仓库 git push 到远程仓库 so easy!

3.2 本地仓库搭建

3.2.1 初始化git

桌面右击点击 Git Bush Here,初始化一个项目 输入 git init  多了一个.git 文件

 

3.3 Git文件操作

在你写代码的目录当中,你新建了一个代码文件hello.py, 你就需要git add ./ 去给他添加到 暂时区  这样你的文件就被跟踪了,这种简单看一下 ,学习一下即可

 

3.4 查看文件状态

3.4.1 查看文件命令

查看指定文件状态:git status 【filename】

查看所有文件状态:git status

添加所有文件到占存区:git add .

提交暂存区中的内容到本地仓库 -m 提交信息:git commit -m

3.4.2 提交文件操作流程步骤

1、这是新建了一个文件 使用命令git status 查看

 

2、使用add.添加到占存区,在使用命令 git status 查看 你看文件有被跟踪

 

3、使用git commit -m 提交

 

3.4.3 忽略文件

有时候,我们不想将一些文件纳入版本控制,比如数据库,临时文件,设计文件等

在主目录建立".gitignore"文件,此文件有如下规则:

 

3.4.4 使用码云

3.4.4.1 注册登录码云,完善个人信息

3.4.4.2 设置本机绑定SSH公钥,实现免密码登录

   在你那个盘里面打开bash Here 里面输入 ssh-keygen -t rsa,这是你系统里面推荐的加密公钥,然后在你那个盘里面找到hub文件,将公钥复制到你的github 设置的ssh公钥里面

检查是否有秘钥:ls -al ~/.ssh

生产新的秘钥:ssh-keygen -t rsa -C "你可以设置你的邮箱"

测试:ssh -T [email protected]

3.4.4.3 将公钥信息public key 添加到码云账户即可!

3.4.4.4 使用码云创建一个自己的仓库

4. 走过的坑

SSL certificate problem: unable to get local issuer certificate

找到自己git文件,讲原来https 提交的更改为 ssl 方式提交

5. 扩展

什么是分支?

Git保存的不是文件的变化或者差异,而是一系列不同时刻的快照

在进行提交操作时,Git 会保存一个提交对象(commit object)。 该提交对象会包含一个指向暂存内容快照的指针,还包含了作者的姓名和邮箱,提交时输入的信息以及指向它的父对象的指针。 首次提交产生的提交对象没有父对象,普通提交操作产生的提交对象有一个父对象, 而由多个分支合并产生的提交对象有多个父对象。

分支在实际开发中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样既安全,又不影响别人工作。

什么是派生?

派生的意思就是分支支流,gitblit上的派生,实际上就是git的分支,主支是master

W3C git 基础使用:https://www.w3cschool.cn/githubcn/githubcn-cet43akv.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3