2020-09-03-git命令操作笔记

[root@m01 /]# rpm -aq git
git-1.8.3.1-23.el7_8.x86_64
[root@m01 /]# git config --global user.name 'zgk'
[root@m01 /]# git config --global user.email 'zgk@zgk.com'
[root@m01 /]# git config --global color.ui true
[root@m01 /]# 


[root@m01 /]# cat ~/.gitconfig 
[user]
    name = zgk
    email = zgk@zgk.com
[color]
    ui = true
[root@m01 /]# 

[root@m01 /]# cd ~
[root@m01 ~]# ll
总用量 4
-rw-------. 1 root root 1659 6月  27 06:53 anaconda-ks.cfg
[root@m01 ~]# mkdir data
[root@m01 ~]# cd data
[root@m01 ~/data]# git init     #初始化仓库,把一个目录初始化为版本仓库,可以是空目录或者是带内容的目录
初始化空的 Git 版本库于 /root/data/.git/
[root@m01 ~/data]# git status  #查看当前仓库的状态
# 位于分支 master
#
# 初始提交
#
无文件要提交(创建/拷贝文件并使用 "git add" 建立跟踪)
[root@m01 ~/data]# tree .git
.git
├── branches
├── config
├── description
├── HEAD
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   └── update.sample
├── info
│   └── exclude
├── objects
│   ├── info
│   └── pack
└── refs
    ├── heads
    └── tags


[root@m01 ~/data]# touch a b c
[root@m01 ~/data]# git status 
# 位于分支 master
#
# 初始提交
#
# 未跟踪的文件:
#   (使用 "git add <file>..." 以包含要提交的内容)
#
#   a
#   b
#   c
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
[root@m01 ~/data]# git add a  #放暂存区
[root@m01 ~/data]# tree .git
.git
├── branches
├── config
├── description
├── HEAD
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   └── update.sample
├── index   #添加文件a后,此时产生index文件
├── info
│   └── exclude
├── objects
│   ├── e6
│   │   └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
│   ├── info
│   └── pack
└── refs
    ├── heads
    └── tags

10 directories, 15 files

[root@m01 ~/data]# git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
#   (使用 "git rm --cached <file>..." 撤出暂存区)
#
#   新文件:    a
#
# 未跟踪的文件:
#   (使用 "git add <file>..." 以包含要提交的内容)
#
#   b
#   c

[root@m01 ~/data]# git add .  # . 或者 *是添加所有文件
[root@m01 ~/data]# git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
#   (使用 "git rm --cached <file>..." 撤出暂存区)
#
#   新文件:    a
#   新文件:    b
#   新文件:    c
#
[root@m01 ~/data]# 

[root@m01 ~/data]# git rm --cached c  #从暂存区撤回到工作区
rm 'c'
[root@m01 ~/data]# git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
#   (使用 "git rm --cached <file>..." 撤出暂存区)
#
#   新文件:    a
#   新文件:    b
#
# 未跟踪的文件:
#   (使用 "git add <file>..." 以包含要提交的内容)
#
#   c
[root@m01 ~/data]# 

[root@m01 ~/data]# rm -rf c  
[root@m01 ~/data]# ll
总用量 0
-rw-r--r-- 1 root root 0 8月  16 13:46 a
-rw-r--r-- 1 root root 0 8月  16 13:46 b
[root@m01 ~/data]# git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
#   (使用 "git rm --cached <file>..." 撤出暂存区)
#
#   新文件:    a
#   新文件:    b
#
[root@m01 ~/data]# 



[root@m01 ~/data]# git rm -f b  #同时删除工作目录和暂存区的内容
rm 'b'
[root@m01 ~/data]# ll
总用量 0
-rw-r--r-- 1 root root 0 8月  16 13:46 a
[root@m01 ~/data]# git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
#   (使用 "git rm --cached <file>..." 撤出暂存区)
#
#   新文件:    a
#
[root@m01 ~/data]# 



[root@m01 ~/data]# git commit -m "add newfile a"  #从缓存区提交到本地仓库
[master(根提交) 493a850] add newfile a   #493a850 hash值,相当于做了快照
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 a
[root@m01 ~/data]# git status
# 位于分支 master
无文件要提交,干净的工作区
[root@m01 ~/data]# 


