IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> git基本使用方法 -> 正文阅读

[开发工具]git基本使用方法

特点:

分布式版本控制系统
优势:
SVN在开发过程中必须保证需要与SVN服务器连接才能使用,需要联网

git官方文档

基础操作

1、设置全局信息

1
2
3
4
5
6
7
设置开发者的用户名
	git config --global user.name nicolas
设置开发者邮箱
	git config --global user.email 1162314270@qq.com
取得全部的全局信息
	git config --list
	git config -l

复制

2、创建仓库

1、创建目录当做仓库目录
2、进入目录中配置
将目录变为仓库目录,需要进入目录中配置
3、初始化仓库
方法一:创建一个包含有配置信息目录的仓库文件夹

1
2
git init
Initialized empty Git repository in E:/gitpro/.git/

复制

文件区域

  1. 工作区
    用户编写代码的文件夹
    所有的文件操作以工作区为主
    GIT仓库

  2. 暂存库
    只是将工作中的未保存文件保存到暂存区中,有GIT维护;
    保存的内容是暂时需要的

  3. 版本库Master

    真正发布的代码

3、仓库基本操作

1、观察仓库的状态

1
git status

复制

2、将文件添加到git暂存区

1
git add 文件名称

复制

4、批量添加新文件到暂存区

1
git add .

复制

添加所有在仓库目录中创建的新文件到暂存区
3、将文件提交到版本库中

1
git commit -m "注释信息Comment"

复制

现在才表示将新的文件提交到了GIT之中进行管理(这个代码才能被项目使用)
自动增加并提交修改到版本库中

1
git commit -a -m "注释Comment"

复制

4、修改仓库文件

? 查看修改历史

1
2
git log 文件名
git log

复制

? 每次提交时都会自动生成一个Commit ID(在日后版本恢复中使用)

比较同一文件

1
2
git diff
git diff 文件名

复制

比对暂存区和工作区中readme.txt文件的差异

版本穿越

? 查看日志信息

1
2
git log
git log --pretty=oneline

复制

简化查看
可以按q结束查看
整个日志记录是用栈来记录的
master库存在head指针
回退到上一个版本

1
git reset --hard head~1

复制

查看所有删除的日志

1
git reflog

复制

? 到指定版本

1
git reset --hard 1fc9d3f(Commit id)

复制

撤销修改

撤销工作区修改

显示那些文件发生了改变

1
git checkout

复制

恢复单个文件

1
git checkout 文件名

复制

恢复多个文件

1
git checkout .

复制

修改已在暂存区

将暂存区的文件撤回到工作区

1
git reset HEAD <file>...

复制

文件删除

1
del 文件名

复制

删除工作区中的文件
恢复

1
git checkout -- 文件名

复制

? 因为版本库中任存在,可以直接删除
? git commit -a -m “Commet”
? 提交之后,库中相应的文件也没有了
? 只能通过版本穿越恢复

远程仓库:GITHUB …

git-book:github章节

远程仓库的使用

git-book:Git-基础-远程仓库的使用

problem

github每次push都要密码

原因是使用了https方式 push
这种方式产生的原因,一般是我们clone是一定是使用了http的方式
例如我们在github上创建了一个项目,然后我们clone到本地时使用了http而非git (ssh)

1
2
git remote rm origin
git remote add origin git@github.com:codeOflI/MyDouban.git

复制

查看远程仓库

1
git remote [-v]

复制

选项?-v,会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL。

添加远程仓库

git remote add <shortname> <url>?添加一个新的远程 Git 仓库

1
git remote add origin https://github.com/codeOflI/rep.git

复制

从远程仓库中抓取与拉取

这个命令会访问远程仓库,从中拉取所有你还没有的数据。

1
git fetch [remote-name]

复制

如果你使用?clone?命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认以 “origin” 为简写。 所以,git fetch origin?会抓取克隆(或上一次抓取)后新推送的所有工作。 必须注意?git fetch?命令会将数据拉取到你的本地仓库——它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。

如果你有一个分支设置为跟踪一个远程分支(阅读下一节与?Git 分支?了解更多信息),可以使用?git pull?命令来自动的抓取然后合并远程分支到当前分支。 这对你来说可能是一个更简单或更舒服的工作流程;默认情况下,git clone?命令会自动设置本地 master 分支跟踪克隆的远程仓库的 master 分支(或不管是什么名字的默认分支)。 运行?git pull?通常会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支。

