git命令

  • svn(集中式管理,崩了就没了),git(分布式管理、协同开发、版本管理,每台主机都可当服务器)
  • 下载安装git
  • 核心操作
  • 直奔主题版(上)
  • 1.初始化仓库
  • 2.把文件添加到暂存区
  • 3.提交暂存区内容到版本库
  • 4.把项目提交到(远程)仓储
  • 5.撤销暂存区提交:add的逆运算(很少使用)
  • 6.忽略文件
  • 7.查看仓库当前的状态
  • 8.查看提交日志
  • 9.回退版本
  • 10 查看日志,(条数更多,内容更少)
  • 二:用户操作
  • 1.设置全局用户
  • 2.设置局部用户
  • 三:分支操作
  • 四:git远程连接
  • 五:解决冲突
  • 五:git项目创始者和开发者
  • 六:ssh连接和https连接
  • 七:pycharm操作git (拉取已有仓库)
  • 八:其他操作(扁平化,fetch与pull区别,分支策略,多人协作,远程仓库,删除版本库文件,克隆远端项目,查看shh密钥)
  • 九:内容通俗讲解

 

 

 

svn(集中式管理),git(分布式管理、协同开发、版本管理)

下载链接:https://git-scm.com/downloads

流程

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

 

一:核心操作

直奔主题版(上)

```python
#1  协同开发,版本管理
#2 svn(集中式管理),git(分布式管理)
#3 git装完,既有客户端,又有服务的
#4 git工作流程
    -工作区,暂存区,版本库
#5 远程仓库:github,码云,公司内部(gitlab)
    
# 6 安装:一路下一步
# 7 右键--git bash here

# 8 git 命令
    -初始化:git init 文件夹名
    -初始化:git init   #当前路径全被管理

    -git status
    -git add a.txt  # 把a提交到暂存区
    -git add .
    -git commit -m '注释,我新增了a'      # 把暂存区的所有都提交到版本库
    -需要增加作者信息
      git config --global user.email "lqz@qq.com"
        git config --global user.name "lqz"
    
      git config  user.email "egon@qq.com"
        git config  user.name "egon"

    -把a的新增提交到版本管理
    -新建b,在a中新增一行
    -git checkout .   # 回复到提交版本的位置,a是空的,b没有被git管理,所有,是什么样,还是什么样
    -git log   # 查看版本管理的日志
    -git reflog # 查看日志,条数更多,内容更少
    -git reset --hard 版本号
# 红色表示未被管理
# 绿色表示提交到暂存区了

# 忽略文件
    -空文件夹不被管理
    -指定某些文件或者文件夹不被git管理
    -在项目根路径,跟.git文件夹一个路径,新建.gitignore.,在里面配置
    - 语法:
        # 号是注释,没有用
        文件夹名字,表示文件夹忽略,不被管理
        /dist 表示根路径下的dist文件夹,不被管理
        *.py   表示后缀名为py的文件,都被忽略
        *.log*
# 分支操作
    -查看分支 git branch   查看所有分支,分支是绿的,表示在当前分支上
    -创建分支 git branch dev
    -创建并切换到 git checkout -b dev
    -删除分支 git branch -d dev
    -切换分支 git checkout dev  #分支内容是与主分支不同的dev分支提交的内容是不会在主分支上的
    -合并分支 git merge 分支名  # 把dev分支合并到master分支:切换到master分支,执行合并dev分支的命令
    

```

 

1.初始化仓库

 
git init
.git目录默认隐藏,可以通过命令ls -ah显示

 

切换到路径

cd 目录名称  进入目录后操作

 

2.把文件添加到暂存区

添加指定文件
 
git add 文件名
一次添加多个文件
 
git add . 

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

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

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

 
git push

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

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

6.忽略文件

.gitignore 文件
 
1.在仓库根目录下创建该文件
2.文件与文件夹均可以被过滤
3.文件过滤语法
②忽略文件内容
 
文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
/文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤
③eg:
 
a.txt:项目中所有a.txt文件和文件夹都会被过滤
/a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
/b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
*x*:名字中有一个x的都会被过滤(*代表0~n个任意字符)
空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件)

7.查看仓库当前的状态

查看状态(红色和绿色),必须全绿再提交到版本库

 
git status

8.查看提交日志

 
git log

git reflog 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)

9.回退版本

恢复提交最新版本

-git checkout .   # 回复到提交版本的位置,a是空的,b没有被git管理,所有,是什么样,还是什么样
①回退到上一版本
 
git reset --hard HEAD^
②回退到上上版本
 
git reset --hard HEAD^^h
回退某个版本
-git reset --hard 版本号
③撤销所有暂存区的提交
 
git reset .

10 查看日志,(条数更多,内容更少)

用来记录你的每一次命令
 
git reflog

二:用户操作

1.设置全局用户

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

在全局文件 C:\Users\用户文件夹\.gitconfig新建用户信息,在所有仓库下都可以使用

2.设置局部用户

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

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

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

 

三:分支操作

 1 1.查看远程分支
 3 git branch -a
4 2.查看本地分支 6 git branch 7 2.2创建分支    8 git branch 分支名 # 创建分支
11 3.创建并切换分支 12 (加-b表示创建并切换) 14 git checkout -b 分支名
15 4.切换分支 17 git checkout 分支名
18 5.从主分支里创建新分支 20 git checkout master -b 新分支名
21 6.合并某分支到当前分支 23 git merge 分支名
24 7.删除分支 26 git branch -d 分支名 27 git branch -D 分支名 (强行删除分支)

 

