Git and GitHub使用方法详细总结
一、Git的使用方法
1.设置用户名和邮箱
git config --global 参数表示这台机器上所有的Git仓库都会使用这个用户名和邮箱配置
$ git config --global user.name "zhengzaifeidelushang"
$ git config --global user.email "1755009629@qq.com"
2.初始化git仓库
创建git文件夹,根目录下点击右键运行Git bash here,使用git init 命令初始化git仓库,创建了一个.git目录,这个目录是Git用来跟踪管理版本的。
$ git init
Initialized empty Git repository in D:/git/.git/
3.添加文件到暂存区
fy@LT5CG9072G7J MINGW64 /d/git (master)
$ git add git-test.txt
没有提示说明添加成功
4.提交文件到仓库
$ git commit -m '提交git-test的txt文本到仓库'
[master fbdb923] 提交git-test的txt文本到仓库
1 file changed, 1 insertion(+)
create mode 100644 git-test.txt
5.查看状态
如下所示显示文件全部提交
$ git status
On branch master
nothing to commit, working tree clean
6.修改git-test添加一行bbb,再次查看状态
如下所示,文件已经被修改,但是未被提交
$ 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: git-test.txt
no changes added to commit (use "git add" and/or "git commit -a")
7.查看文件修改的内容
如下所示,添加了一行bbb
$ git diff git-test.txt
diff --git a/git-test.txt b/git-test.txt
index 72943a1..c0b7069 100644
--- a/git-test.txt
+++ b/git-test.txt
@@ -1 +1,3 @@
aaa
+
+bbb
\ No newline at end of file
8.提交修改到仓库
$ git add git-test.txt
$ git commit -m "git-test增加一行bbb"
[master 6e03f1c] git-test增加一行bbb
1 file changed, 2 insertions(+)
$ git status
On branch master
nothing to commit, working tree clean
9.查询提交的历史记录
$ git log
commit 6e03f1cc010b08738676c95718196b0d68e1afba
Author: zhengzaifeidelushang <1755009729@qq.com>
Date: Thu Mar 11 08:43:26 2021 +0800
git-test增加一行bbb
commit bf36f26872bfb8c0700f928b1ff3e387f06f9822
Author: zhengzaifeidelushang <1755009729@qq.com>
Date: Thu Mar 11 08:32:03 2021 +0800
提交git-test的txt文本到仓库
git log --pretty=oneline可以只显示关键信息
$ git log --pretty=oneline
6e03f1cc010b08738676c95718196b0d68e1afba git-test增加一行bbb
bf36f26872bfb8c0700f928b1ff3e387f06f9822 提交git-test的txt文本到仓库
10.版本回退
git-test再增加一行ccc,上传到仓库后,回退到上一个版本
$ git diff git-test.txt
diff --git a/git-test.txt b/git-test.txt
index c0b7069..e89cc6c 100644
--- a/git-test.txt
+++ b/git-test.txt
@@ -1,3 +1,4 @@
aaa
-bbb
\ No newline at end of file
+bbb
+ccc
\ No newline at end of file
添加文件到暂存区,并提交到仓库
$ git add git-test.txt
$ git commit -m "git-test增加一行ccc"
[master 3343a06] git-test增加一行ccc
1 file changed, 2 insertions(+), 1 deletion(-)
$ git status
On branch master
nothing to commit, working tree clean
查看提交的历史记录
$ git log --pretty=oneline
3343a0676923a189d8de71f5d2369ba895ea2ae6 (HEAD -> master) git-test增加一行ccc
6e03f1cc010b08738676c95718196b0d68e1afba git-test增加一行bbb
bf36f26872bfb8c0700f928b1ff3e387f06f9822 提交git-test的txt文本到仓库
回退到上一个版本使用git reset --hard HEAD^
回退到上上个版本使用git reset --hard HEAD^^或者git reset --hard HEAD~2
$ git reset --hard HEAD^
HEAD is now at 6e03f1c git-test增加一行bbb
查看回退到的版本
$ git log
commit 6e03f1cc010b08738676c95718196b0d68e1afba (HEAD -> master)
Author: zhengzaifeidelushang <1755009729@qq.com>
Date: Thu Mar 11 08:43:26 2021 +0800
git-test增加一行bbb
commit bf36f26872bfb8c0700f928b1ff3e387f06f9822
Author: zhengzaifeidelushang <1755009729@qq.com>
Date: Thu Mar 11 08:32:03 2021 +0800
提交git-test的txt文本到仓库
$ cat git-test.txt
aaa
bbb
11.查看版本号
$ git reflog
6e03f1c (HEAD -> master) HEAD@{0}: reset: moving to HEAD^
3343a06 HEAD@{1}: commit: git-test增加一行ccc
6e03f1c (HEAD -> master) HEAD@{2}: commit: git-test增加一行bbb
bf36f26 HEAD@{3}: commit (initial): 提交git-test的txt文本到仓库
12.使用版本号回退到任何版本
使用git reset --hard 版本号回退到最新版
$ git reset --hard 3343a06
HEAD is now at 3343a06 git-test增加一行ccc
$ git log --pretty=oneline
3343a0676923a189d8de71f5d2369ba895ea2ae6 (HEAD -> master) git-test增加一行ccc
6e03f1cc010b08738676c95718196b0d68e1afba git-test增加一行bbb
bf36f26872bfb8c0700f928b1ff3e387f06f9822 提交git-test的txt文本到仓库
$ cat git-test.txt
aaa
bbb
ccc
13.撤销修改
$ git checkout -- git-test.txt
14.只能撤销没有上传到暂存区的内容
添加一行eee上传到暂存区
$ git add git-test.txt
接着添加一行fff,没有上传到暂存区
使用撤销命令,把未添加到暂存区的内容撤销掉
$ git checkout -- git-test.txt
15.恢复删除的文件
添加上传到仓库
$ git add test.txt
$ git commit -m "测试上传"
[master 34dffaf] 测试上传
2 files changed, 3 insertions(+), 1 deletion(-)
create mode 100644 test.txt
删除test.txt
$ rm test.txt
查看test.txt已经删除,可以从版本库中恢复被删掉的test.txt,也可以直接commit删掉仓库中的test.txt
$ git status
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: test.txt
从版本库中恢复test.txt到本地目录
$ git checkout test.txt
16.彻底删除本地和仓库中的文件
本地删除test.txt
$ rm test.txt
$ git status
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: test.txt
通过commit永久删掉仓库中的test.txt
$ git add .
$ git commit -m "删除版本库中的test.txt"
[master 16ff81e] 删除版本库中的test.txt
1 file changed, 1 deletion(-)
delete mode 100644 test.txt
17.创建并切换分支
Git里主分支即master分支,HEAD指向当前分支。
- git checkout –b kafka:表示创建并切换到kafka分支
- git branch kafka:表示创建kafka分支
- git checkout kafka:表示切换到kafka分支
$ git checkout -b kafka
Switched to a new branch 'kafka'
查看当前分支
$ git branch
* kafka
master
18.合并分支
添加一行fff
$ git add git-test.txt
$ git commit -m "kafka分支上增加内容fff"
[kafka dba123b] kafka分支上增加内容fff
1 file changed, 3 insertions(+), 1 deletion(-)
切换回master分支,并.看git-test.txt的内容
$ git checkout master
Switched to branch 'master'
$ cat git-test.txt
aaa
bbb
ccc
ddd
eee
在master分支上,合并kafka分支上的内容到master分支上
git merge命令用于合并指定分支到当前分支上,合并后,master分支上的git-test内容应该和kafka分支上的内容是一样的。
$ git merge kafka
Updating 16ff81e..dba123b
Fast-forward
git-test.txt | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
kafka分支上增加的一行fff成功合并到master分支上
$ cat git-test.txt
aaa
bbb
ccc
ddd
eee
fff
19.删除分支
$ git branch -d kafka
Deleted branch kafka (was dba123b).
二、GitHub使用方法
1.申请git账号
git注册地址
2.创建git仓库
3.初始化git仓库
创建git文件夹git_repository,根目录下点击右键运行Git bash here,使用git init 命令初始化git仓库,创建了一个.git目录,这个目录是Git用来跟踪管理版本的。
$ git init
Initialized empty Git repository in D:/git/.git/
4.设置用户名和邮箱
git config --global 参数表示这台机器上所有的Git仓库都会使用这个用户名和邮箱配置
$ git config --global user.name "zhengzaifeidelushang"
$ git config --global user.email "1755009729@qq.com"
5.创建SSH Key
$ ssh-keygen -t rsa -C "1755009729@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/yangfei/.ssh/id_rsa):
Created directory '/c/Users/yangfei/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/yangfei/.ssh/id_rsa
Your public key has been saved in /c/Users/yangfei/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:I+TupR+pg2MQaq2yAxF5JuJ70QICURny8AmFLwk/+7k 1755009729@qq.com
The key's randomart image is:
+---[RSA 3072]----+
|B*+o |
|OB+. |
|=O= . . |
|+.=o + |
| +o+o o S |
|oooo . . o |
|o oo o. + |
|o. *..+ . |
|oo .Eo+o. |
+----[SHA256]-----+
6.查看生成的公钥和私钥
.
7.复制id_rsa.pub中的内容,登录GitHub,添加SSH Key
8.复制创建的bigdata仓库的HTTP地址
9.将github上创建的bigdata仓库克隆到本地
进入本地/d/git_repository目录下,根目录下点击右键运行Git bash here
$ git clone https://github.com/zhengzaifeidelushang/bigdata.git
Cloning into 'bigdata'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
如下图所示,成功克隆github上bigdata仓库中的文件到本地git_repository目录下
10.添加github远程仓库
$ git remote add origin https://github.com/zhengzaifeidelushang/bigdata.git
11.将本地代码或文件上传到github上的bigdata仓库
上传到工作区
$ git add App.java
$ git commit -m "测试上传"
[master 9327fe9] 测试上传
create mode 100644 App.java
将仓库区中的内容推送到github上
第一次使用git push origin master会出现登录验证,输入GitHub账号和密码,即能成功上传代码或文本到github上
$ git push origin master:base
Enumerating objects: 12, done.
Counting objects: 100% (12/12), done.
Delta compression using up to 4 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (12/12), 1.14 KiB | 166.00 KiB/s, done.
Total 12 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: Create a pull request for 'base' on GitHub by visiting:
remote: https://github.com/zhengzaifeidelushang/bigdata/pull/new/base
remote:
To https://github.com/zhengzaifeidelushang/bigdata.git
* [new branch] master -> base
如下图所示,成功上传代码到github
12.完整示例:创建一个新的git仓库bigdata,并上传文件或代码到github上面
$ mkdir bigdata
$ cd bigdata
$ git init
Initialized empty Git repository in D:/bigdata/.git/
$ git remote add origin https://github.com/zhengzaifeidelushang/bigdata.git
$ git add java
$ git add resources
$ git commit -m "提交代码"
[master (root-commit) 9eaa4d7] 提交代码
3 files changed, 139 insertions(+)
create mode 100644 java/com/bigdata/maven/FamilyAccount.java
create mode 100644 java/com/bigdata/maven/Utility.java
create mode 100644 resources/META-INF/MANIFEST.MF
$ git status
On branch master
nothing to commit, working tree clean
$ git push origin master
Enumerating objects: 11, done.
Counting objects: 100% (11/11), done.
Delta compression using up to 4 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (11/11), 2.10 KiB | 307.00 KiB/s, done.
Total 11 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: Create a pull request for 'master' on GitHub by visiting:
remote: https://github.com/zhengzaifeidelushang/bigdata/pull/new/master
remote:
To https://github.com/zhengzaifeidelushang/bigdata.git
* [new branch] master -> master
13.创建kafka分支并推送到github
$ git branch kafka
$ git checkout kafka
Switched to branch 'kafka'
$ git push origin kafka
zhengzaifeidelushangfeEnumerating objects: 14, done.
Counting objects: 100% (14/14), done.
Delta compression using up to 4 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (12/12), 1.09 KiB | 139.00 KiB/s, done.
Total 12 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: Create a pull request for 'kafka' on GitHub by visiting:
remote: https://github.com/zhengzaifeidelushang/bigdata/pull/new/kafka
remote:
To https://github.com/zhengzaifeidelushang/bigdata.git
* [new branch] kafka -> kafka
14.从github上拉取kafka、base分支到本地
$ mkdir git_repository2
$ git init
$ git config --global user.name "zhengzaifeidelushang"
$ git config --global user.email "1755009729@qq.com"
$ git clone https://github.com/zhengzaifeidelushang/bigdata.git
Cloning into 'bigdata'...
remote: Enumerating objects: 38, done.
remote: Counting objects: 100% (38/38), done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 38 (delta 1), reused 34 (delta 0), pack-reused 0
Receiving objects: 100% (38/38), 4.77 KiB | 443.00 KiB/s, done.
Resolving deltas: 100% (1/1), done.
$ git remote add origin https://github.com/zhengzaifeidelushang/bigdata.git
$ git checkout -b kafka
Switched to a new branch 'kafka'
$ git pull origin kafka
remote: Enumerating objects: 21, done.
remote: Counting objects: 100% (21/21), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 21 (delta 0), reused 21 (delta 0), pack-reused 0
Unpacking objects: 100% (21/21), 1.78 KiB | 22.00 KiB/s, done.
From https://github.com/zhengzaifeidelushang/bigdata
* branch kafka -> FETCH_HEAD
* [new branch] kafka -> origin/kafka
$ git pull origin base
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 412 bytes | 25.00 KiB/s, done.
From https://github.com/zhengzaifeidelushang/bigdata
* branch base -> FETCH_HEAD
* [new branch] base -> origin/base
CONFLICT (modify/delete): git-test.txt deleted in 9327fe91ae95b193be81c5e3355a0c31b2ae7654 and modified in HEAD. Version HEAD of git-test.txt left in tree.
Automatic merge failed; fix conflicts and then commit the result.
15.修改git-test.txt,并上传最新版git-test.txt到Github
$ git push origin kafka
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 392 bytes | 196.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/zhengzaifeidelushang/bigdata.git
dba123b..d66968c kafka -> kafka