[root@m01 ~/data]# mv a a.txt  #不会认为是改名
[root@m01 ~/data]# git status
# 位于分支 master
# 尚未暂存以备提交的变更:
#   (使用 "git add/rm <file>..." 更新要提交的内容)
#   (使用 "git checkout -- <file>..." 丢弃工作区的改动)
#
#   删除:      a
#
# 未跟踪的文件:
#   (使用 "git add <file>..." 以包含要提交的内容)
#
#   a.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
[root@m01 ~/data]# 



[root@m01 ~/data]# git rm --cached a
rm 'a'
[root@m01 ~/data]# git status
# 位于分支 master
# 要提交的变更:
#   (使用 "git reset HEAD <file>..." 撤出暂存区)
#
#   删除:      a
#
# 未跟踪的文件:
#   (使用 "git add <file>..." 以包含要提交的内容)
#
#   a.txt
[root@m01 ~/data]# 

[root@m01 ~/data]# git add a.txt
[root@m01 ~/data]# git status
# 位于分支 master
# 要提交的变更:
#   (使用 "git reset HEAD <file>..." 撤出暂存区)
#
#   重命名:    a -> a.txt
#
[root@m01 ~/data]# 

[root@m01 ~/data]# git commit -m "modified a a.txt"
[master ec8475e] modified a a.txt
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename a => a.txt (100%)
[root@m01 ~/data]# git status
# 位于分支 master
无文件要提交,干净的工作区
[root@m01 ~/data]# 

[root@m01 ~/data]# git mv a.txt a
[root@m01 ~/data]# git status
# 位于分支 master
# 要提交的变更:
#   (使用 "git reset HEAD <file>..." 撤出暂存区)
#
#   重命名:    a.txt -> a
#
[root@m01 ~/data]# 


[root@m01 ~/data]# git commit -m "modified a.txt a"
[master cf8b62e] modified a.txt a
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename a.txt => a (100%)
[root@m01 ~/data]# git status
# 位于分支 master
无文件要提交,干净的工作区
[root@m01 ~/data]# 

[root@m01 ~/data]# git diff
[root@m01 ~/data]# 
[root@m01 ~/data]# echo index >a
[root@m01 ~/data]# git diff
diff --git a/a b/a 
index e69de29..9015a7a 100644
--- a/a
+++ b/a
@@ -0,0 +1 @@
+index
[root@m01 ~/data]# 



[root@m01 ~/data]# git diff --cached  ##暂存区和本地仓库相同
[root@m01 ~/data]# 




[root@m01 ~/data]# git log
commit 42ae82665c39d98c43a94c2516c52aba4ad5300b
Author: zgk <zgk@zgk.com>
Date:   Sun Aug 16 18:34:34 2020 +0800

    add index

commit cf8b62e2ab5f6ec8d3f1e33fa5367ac4ab40ec7d
Author: zgk <zgk@zgk.com>
Date:   Sun Aug 16 14:31:12 2020 +0800

    modified a.txt a

commit ec8475e2a305e043dc8a2921849e100b0fb0071d
Author: zgk <zgk@zgk.com>
Date:   Sun Aug 16 14:28:33 2020 +0800

    modified a a.txt

commit 493a850ba3b9fed3a80afb8fb6a75431dd8ee921
Author: zgk <zgk@zgk.com>
Date:   Sun Aug 16 14:20:23 2020 +0800

    add newfile a


[root@m01 ~/data]# git log --oneline  ##一行简单显示
42ae826 add index
cf8b62e modified a.txt a
ec8475e modified a a.txt
493a850 add newfile a


[root@m01 ~/data]# git log --oneline --decorate  ##当前指针
42ae826 (HEAD, master) add index
cf8b62e modified a.txt a
ec8475e modified a a.txt
493a850 add newfile a

[root@m01 ~/data]# git log -p  ##显示具体内容变化
commit 42ae82665c39d98c43a94c2516c52aba4ad5300b
Author: zgk <zgk@zgk.com>
Date:   Sun Aug 16 18:34:34 2020 +0800

    add index

diff --git a/a b/a
index e69de29..9015a7a 100644
--- a/a
+++ b/a
@@ -0,0 +1 @@
+index