四:git远程连接

1.无仓库,需要新建

 
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

2.已有仓库(可以先用git init管理后直接连接远端 提交master即可)

 
cd test      (cd到当前项目仓库  没有管理先进行管理)
git remote add origin 已有仓库  # 连接远程
git push  origin master  推上
git pull origin master  拉下

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

 
-git remote

4.线上回滚

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

 5 git 远程操作命令(实操示例)
-git remote # 查看远程仓库(没有就看不到)
-git remote add origin https://gitee.com/liuqingzheng/lqz_test.git # 跟远程仓库建立连接  (有ssh就用ssh 来clone)
-git push origin master # 把本地的master分支提交到远程的origin,需要输入用户名和密码(之前存的需要删掉)

 

 

 

 

 

 

五:解决冲突

1.情况1

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

解决方法:

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

2.情况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 
    -git push..

五:git项目创始者和开发者

1.项目创世者

负责分支的创建和管理

2.项目开发者

把项目拉下来,继续开发

 
-git clone https://gitee.com/xxxxxx/xxxx.git
    -能看到完整的版本和日志控制
    -可以回复到任意版本
    
-git rest --hard 版本号
-git checkout . # 表示回到指针指向的版本,因为已经用git rest --hard把指针移动了,所以checkout .就是当前再的版本上的东西

 #本地新增c.txt文件
    -提交到暂存区
    -提交到版本库(没有提交到远程,远程看不到)
    -提交到远程:git push origin master
    
# 让a文件夹中的代码成为最新的
	-git pull origin master

重点:每次再提交代码之前,一定要先更新代码(拉),如果不拉提不上去

六:ssh连接和https连接

.shh  (密钥就是存在这里面  家目录)                   的公钥复制出来添加到码云上

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

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

2.配置如何做(创建公钥进行配置)

 
-对称加密(加密和解密用同一套秘密)
-非对称加密(公钥和私钥),公钥加密,私钥解密

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

 

 

 

 ssh连接远程(进行操作)

③关联远程库
 
git remote add origin git@server-name:path/repo-name.git
④第一次推送master分支的所有内容,此后只需要使用git push origin master即可推送最新修改
 
git push -u origin master

 

 

 

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当前版本

 

 

5.2个按钮的功能

 

 

6.更多功能

 

 

7.一步到位的操作(修改+添加到暂存区+注释并添加到版本库+push到远程仓库)

 

 

八:其他操作

1.查看ssh密钥

①进入.ssh目录
 
cd ~/.ssh
②查看id_rsa.pub文件(公钥)
 
cat id_rsa.pub

2.克隆远程项目

 
git clone 远程源地址

3.删除文件

①删除版本库中的文件
 
git rm filename
②恢复工作区中误删的文件
 
git checkout -- filename

PS:git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”

4.远程仓储

 

①创建ssh key密钥
 
ssh-keygen -t rsa -C "youremail@example.com"
②在远程仓库中添加ssh公钥
③关联远程库
 
git remote add origin git@server-name:path/repo-name.git
④第一次推送master分支的所有内容,此后只需要使用git push origin master即可推送最新修改
 
git push -u origin master

5.多人协作

①查看远程仓储的详细信息
 
git remote -v
②推送本地分支到远程仓库
 
git push origin 本地分支名

如果发生冲突,用git pull试图合并,如果发生冲突则解决冲突,再进行推送

如果git pull后提示no tracking information(没有追踪信息),则进行第四项,建立关联,之后pull,有冲突再合并

③在本地创建和远程分支对应的分支
 
git checkout -b 本地分支 origin/远程分支名
④建立本地分支和远程分支的关联
 
git branch --set-upstream 本地分支名 origin/远程分支名

6.分支策略

1.master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

2.干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

3.每个人都有自己的分支,时不时地往dev分支上合并就可以了

7.git fetch和git pull的区别

与git pull相比git fetch相当于是从远程获取最新版本到本地,但不会自动merge。如果需要有选择的合并git fetch是更好的选择。效果相同时git pull将更为快捷。

1 pycharm找回误删,修改的东西

 

2.git的变基

git rebase      不杂乱提交dev提交合并的其他细节不要(扁平化处理)
内容通俗讲解
# 1 git远程 git remote 远程地址(https/ssh)
# 2 ssh 的公钥和私钥,配在公司的git服务器上(gitlab,gitlab)
# 3 git status 没有红色和绿的才能提交到远程
# 4 提交代码之前,一定要先拉代码(如果本地不是最新的,提交不上去)
# 5 每天一到公司,先拉一下代码,你要提交之前,一定要拉
# 6 冲突出现的原因:1 多人同时操作同一个分支 2 分支合并的冲突
# 7 线上分支合并(了解)
# 8 线下分支合并,可能会出冲突,解决,直接提交
# 9 创建远程分支:本地建完,push上去 远端直接创建
# 10 git clone 远程已经有了仓库和代码了
# 11 vue 登录页面分析

 git仓库添加新的分支,本地查看不到新分支

git fetch

查看所有分支

git branch -a

 强制更新master最新分支

$ git reset --hard origin/master

  

标识符认识

(oyjt|MERGING)正在合并中等待解除冲突后合入

 

posted @ 2021-07-03 23:22  欧阳锦涛  阅读(89)  评论(0)    收藏  举报
TOP 底部