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 使用

一、git 安装

安装完只要在桌面右键点击能出来这个就行,点 Git Bash 这个选项弹出一个命令窗口,就说明安装成功了

在这里插入图片描述

二、git 基本操作

1、git 仓库全局配置

安装完成之后设置全局机器信息,所有 git 仓库都会使用这个配置

$ git config --global user.name "userName"
$ git config --global user.email "email@example.com"

2、创建一个空目录

$ mkdir gitTest # 创建文件夹 gitTest
$ cd gitTest	# 切换到 gitTest 下
$ pwd			# 查看当前目录
/d/gitTest

3、初始化 git 仓库

$ git init # 初始化命令
Initialized empty Git repository in D:/gitTest/.git/

初始化后文件夹内会多出一个 .git 目录,并且自动创建一个 master 分支

在这里插入图片描述

4、添加一个文件到本地仓库

先创建一个文件,然后添加文件到仓库中

git add 添加命令

$ git add test.java

5、提交文件到本地仓库

git commit 提交命令

$ git commit -m "init project"
[master (root-commit) 3443f03] init project
 1 file changed, 5 insertions(+)
 create mode 100644 test.java

-m 后面是提交的说明,提交成功后会显示更改的文件(file changed)和更改的内容(insertions)

6、修改提交的备注信息

$ git commit --amend

可以直接修改刚提交的备注信息

init project

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date:      Tue Nov 23 10:36:13 2021 +0800
#
# On branch master
#
# Initial commit
#
# Changes to be committed:
#       new file:   test.java

修改完成后

$ git commit --amend
[master 1a87d51] init project 1
 Date: Tue Nov 23 10:36:13 2021 +0800
 1 file changed, 5 insertions(+)
 create mode 100644 test.java

7、修改文件并提交

修改文件后重新添加并提交文件,提交会生成一个快照记录下来

$ git add test.java

$ git commit -m "append"
[master 8fb6416] append
 1 file changed, 1 insertion(+)

8、查看历史记录

git log 显示最近到最远的提交日志,提交的版本号是个 16进制数

– graph:分支合并图

– abbrev-commit:提交版本号缩略

–pretty=oneline 减少输出的信息

Author: userName <email@example.com>
Date:   Tue Nov 23 14:16:23 2021 +0800

    append

commit 384556a202ac92f3787033369d2f8645a16021d3
Author: userName <email@example.com>
Date:   Tue Nov 23 10:36:13 2021 +0800

    init project

HEAD 表示当前版本,也就是最新的提交

$ git log --pretty=oneline
8fb6416efee0387992c4045e366aee735dd6df0f (HEAD -> master) append
384556a202ac92f3787033369d2f8645a16021d3 init project

9、回退历史版本

git reset 回退版本,上一个版本就是 HEAD^,往上几个版本可以写成 HEAD^n

$ git reset HEAD^ # 回退上一个版本
Unstaged changes after reset:
M       test.java
$ git log --pretty=oneline # 查看历史版本
384556a202ac92f3787033369d2f8645a16021d3 (HEAD -> master) init project

已经成功回退了版本

10、查看历史命令

如果想要重新回退之前的版本,我们需要使用版本号,如果我们忘记的话可以用 git reflog 来查看历史命令

$ git reflog
b00a361 (HEAD -> master) HEAD@{0}: reset: moving to b00a361
04c6b2c HEAD@{1}: commit: append
b00a361 (HEAD -> master) HEAD@{2}: commit (initial): init project

然后使用版本号进行回退

$ git reset 04c6b2c
Unstaged changes after reset:
M       test.java

11、查看状态

使用 git status 查看状态

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   test.java

no changes added to commit (use "git add" and/or "git commit -a")

三、暂存区

git add 是把需要提交的文件添加到暂存区

git commit 是把暂存区的内容提交到当前分支

增加一个文件后使用 git status 看一下状态

$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        test.class

nothing added to commit but untracked files present (use "git add" to track)

增加的这个文件 test.class 还没有被添加到暂存区,它的状态是 Untracked

重新提交后查看状态

$ git status
On branch master
nothing to commit, working tree clean

没有其它修改的话,没有需要提交的内容工作区很干净

四、修改文件

1、修改文件内容

git commit 只会提交已经存到暂存区的内容,每次修改后想要把代码提交到分支,都需要先 git add 然后 git commit,多次修改需要多次 git add

2、查看本地代码和已经提交代码的区别

