Fork me on GitHub

git的基本使用

一:介绍

1 什么是git?

​ 是一种用于协同开发的版本管理工具。

2 git能干什么?

完成协同开发项目,帮助程序员整合代码。

  • 帮助开发者合并开发的代码
  • 如果出现冲突代码的合并,会提示后提交合并代码的开发者,让其解决冲突。

两种git软件:SVN、Git

  • SVN (集中式管理)
  • GIT (分布式管理、协同开发、版本管理)

常用的git版本控制器管理代码的公共平台

  • github
  • gitee

3 github、gitee、gitlab的区别

  • Github:一般开源的代码都放在github,代码托管平台(公有仓库、私有仓库),公司代码一般不会放在上面。
  • Gitee:中国版本的github,开源代码放在共有仓库,有一部分公司的代码会托管到gitee的私有仓库。
  • Gitlab:公司自己搭建的github,公司内部自己访问(可以用Docker拉1个gitlab的镜像跑起来)

4 工作流程

① 工作区:工作的目录,文件夹下,存放一些文件,文件中写内容。

② 暂存区:工作区的更改,提交到暂存区(在暂存区临时存储)。

③ 版本库:本地文件,内容变更记录。

5 提示信息

  • 有红色信息(工作区有内容,没有被提交到暂存区),就执行 add
  • 全绿信息(内容全部在暂存区),才执行 commit
  • 只有被版本库控制的代码,才能被监听,所以可以回滚到任何一个版本

二:核心操作

1 初始化仓库

让当前路径被git管理起来

arther-wandeMacBook-Pro:luffycity arther_wan$ git init
Reinitialized existing Git repository in /Users/arther_wan/Desktop/test/luffycity/.git/

# 在当前路径下创建darker文件夹,并被git管理
arther-wandeMacBook-Pro:luffycity arther_wan$ git init arther
Initialized empty Git repository in /Users/arther_wan/Desktop/test/luffycity/arther/.git/
.git目录默认隐藏,可以通过命令ls -ah查看

2 把文件添加到暂存区

添加指定文件

git add 文件名

一次添加所有文件

git add .

3 提交暂存区内容到版本库

git commit -m '本次提交的说明'

4 把项目提交到(远程)存储

git push

5 撤销暂存区提交:add的逆运算(很少使用)

① 撤销所有暂存区的提交
git reset HEAD .
git reset .
② 撤销某一文件的暂存区提交
git reset 文件名

6 过滤文件

项目中添加过滤文件,加了之后,被过滤的文件/文件夹就不被git管理了
在项目下新建.gitignore文件(编写过滤规则#表示注释
  • 忽略某个文件夹(写文件夹名):node_modules
  • 忽略某个文件(写文件名):.DS_Store
  • 忽略以npm-debug.log开头的所有文件:npm-debug.log*
  • 忽略以.sln结尾的所有文件:*.sln
  • 忽略a文件夹下的aa.txta/aa/txt
  • .gitignore是要被管理起来的
.gitignore 文件
1.在仓库根目录下创建该文件
2.文件与文件夹均可以被过滤
3.文件过滤语法
②过滤文件内容
1.文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
2.文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤
③eg:
1. a.txt:项目中所有a.txt文件和文件夹都会被过滤
2. /a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
3. /b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
4. *x*:名字中有一个x的都会被过滤(*代表0~n个任意字符)
5. 空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件)

7 查看仓库当前的状态

查看状态(红色和绿色),必须全绿再提交到版本库(从远程拉下来的一个版本然后保存在本地的一个库)。

  • 红色:更改未被提交到暂存区
  • 绿色:更改已经到暂存区,但是没有到版本库。
git status

8 查看提交日志

git log

精简、详细的日志

git reflog

9 回退版本

① 回退到上一版本
git reset --hard HEAD^
② 回退到上上版本
git reset --hard HEAD^^
③ 回退到指定版本
git reset --hard [版本ID]
④ 撤销所有暂存区的提交
git reset .

10 回滚 (回滚到版本管理的最新位置)

git checkout .

三:用户操作

1 设置全局用户 (作用于全局)

git config --global user.name '用户名'
git config --global user.email '用户邮箱'
该操作会在全局文件 C:\Users\用户文件夹\.gitconfig新建用户信息,在所有仓库下都可以使用

2 设置局部用户 (作用于当前路径)

git config user.name '用户名'
git config user.email '用户邮箱'

在当前仓库下的config新建用户信息,只能在当前仓库下使用。

