目录标题
- 一、创建本地仓库——git init
- 二、将工作区内容放入暂存区——git add filename
- 三、查看提交日志——git log
- 四、查看文件状态——git status filename
- (一)所有文件
- (二)指定文件
- (三)更新文件后,未提交add
- 五、将暂存区全部内容放入资源区——git commit -m "msg"
- 六、回退版本——git reset --hard commitId
- 七、撤销修改——对单个文件
- (一)没有add前
- (二)add后
- (三)commit后
- 八、删除文件
- 九、本地仓库绑定远程仓库
- 十、将资源区的全部内容推送到远程仓库——push
- 十一、拉取远程仓库的内容——pull
- 十二、查看本地、远程代码被修改了什么
- (一)本地
- (二)远程
- 十三、版本标签
一、创建本地仓库——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文件我们修改了两次。我如果撤销这些修改呢。
- 没有修改前:
- 第一次修改:
- 第二次修改:
* 回退到上一个版本: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修改,模拟其他开发者修改代码。
十三、版本标签
命令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 查看标签信息