git——02常用操作

一、创建本地仓库——git init

# cd到工作目录
$ pwd
/d/lihua/java code/my/spring-cloud-H

$ git init # 创建本地仓库

二、将工作区内容放入暂存区——git add filename

$ touch test.txt  # 新建文件夹

$ ls
cloud-01-consumer-hygtrix-dashboard9001/  cloud-04-eureka-server-7001/
cloud-01-provider-hygtrix-payment8001/    cloud-04-eureka-server-7002/
cloud-01-provider-payment8001/            cloud-04-eureka-server-7003/
cloud-01-provider-payment8002/            cloud-05-gateway-server-9001/
cloud-01-zk-provider-payment-8003/        cloud-06-zipkin-consumer-81/
cloud-02-consumer-feign-hystrix-order80/  cloud-06-zipkin-provider-8001/
cloud-02-consumer-feign-order80/          pom.xml
cloud-02-consumer-order80/                spring-cloud-H.iml
cloud-03-api-commons/                     test.txt

$ vim test.txt # 然后随便写点东西

$ git add test.txt # 将test.txt 放入暂存区 注意:(git add . ) 可以将当前目录所有文件放入暂存区
warning: LF will be replaced by CRLF in test.txt.  # 无视这些
The file will have its original line endings in your working directory

三、查看提交日志——git log

$ git log # 这个命令可以查看我们commit的记录,也就是 使用git commit这条命令的记录
fatal: your current branch 'master' does not have any commits yet # 还没有使用过
注意:
1. Untracked files:表示该文件还从来没有被添加进暂存区,这是新添加的文件;需要add
2. Changes not staged for commit:文件更改了,但是还未进入暂存区 ,需要add;
3. Changes to be committed:文件已进入暂存区,但还未提交到版本库(资源区),需要commit;

四、查看文件状态——git status filename

(一)所有文件

$ git status # 查看当前目录的所有文件的状态。
On branch master 

No commits yet # 没有提交过

Changes to be committed: 
  (use "git rm --cached <file>..." to unstage)
        new file:   test.txt # 创建了一个新的文件

Untracked files: # 下面的文件是未追踪的
  (use "git add <file>..." to include in what will be committed)
        .idea/
        cloud-01-consumer-hygtrix-dashboard9001/
        cloud-01-provider-hygtrix-payment8001/
        cloud-01-provider-payment8001/
        cloud-01-provider-payment8002/
        cloud-01-zk-provider-payment-8003/
        cloud-02-consumer-feign-hystrix-order80/
        cloud-02-consumer-feign-order80/
        cloud-02-consumer-order80/
        cloud-03-api-commons/
        cloud-04-eureka-server-7001/
        cloud-04-eureka-server-7002/
        cloud-04-eureka-server-7003/
        cloud-05-gateway-server-9001/
        cloud-06-zipkin-consumer-81/
        cloud-06-zipkin-provider-8001/
        pom.xml
        spring-cloud-H.iml

在这里插入图片描述

(二)指定文件

$ git status test.txt # 查看指定文件的状态
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   test.txt

在这里插入图片描述

(三)更新文件后,未提交add

$ vim test.txt # 更新这个文件

$ git status test.txt
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   test.txt

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.txt


在这里插入图片描述

五、将暂存区全部内容放入资源区——git commit -m “msg”

$ git add test.txt # 将更新后的test.txt重新放入暂存区
warning: LF will be replaced by CRLF in test.txt.
The file will have its original line endings in your working directory

hs@DESKTOP-9D82N3U MINGW64 /d/lihua/java code/my/spring-cloud-H (master)
$ git commit -m "# 提示信息:将缓冲区的内容放入资源区"  # 将缓冲区的内容放入资源区 注意:-m后面是本次提交的提示信息
[master (root-commit) c5852f2] # 提示信息:将缓冲区的内容放入资源区
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt
$ git status test.txt
On branch master
nothing to commit, working tree clean # 表示这个文件已经add、 已经commit,暂存区和资源区里面存放的都是最新的test.txt
$ git log # 查看commit记录
commit c5852f24b718b48f29654bfb0d6c25e4c8c3af3b (HEAD -> master)
Author: lihua <1559465552@qq.com>
Date:   Wed Nov 3 17:47:24 2021 +0800

    # 提示信息:将缓冲区的内容放入资源区