一个仓库有局部用户,优先使用局部用户,没有配置再找全局用户。

四:分支管理

  • 主分支:只记录版本
  • 了解:git flow 工作流

1 查看远程分支

git branch -a

2 查看本地分支

  • 绿色代表当前所在的分支
git branch

3 创建分支

  • 创建分支的代码,基于master创建出来的,代码和现在的master一样
git branch [新建分支名]

4 创建并切换分支

(-b标识创建并切换)

git checkout -b 分支名

5 切换回分支

git checkout 分支名

6 从主分支里创建新分支

git checkout master -b 新分支名

7 合并某分支到当前分支

git merge 分支名

8 删除分支

git branch -d 分支名
git branch -D 分支名 (强行删除分支)

9 远程分支合并

① 远程创建,同步到本地

变基(rebase)

② 本地创建,传到远端

  • 拉取最新分支:git pull origin master
  • 切换到主分支:git checkout master
  • 合并分支:git merge dev
  • 推送到远程仓库:git push origin master

五:git远程连接

1 远程拉取项目

git clone [项目地址]

2 无仓库,需要新建

mkdir test
cd test
git init
touch a.txt
git add a.txt
git commit -m "添加了a.txt"
git remote add origin 已有仓库  # 连接远程
git push origin master

3 已有仓库

新建仓库时主要点击新建可写仓库

cd test
git remote add origin 已有仓库  # 连接远程
git add .
git commit -m "XXX"
git push origin master

4 查看远程仓库(没有就看不到)

git remote

5 线上回滚

# 1 切换到master分支
# 2 回滚打某个版本  git reset --hard  版本号
# 3 强制提交代码 git push origin master -f

六:解决冲突

出现冲突的两种情况:

  • 1.分支合并
  • 2.同一条分支上,2个人同时修改了同一个文件的同一行代码。

情况1

A和B同时开发项目并且都将服务器的分支代码拉(pull)到自己电脑上 A开发完后,将自己的项目推(push)到了服务器的分支 A和B修改的是同一行代码 B开发完后,没有先拉(pull),而是直接将自己的项目推(push)到了服务器的分支 此时,出现了冲突,这个冲突需要由B解决

解决方法:

git merge A_master (在B_dev分支上操作)
-解决冲突(删你的,同事的,合并起来)
git add .  
git commit 
-正常了,冲突解决

情况2

master分支上a.py中的第10行代码为 x = 1
dev分支上a.py中的第10行代码为 x = 99
在master分支合并dev分支
此时同一个文件的同一行代码,在2个分支不同,出现了冲突
解决方法:
# 手动线下合并代码并提交到远程
git checkout master
git merge dev 

-如果出冲突,解决
    -git add .
    -git commit -m 'xxx'
    -git push origin master

七:ssh连接和https连接

1.公司内部大部分用ssh连接

-领导给你一个git地址(项目地址)
-你 git clone 地址  到本地
-改代码,改完了---》提交(禁止)
-ssh配置,以后都不用输密码了

2.配置如何做

# 生成公钥与私钥(邮箱可以随意填写)
ssh-keygen -t rsa -C "*@*.com"

# 查看公钥
cat ~/.ssh/id_rsa.pub

会在C:\Users\用户\.ssh下生成2个文件

  • id_ras:公钥
  • id_ras.pub:私钥
-对称加密(加密和解密用同一套秘密)
-非对称加密(公钥和私钥),公钥加密,私钥解密

-生成一对公钥和私钥(用命令)
    -https://gitee.com/help/articles/4181
    -ssh-keygen -t rsa -C "xxx@qq.com" 生成到用户家目录的.ssh文件夹下(一个公钥,一个私钥)  
    -把公钥复制出来,去码云上配置

3 跟远程操作有关的三个命令

git pull
git push
git feacth(一般不用,他跟pull是一个东西,当作不知道)

八:PyCharm操作git

1.创建一个文件夹,右键Git Bash here ,输入下面命令

该文件夹为你项目的顶级文件夹

git init
此时,会生成一个.git的隐藏文件夹

2.将项目克隆下来

git clone https://xxxxx.gitee.com.xxx.git

3 右键 - 用pycharm打开

4 点击左上角:File - Settings,进行如图操作,可以获取到Git当前版本

前提:安装 并 启动了git插件

5 两个按钮的功能

6 更多功能

7 一步到位的操作

修改 + add添加到暂存区 + admin注释并添加到版本库 + push到远程仓库

posted @ 2021-02-25 00:40  artherwan  阅读(73)  评论(0编辑  收藏  举报