推送到远程仓库

git push [remote-name] [branch-name]。 当你想要将 master 分支推送到?origin?服务器时

1
git push origin master

复制

查看某个远程仓库

使用?git remote show [remote-name]?命令

可以通过?git remote show?看到更多的信息。

远程仓库的移除与重命名

如果想要重命名引用的名字可以运行?git remote rename?去修改一个远程仓库的简写名。 例如,想要将?pb?重命名为?paul,可以用?git remote rename?这样做:

1
2
3
4
$ git remote rename pb paul
$ git remote
origin
paul

复制

移除一个远程仓库——你已经从服务器上搬走了或不再想使用某一个特定的镜像了,又或者某一个贡献者不再贡献了——可以使用?git remote rm?:

1
2
3
$ git remote rm paul
$ git remote
origin

复制

打标签

Git 可以给历史中的某一个提交打上标签,以示重要。比较有代表性的是人们会使用这个功能来标记发布结点(v1.0 等等)。

列出标签

Git - 打标签

配置远程仓库

ssh通信模式
1.启动git bash
在此之中可以使用linux命令
2、生成ssh key密钥

1
ssh-keygen -t rsa -C "1162314270@qq.com"

复制

1
2
3
4
命令输入后,首先询问用户密钥的保存位置
	/c/Users/11623/.ssh/id_rsa
	默认为公钥和私钥保存在:用户/.ssh/id_rsa
瑞后询问是否设置保护密码

复制

3、将公钥内容保存到GITHUB

公钥文件,保存在外部使用==(保存到github的ssh密匙中)==
id_rsa.pub

私钥文件,做本机标识
id_rsa
打开github的setting页面添加ssh key

将公钥内容复制到key内容中

1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDaUZOQterXD2TZWb9VMO/s4jaIBIp0GIlsBlMZ+fl50NWbua4R8EtudIPIiMDGxsE7UmE/HGBMedsCjo1nS6h5OLz9ZT0n5h4FYOqurQWsyfdm+tgZK5mK/t1e93WlF+cjja+KiCMbntMYq7o/FGPWnlFlfiz9KiVos+oRWgC3RUx4hDqZoKFmfTxAiXQMJy2/pVYmHqliZ9+6mOvRJoe2C1mmTClTU5y9KLw8AWF0jTykUAeAfZjX1lwub8xkJ34QSNZFaBiouWcA7sz/Qa8kDGdFbZwR41Ugc+P4KYli72pecsbj2eVTZoHuCkW5GxxupV9jSbj/MePZPHHhhdH lmz

复制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
C:\Users\11623>ssh-keygen -t rsa -C "lmz"
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\11623/.ssh/id_rsa):
C:\Users\11623/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\11623/.ssh/id_rsa.
Your public key has been saved in C:\Users\11623/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:722mRw92N2R2fb71Yr3tBEgSQORYxzzzF6n4xRkh7Mk lmz
The key's randomart image is:
+---[RSA 2048]----+
|       o=+o.. .o |
|       + .=...+  |
|      . . .B.+ +.|
|          .oE.=++|
|        S  ..o=.o|
|         .  = .o+|
|          .o + o*|
|         . .+ +o+|
|          o=.. ++|
+----[SHA256]-----+

复制

4、在github上建立远程仓库信息
不选择:Initialize this repository with a README
创建仓库后界面上就给出了仓库的访问地址
SSH,有了SSH key直接连接
https://github.com/NicolasCoder/rep.git
HRRPS,所有人都可以连接
https://github.com/NicolasCoder/rep.git
删除github仓库
仓库的setting

客服端访问

本地代码同步到远程仓库中

1
2
3
4
5
Either specify the URL from the command-line or configure a remote repository using
    git remote add <name> <url>

and then push using the remote name
    git push <name>

复制

2、连接成功后将本地仓库全部代码推送到服务器端

1
git push -u origin master

复制

强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容

1
2
git push -f
git push -u origin master -f

复制

使用这个强制的方法

1
git pull origin master --allow-unrelated-histories

复制

后面加上?--allow-unrelated-histories?, 把两段不相干的 分支进行强行合并

提高本地修改
首先将修改提高到master分支上,然后推送代码到服务器

3、git pull的作用是从一个仓库或者本地的分支拉取并且整合代码。

1
git pull [<options>] [<repository> [<refspec>…]]

复制

实例:默认使用方式