六、回退版本——git reset --hard commitId

注意:git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

我们再次重复修改test.txt ,add 、commit 操作

$ vim test.txt

hs@DESKTOP-9D82N3U MINGW64 /d/lihua/java code/my/spring-cloud-H (master)
$ git add test.txt
warning: LF will be replaced by CRLF in test.txt.
The file will have its original line endings in your working directory

hs@DESKTOP-9D82N3U MINGW64 /d/lihua/java code/my/spring-cloud-H (master)
$ git commit -m "第二次提交"
[master 7592488] 第二次提交
 1 file changed, 1 insertion(+)


$ git log
commit 759248856e205aaf5d27e2cb5fcfa699f2b2783e (HEAD -> master)
Author: lihua <1559465552@qq.com>
Date:   Wed Nov 3 17:53:55 2021 +0800

    第二次提交

commit c5852f24b718b48f29654bfb0d6c25e4c8c3af3b
Author: lihua <1559465552@qq.com>
Date:   Wed Nov 3 17:47:24 2021 +0800

    # 提示信息:将缓冲区的内容放入资源区

在写代码时当我们发现,修改了代码之后代码运行不了了。这个时候我们可以通过撤销进行回复原来的代码。当我们的代码已经完全保存,撤销不了了。怎么办,如果你使用git管理过项目那么你就=可以回复你的代码。
比如:上面的test.txt文件我们修改了两次。我如果撤销这些修改呢。

  1. 没有修改前:
    在这里插入图片描述
  2. 第一次修改:
    在这里插入图片描述
  3. 第二次修改:
    在这里插入图片描述
* 回退到上一个版本:git reset --hard HEAD^,HEAD^表示回退1个版本,HEAD^^表示回退2个版本,HEAD~100表示回退100个版本。HEAD其实是个指向当前版本的指针。
* 回退到指定版本:git reset --hard 新版本的commit id。其中“新版本的commit id”可以只写id号的前几位,Git会自动去找。
# 先使用git  log 查看提交记录
$ git log
commit 759248856e205aaf5d27e2cb5fcfa699f2b2783e (HEAD -> master)
Author: lihua <1559465552@qq.com>
Date:   Wed Nov 3 17:53:55 2021 +0800

    第二次提交

commit c5852f24b718b48f29654bfb0d6c25e4c8c3af3b
Author: lihua <1559465552@qq.com>
Date:   Wed Nov 3 17:47:24 2021 +0800

    # 提示信息:将缓冲区的内容放入资源区
$ git reset --hard c5852f24b718b48f29654bfb0d6c25e4c8c3af3b # 回退到指定版本
HEAD is now at c5852f2 # 提示信息:将缓冲区的内容放入资源区

在这里插入图片描述

七、撤销修改——对单个文件

(一)没有add前

$ vim test.txt

hs@DESKTOP-9D82N3U MINGW64 /d/lihua/java code/my/spring-cloud-H (master)
$ cat test.txt
123 hello git  更新了。
第二次更新
第三次修改,在远程gitee修改,模拟其他开发者修改代码。
撤销修改

注意: --与test.txt 之间有一个空格

# 注意:--与test.txt 之间有一个空格
$ git checkout -- test.txt

hs@DESKTOP-9D82N3U MINGW64 /d/lihua/java code/my/spring-cloud-H (master)
$ cat test.txt
123 hello git  更新了。
第二次更新
第三次修改,在远程gitee修改,模拟其他开发者修改代码。

注意:这两个命令的区别

* git checkout 分支名 # 切换到分支
* git checkout --空格 filename # 对文件撤销修改

(二)add后

当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,把暂存区的修改撤销掉(unstage),重新放回工作区 ,再通过 【git checkout --空格 filename 】 对文件撤销修改。

(三)commit后

与add后操作一致:
已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退那一节,可以回退到上一个版本,不过前提是你还没有把自己的本地版本库推送到远程。

八、删除文件

手动删除或者用命令rm <fileName>删除文件后,执行git add/rm <fileName>git commit-m <message>就可以了。
  另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本git checkout -- file
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