[root@m01 ~/data]# git log -1   ##只显示一条
commit 42ae82665c39d98c43a94c2516c52aba4ad5300b
Author: zgk <zgk@zgk.com>
Date:   Sun Aug 16 18:34:34 2020 +0800

    add index



[root@m01 ~/data]# git reset --hard 493a850  ##回滚
HEAD 现在位于 493a850 add newfile a


[root@m01 ~/data]# git reflog
42ae826 HEAD@{0}: reset: moving to 42ae826
cf8b62e HEAD@{1}: reset: moving to cf8b62e
493a850 HEAD@{2}: reset: moving to 493a850
42ae826 HEAD@{3}: commit: add index
cf8b62e HEAD@{4}: commit: modified a.txt a
ec8475e HEAD@{5}: commit: modified a a.txt
493a850 HEAD@{6}: commit (initial): add newfile a


[root@m01 ~/data]# git branch testing  ##建立分支
[root@m01 ~/data]# git branch    ##查看分支,*号位置
* master
  testing


[root@m01 ~/data]# touch aaa bbb ccc
[root@m01 ~/data]# git add aaa
[root@m01 ~/data]# git commit -m "add aaa"
[master ff0d064] add aaa
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 aaa
[root@m01 ~/data]# git add bbb
[root@m01 ~/data]# git commit -m "add bbb"
[master 9717e30] add bbb
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 bbb
[root@m01 ~/data]# git add ccc
[root@m01 ~/data]# git commit -m "add ccc"
[master 3b2ed6e] add ccc
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 ccc
[root@m01 ~/data]# git log --oneline
3b2ed6e add ccc
9717e30 add bbb
ff0d064 add aaa
42ae826 add index
cf8b62e modified a.txt a
ec8475e modified a a.txt
493a850 add newfile a
[root@m01 ~/data]# git log --oneline --decorate
3b2ed6e (HEAD, master) add ccc
9717e30 add bbb
ff0d064 add aaa
42ae826 (testing) add index
cf8b62e modified a.txt a
ec8475e modified a a.txt
493a850 add newfile a


[root@m01 ~/data]# git checkout testing
切换到分支 'testing'
[root@m01 ~/data]# git log --oneline --decorate
42ae826 (HEAD, testing) add index
cf8b62e modified a.txt a
ec8475e modified a a.txt
493a850 add newfile a
[root@m01 ~/data]# git branch
  master
* testing
[root@m01 ~/data]# ll
总用量 4
-rw-r--r-- 1 root root 6 8月  16 18:49 a

[root@m01 ~/data]# git checkout master
切换到分支 'master'
[root@m01 ~/data]# git branch -d testing
已删除分支 testing(曾为 42ae826)。

[root@m01 ~/data]# git branch
* master
[root@m01 ~/data]# git checkout -b testing
切换到一个新分支 'testing'
[root@m01 ~/data]# git branch
  master
* testing
[root@m01 ~/data]# ls
a  aaa  bbb  ccc
[root@m01 ~/data]# git log --oneline --decorate
3b2ed6e (HEAD, testing, master) add ccc
9717e30 add bbb
ff0d064 add aaa
42ae826 add index
cf8b62e modified a.txt a
ec8475e modified a a.txt
493a850 add newfile a


[root@m01 ~/data]# touch test-ddd
[root@m01 ~/data]# git add .
[root@m01 ~/data]# git commit -m "add newfile test-ddd"
[testing d821c08] add newfile test-ddd
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test-ddd
[root@m01 ~/data]# git branch
  master
* testing
[root@m01 ~/data]# git log --oneline --decorate
d821c08 (HEAD, testing) add newfile test-ddd
3b2ed6e (master) add ccc
9717e30 add bbb
ff0d064 add aaa
42ae826 add index
cf8b62e modified a.txt a
ec8475e modified a a.txt
493a850 add newfile a




[root@m01 ~/data]# touch master-eee
[root@m01 ~/data]# git add .
[root@m01 ~/data]# git commit -m "add newfile master-eee"
[master 4198ea0] add newfile master-eee
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 master-eee
[root@m01 ~/data]# git log --oneline --decorate
4198ea0 (HEAD, master) add newfile master-eee
3b2ed6e add ccc
9717e30 add bbb
ff0d064 add aaa
42ae826 add index
cf8b62e modified a.txt a
ec8475e modified a a.txt
493a850 add newfile a