1
git pull

复制

按照git branch?设置的默认跟踪的服务器和分支来拉取。

实例:?拉取远程服务器originmaster分支

1
git pull origin master

复制

删除远程分支

1
git remote rm origin

复制

克隆远程仓库

已经初始化完成的仓库
已执行
Initialize this repository with a README
克隆远程仓库:(直接在当前目录新建远程仓库的项目文件)

1
git clone (HTTPS)https://github.com/codeOflI/ssm-crud

复制

?

GIT分支

1).基础操作

1、查看当前仓库中可用的分支

1
git branch

复制

2、创建新的分支

1
git branch 分支名

复制

3、切换分支

1
git checkout 分支名

复制

要想进行开发,一定不能再master中开发,必须在子分支开发
回到master进行合并分支

1
git merge dev

复制

? 合并后提示Fast-forward
? 快速合并方式
一般开发分支和master分支都在服务器上

1
git push -u origin 分支名

复制

删除分支

1
git branch -d 分支名

复制

删除远程分支

1
git push origin --delete 分支名

复制

推送空的分支

1
git push origin:dev

复制

2)合并操作

冲突解决
创建并切换到dev分支

1
git checkout -b dev

复制

两个分支修改了同一文件
提交到master后会提示conflict和文件名
打开文件会发现相应的冲突都写在了里面
修改后再次提交即可
分支合并模式
通过图形化的方式查看所有分支合并记录

1
git log --graph --pretty=oneline

复制

1
Fast forwaed(默认)合并

复制

? 不会产生新的提交点
添加参数 -no-ff(Not Fast Forward)
?

1
git merge --no-ff -m "use no-ff merge" dev

复制

–no-ff的作用:

git merge –no-ff 可以保存你之前的分支历史。能够更好的查看 merge历史,以及branch 状态。

git merge 则不会显示 feature,只保留单条分支记录。

? master不予许修改,dev分支如果有多人共享,需要在创建自己的分支在进行开发,合并时使用no-ff方式
bug分支,暂挂工作区
? 有错误的代码不能保存在暂存区
? 保存当前工作区的状态
? git stash
? 查看所有暂时挂起的工作区
? git stash list
? 两步
? 恢复挂起的工作区
? git stash apply
? 清除保存的工作区
? git stash drop
? 一步
? 恢复并清除保存区
? git stash pop
feature,扩展分支
? 已经开发,但不准备使用的功能等
? 强制删除有不同修改的分支
? git branch -D feature
补丁
? 比较分支区别
? git diff master > patch
? 通过命令行的管道流,将diff保存再来patch文件里
? 通过补丁合并分支
? git apply patch
? 当项目很大的时候,效率更高
? 不便于开发者沟通
? git format-patch -M master
? 通知master
? 应用分支补丁
? git am (补丁路劲)”E:\gitpro\0001-git-apply-patch.patch”

orphan分支

创建一个新的分支(空)而不是从原分支拷贝

1
git checkout --orphan branchName

复制

可以将A和B两个完全不同的工程,可以作为两个分支放到git中。
这时候还是一个分支

1
2
git branch
master

复制

1.创建orphan分支,名为dev(本地和远程都需要)

1
$ git checkout --orphan dev

复制

注:
如果不提交东西,这个分支实际上没有创建

2.修改一些东西,并提交

注意:

远程分支和本地分支保持名称一致,可减少不必要麻烦

1
2
3
$ git add .
$ git commit -m "init"
$ git push origin dev

复制

注:
git push origin source表示把本地代码(origin)提交到source分支
git push origin master表示把本地代码(origin)提交到master分支

3.现在就有两个分支了master和source

.gitignore的操作

目的是忽略指定类型的文件或者某个文件夹

  1. a、新建.gitignore文件:
  2. b、输入要忽略的文件(可用通配符)
  3. 利用git status?查看,可以看出排除了写入的文件,避免了其提交
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**
###忽略配置文件###
judge.properties

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/

### VS Code ###
.vscode/

复制

git-me

开发时不使用master(保存)分支

  1. 开发时添加大型文件,如果在主分支添加,将很难删除其占用的空间,通过合并分支,或者删除分支,很容易办到。

添加大型文件请慎重

git commit之后git会保存此时所有文件,如果此时添加了不必要的大型文件,会不必要的增加文件大小。特别是master分支。

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-10-09 16:28:46  更:2021-10-09 16:29:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:57:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码