git diff HEAD – file

$ git diff HEAD -- test.java
diff --git a/test.java b/test.java
index 6b79563..075b2d8 100644
--- a/test.java
+++ b/test.java
@@ -1,6 +1,5 @@
 public class test{
     public static void main(String[] args) {
-
         System.out.println("Hello Word");
     }
 }

3、撤销修改

把暂存区的修改撤销,git reset HEAD file

$ git reset HEAD test.java
Unstaged changes after reset:
M       test.java

4、删除文件

从本地仓库库里面删除

$ git rm test.java
rm 'test.java'

$ git diff HEAD -- test.java # 删除后本地代码跟仓库代码区别
diff --git a/test.java b/test.java
deleted file mode 100644
index 6b79563..0000000
--- a/test.java
+++ /dev/null
@@ -1,6 +0,0 @@
-public class test{
-    public static void main(String[] args) {
-
-        System.out.println("Hello Word");
-    }
-}

删除后提交

$ git commit -m "remove test.java"
[master d7b4e49] remove test.java
 1 file changed, 6 deletions(-)
 delete mode 100644 test.java

五、分支操作

1、创建分支

git branch name 创建分支

git checkout -b name 创建并切换分支

$ git branch dev # 创建分支 dev
$ git checkout dev # 切换分支到 dev
Switched to branch 'dev'

$ git checkout -b dev # 相当于上面两条命令
Switched to branch 'dev'

2、查看当前分支

git branch

$ git branch
* dev
  master

3、合并分支

git merge 合并指定分支到当前分支

$ git merge dev
Already up to date.

4、删除分支

git branch -d name 删除分支

$ git branch -d dev
Deleted branch dev (was 4c5ebec).
$ git branch
* master

5、解决冲突

当两个分支都对同一个文件做了修改,我们无法快速合并,只能把修改的部分发生冲突的地方解决后进行合并

切换到 master 分支后合并 feature 分支

$ git merge feature
CONFLICT (add/add): Merge conflict in 新建文本文档.txt
Auto-merging 新建文本文档.txt
Automatic merge failed; fix conflicts and then commit the result.

使用 git status 查看冲突的文件

$ git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add <file>..." to mark resolution)
        both added:      "\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt"
        
        no changes added to commit (use "git add" and/or "git commit -a")

冲突文件的内容

<<<<< HEAD 当前分支内容,>>>>> 要合并分支内容,中级用 =====间隔

<<<<<<< HEAD
111
=======
222
>>>>>>> feature

修改后进行保存,然后提交

$ git add 新建文本文档.txt
$ git commit -m "merge feature"
[master a664482] merge feature

查看分支合并情况

$ git log --graph --pretty=oneline --abbrev-commit
*   a664482 (HEAD -> master) merge feature
|\
| * 5b4caaf (feature) txt
* | 00b1678 txt
|/
* 4c5ebec add test.class
* 1087494 append2
* 04c6b2c append
* b00a361 init project

6、非快速合并

一般默认合并分支使用 fast forward 快速合并,快速合并删除分支后,会丢失分支信息

使用 --no-ff 参数进行普通合并,分支历史上会有分支信息

$ git merge --no-ff -m "merge feature no-ff" feature

7、git stash

使用 git stash 暂时保存一下我们工作区更改的内容

$ git stash
Saved working directory and index state WIP on master: 8b15ff3 delete test
$ git status
On branch master
nothing to commit, working tree clean

查看 stash 列表

$ git stash list
stash@{0}: WIP on master: 8b15ff3 delete test

恢复 stash

$ git stash apply stash@{0}
Removing 新建文本文档.txt
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        deleted:    "\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt"

恢复的同时并不会删除已经保存的 stash

删除 stash

$ git stash drop stash@{0}

恢复并删除 stash

使用 git stash pop

$ git stash pop stash@{0}
Removing 新建文本文档.txt
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        deleted:    "\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt"

no changes added to commit (use "git add" and/or "git commit -a")
Dropped stash@{0} (5130aa6b40794e0099400aae6d2ee7d6ca91bb9c)

六、远程仓库

1、设置本地分支和远程分支链接

$ git branch --set-upstream-to=origin/master master

2、查看远程库信息

$ git remote -v

3、推送分支

$ git push origin master

4、拉取分支

git pull
  开发工具 最新文章
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-11-24 08:09:39  更:2021-11-24 08:11:58 
 
开发: 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/15 18:56:45-

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