[root@m01 ~/data]# ll
总用量 4
-rw-r--r-- 1 root root 6 8月  16 18:49 a
-rw-r--r-- 1 root root 0 8月  16 19:39 aaa
-rw-r--r-- 1 root root 0 8月  16 19:39 bbb
-rw-r--r-- 1 root root 0 8月  16 19:39 ccc
-rw-r--r-- 1 root root 0 8月  16 20:17 master-eee
[root@m01 ~/data]# git merge testing 
Merge made by the 'recursive' strategy.
 test-ddd | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test-ddd
[root@m01 ~/data]# ll
总用量 4
-rw-r--r-- 1 root root 6 8月  16 18:49 a
-rw-r--r-- 1 root root 0 8月  16 19:39 aaa
-rw-r--r-- 1 root root 0 8月  16 19:39 bbb
-rw-r--r-- 1 root root 0 8月  16 19:39 ccc
-rw-r--r-- 1 root root 0 8月  16 20:17 master-eee
-rw-r--r-- 1 root root 0 8月  16 20:19 test-ddd   ##合并到主干


[root@m01 ~/data]# git checkout master 
切换到分支 'master'
[root@m01 ~/data]# git branch -d testing 
已删除分支 testing(曾为 d821c08)。
[root@m01 ~/data]# git log --oneline --decorate
bb5116d (HEAD, master) Merge branch 'testing' merge testing
4198ea0 add newfile master-eee
d821c08 add newfile test-ddd
3b2ed6e add ccc
9717e30 add bbb
ff0d064 add aaa
42ae826 add index
cf8b62e modified a.txt a
ec8475e modified a a.txt
493a850 add newfile a





[root@m01 ~/data]# cat aaa
<<<<<<< HEAD
master
=======
test
>>>>>>> test
[root@m01 ~/data]# git status
# 位于分支 master
# 您有尚未合并的路径。
#   (解决冲突并运行 "git commit")
#
# 未合并的路径:
#   (使用 "git add <file>..." 标记解决方案)
#
#   双方添加:     aaa
#
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
[root@m01 ~/data]# vim aaa
[root@m01 ~/data]# git commit -am "merge"
[master d97c1b6] merge
[root@m01 ~/data]# git status
# 位于分支 master
无文件要提交,干净的工作区
[root@m01 ~/data]# cat aaa

master

test



[root@m01 ~/data]# git log --oneline
d97c1b6 merge
2e6a9c3 master aaa
610f94f aaa
c1e53e3 touch aaa
8903f1b shanchu a
3ba610e 222 aaa
bb5116d Merge branch 'testing' merge testing
4198ea0 add newfile master-eee
d821c08 add newfile test-ddd
3b2ed6e add ccc
9717e30 add bbb
ff0d064 add aaa
42ae826 add index
cf8b62e modified a.txt a
ec8475e modified a a.txt
493a850 add newfile a

[root@m01 ~/data]# git tag -a v1.0 42ae826 -m "tag 1.0"
[root@m01 ~/data]# git tag
v1.0
[root@m01 ~/data]# git show v1.0
tag v1.0
Tagger: zgk <zgk@zgk.com>
Date:   Mon Aug 17 09:04:44 2020 +0800

tag 1.0

commit 42ae82665c39d98c43a94c2516c52aba4ad5300b
Author: zgk <zgk@zgk.com>
Date:   Sun Aug 16 18:34:34 2020 +0800

    add index