九、本地仓库绑定远程仓库

# git reote add <仓库名,自定义,因为可以同时绑定多个远程仓库,比如:gitee、github>
$ git remote add gitee https://gitee.com/wuyujitang/spring-cloud-h.git

# 如果绑定失败说明可能已经绑定过了,先删除掉之前的再绑定。
git remote rm gitee

十、将资源区的全部内容推送到远程仓库——push

注意推送前需要将远程仓库的内容同步到本地仓库,也就是远程有的文件,本地必须要有。只有同步了文件才能将资源区的内容推送到远程仓库。

# 不同步文件直接推送。会报错
git push gitee master
To https://gitee.com/wuyujitang/spring-cloud-h.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://gitee.com/wuyujitang/spring-cloud-h.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
# 同步远程文件
$ git pull --rebase gitee master
From https://gitee.com/wuyujitang/spring-cloud-h
 * branch            master     -> FETCH_HEAD
Successfully rebased and updated refs/heads/master.
# 同步文件后推送
$ git push gitee master
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 396 bytes | 198.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.2]
To https://gitee.com/wuyujitang/spring-cloud-h.git
   c05dba1..afcb81b  master -> master

推送前:
在这里插入图片描述
推送后:

在这里插入图片描述

十一、拉取远程仓库的内容——pull

$ git pull --rebase gitee master
From https://gitee.com/wuyujitang/spring-cloud-h
 * branch            master     -> FETCH_HEAD
Successfully rebased and updated refs/heads/master.

十二、查看本地、远程代码被修改了什么

(一)本地

自己使用vim 修改文件,模拟修改代码。

# 当修改代码后,没有add
$ git status test.txt
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.txt

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

# 通过这个命令可以查看修改了什么
$ git diff test.txt
diff --git a/test.txt b/test.txt
index db330f3..4ce8ffe 100644
--- a/test.txt
+++ b/test.txt
@@ -1 +1,2 @@
 123 hello git  更新了。
+第二次更新

(二)远程

在giee上修改test文件。git pull对于拉下来的修改文件自动对其进行git add /rm 及git commit 操作。所以拉下来的文件有那些修改,查看的方式可把它们归结于上一次提交的比较。
git diff HEAD 显示工作目录与git仓库之间的差异,而git diff HEAD^ 则显示上一次提交之前工作目录与git仓库之间的差异。所以我们在git pull后,可以通过git diff HEAD^ 来查看拉下来的文件有那些具体的修改。
在这里插入图片描述

# 注意拉取下来的项目会自动add 和 commit
$ git pull gitee master
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 356 bytes | 44.00 KiB/s, done.
From https://gitee.com/wuyujitang/spring-cloud-h
 * branch            master     -> FETCH_HEAD
   ee53e34..5f37b5b  master     -> gitee/master
Updating ee53e34..5f37b5b
Fast-forward
 test.txt | 1 +
 1 file changed, 1 insertion(+)

$ git diff HEAD^
diff --git a/test.txt b/test.txt
index 4ce8ffe..86ec1ba 100644
--- a/test.txt
+++ b/test.txt
@@ -1,2 +1,3 @@
 123 hello git  更新了。
 第二次更新
+第三次修改,在远程gitee修改,模拟其他开发者修改代码。

idea更新git远程代码,查看代码改动了哪些

十三、版本标签

命令git tag < tagname> [commit id]用于新建一个标签,默认标签是打在最新提交的commit上的,也可以指定一个commit id。通过git log 获取commit id

$ git commit -m "发布版本v1.0"
[master f0e4823] 发布版本v1.0
 1 file changed, 1 insertion(+)

hs@DESKTOP-9D82N3U MINGW64 /d/lihua/java code/my/spring-cloud-H (master)
$ git tag v1.0

* 命令git tag [commit id]用于新建一个标签,默认标签是打在最新提交的commit上的,也可以指定一个commit id
(找到历史提交的commit id:git log --pretty=oneline --abbrev-commit)
* 命令git tag -a -m "describe" [commit id]可以指定标签信息
* 命令git tag可以查看所有标签
* 可以用git show 查看标签信息
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值