diff --git a/a b/a
index e69de29..9015a7a 100644
--- a/a
+++ b/a
@@ -0,0 +1 @@
+index
[root@m01 ~/data]# git reset --hard v1.0
HEAD 现在位于 42ae826 add index
[root@m01 ~/data]# git reflog
42ae826 HEAD@{0}: reset: moving to v1.0
d97c1b6 HEAD@{1}: commit (merge): merge
2e6a9c3 HEAD@{2}: commit: master aaa
8903f1b HEAD@{3}: checkout: moving from test to master
610f94f HEAD@{4}: commit: aaa
c1e53e3 HEAD@{5}: commit: touch aaa
8903f1b HEAD@{6}: checkout: moving from master to test
8903f1b HEAD@{7}: commit: shanchu a
3ba610e HEAD@{8}: checkout: moving from test to master
3ba610e HEAD@{9}: checkout: moving from master to test
3ba610e HEAD@{10}: merge test: Fast-forward
bb5116d HEAD@{11}: checkout: moving from test to master
3ba610e HEAD@{12}: commit: 222 aaa
bb5116d HEAD@{13}: checkout: moving from master to test
bb5116d HEAD@{14}: checkout: moving from testing to master
bb5116d HEAD@{15}: checkout: moving from master to testing
bb5116d HEAD@{16}: checkout: moving from master to master
bb5116d HEAD@{17}: checkout: moving from testing to master
d821c08 HEAD@{18}: checkout: moving from master to testing
bb5116d HEAD@{19}: merge testing: Merge made by the 'recursive' strategy.
4198ea0 HEAD@{20}: commit: add newfile master-eee
3b2ed6e HEAD@{21}: checkout: moving from testing to master
d821c08 HEAD@{22}: commit: add newfile test-ddd
3b2ed6e HEAD@{23}: checkout: moving from master to testing
3b2ed6e HEAD@{24}: checkout: moving from testing to master
42ae826 HEAD@{25}: checkout: moving from master to testing
3b2ed6e HEAD@{26}: commit: add ccc
9717e30 HEAD@{27}: commit: add bbb
ff0d064 HEAD@{28}: commit: add aaa
42ae826 HEAD@{29}: reset: moving to 42ae826
cf8b62e HEAD@{30}: reset: moving to cf8b62e
493a850 HEAD@{31}: reset: moving to 493a850
42ae826 HEAD@{32}: commit: add index
cf8b62e HEAD@{33}: commit: modified a.txt a
ec8475e HEAD@{34}: commit: modified a a.txt
493a850 HEAD@{35}: commit (initial): add newfile a
[root@m01 ~/data]# git reset --hard bb5116d
HEAD 现在位于 bb5116d Merge branch 'testing'

[root@m01 ~/data]# git tag -a "v2.0" -m "XXX"
[root@m01 ~/data]# git tag
v1.0
v2.0
[root@m01 ~/data]# git log --oneline --decorate
bb5116d (HEAD, tag: v2.0, master) Merge branch 'testing' merge testing
4198ea0 add newfile master-eee
d821c08 add newfile test-ddd
3b2ed6e add ccc
9717e30 add bbb
ff0d064 add aaa
42ae826 (tag: v1.0) add index
cf8b62e modified a.txt a
ec8475e modified a a.txt
493a850 add newfile a

[root@m01 ~/data]# git reset --hard v1.0
HEAD 现在位于 42ae826 add index
[root@m01 ~/data]# git log --oneline --decorate
42ae826 (HEAD, tag: v1.0, master) add index
cf8b62e modified a.txt a
ec8475e modified a a.txt
493a850 add newfile a
[root@m01 ~/data]# git tag -d v1.0
已删除 tag 'v1.0'(曾为 c649ab8)
[root@m01 ~/data]# git log --oneline --decorate
42ae826 (HEAD, master) add index
cf8b62e modified a.txt a
ec8475e modified a a.txt
493a850 add newfile a



[root@m01 ~/data]# git remote add origin git@github.com:zgk-zgk/git_xiaobu.git
[root@m01 ~/data]# git remote
origin


[root@m01 ~/data]# git push -u origin master
Warning: Permanently added the RSA host key for IP address '13.229.188.59' to the list of known hosts.
Counting objects: 9, done.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (9/9), 662 bytes | 0 bytes/s, done.
Total 9 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), done.
To git@github.com:zgk-zgk/git_xiaobu.git
 * [new branch]      master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。



[root@m01 /tmp]# git clone git@github.com:zgk-zgk/git_data.git
正克隆到 'git_data'...
remote: Enumerating objects: 27, done.
remote: Counting objects: 100% (27/27), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 27 (delta 7), reused 27 (delta 7), pack-reused 0
接收对象中: 100% (27/27), done.
处理 delta 中: 100% (7/7), done.


 1000  rpm -ivh gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm 
 1001  gitlab-ctl reconfigure
 1002  gitlab-ctl status
 1007  cat .ssh/id_rsa.pub 
 1008  cd data
 1009  git remote
 1010  git remote remove origin 
 1011  git remote
 1012  git remote add origin git@10.0.0.61:test/git_data.git
 1014  git push -u origin master





©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。