git命令行的使用

基本命令:

  1. git --help 显示帮助
$ git --help
usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           [--super-prefix=<path>] [--config-env=<name>=<envvar>]
           <command> [<args>]

These are common Git commands used in various situations:

start a working area (see also: git help tutorial)
   clone     Clone a repository into a new directory
   init      Create an empty Git repository or reinitialize an existing one

work on the current change (see also: git help everyday)
   add       Add file contents to the index
   mv        Move or rename a file, a directory, or a symlink
   restore   Restore working tree files
   rm        Remove files from the working tree and from the index

examine the history and state (see also: git help revisions)
   bisect    Use binary search to find the commit that introduced a bug
   diff      Show changes between commits, commit and working tree, etc
   grep      Print lines matching a pattern
   log       Show commit logs
   show      Show various types of objects
   status    Show the working tree status

grow, mark and tweak your common history
   branch    List, create, or delete branches
   commit    Record changes to the repository
   merge     Join two or more development histories together
   rebase    Reapply commits on top of another base tip
   reset     Reset current HEAD to the specified state
   switch    Switch branches
   tag       Create, list, delete or verify a tag object signed with GPG

collaborate (see also: git help workflows)
   fetch     Download objects and refs from another repository
   pull      Fetch from and integrate with another repository or a local branch
   push      Update remote refs along with associated objects

'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help <command>' or 'git help <concept>'
to read about a specific subcommand or concept.
See 'git help git' for an overview of the system.

  1. git config

在git中,我们使用git config 命令用来配置git的配置文件,git配置级别主要有以下3类:

1、仓库级别 local 【优先级最高】

2、用户级别 global【优先级次之】

3、系统级别 system【优先级最低】

配置与查看:

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning
$ git config --global user.email yunweixiaocai@csdn.com

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning
$ git config --global user.name yunweixiaocai

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning
$ git config --global -l
user.name=yunweixiaocai
user.email=yunweixiaocai@csdn.com

# 重置信息
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning
$ git config --unset --global user.name

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning
$ git config --global -l
user.email=yunweixiaocai@csdn.com

# 设置命令别名
96133@LAPTOP-E2F5BG63 MINGW64 ~/Desktop
$ git config --global alias.cout checkout
  1. 生成秘钥
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning
$ ssh-keygen -t rsa -C yunweixiaocai@csdn.com
……
Your identification has been saved in /c/Users/96133/.ssh/id_rsa
Your public key has been saved in /c/Users/96133/.ssh/id_rsa.pub
……

将/c/Users/96133/.ssh/id_rsa.pub的内容添加至你项目所在的github平台,如:https://gitee.com/profile/sshkeys

  1. git init
    初始化本地目录,使之可以使用版本控制功能
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning
$ cd localdir/

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir
$ git init
Initialized empty Git repository in D:/gitlearning/localdir/.git/

  1. git status / git add / git commit
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ touch bbb.txt

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git add .

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git status
On branch master

No commits yet

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

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git commit -m "commit reason:add a file-bbb
> comitter: yunweixioacai"
[master (root-commit) 4dcf0d9] commit reason:add a file-bbb comitter: yunweixioacai
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 bbb.txt

  1. git diff
    请添加图片描述

git diff 不加任何参数的时候比较的是工作区和暂存区之间的区别,而git add是将工作区的文件提交至暂存区
所以首先修改两行内容,一定要在git add之前执行git diff才能看到区别:

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git diff
warning: LF will be replaced by CRLF in bbb.txt.
The file will have its original line endings in your working directory
diff --git a/bbb.txt b/bbb.txt
index c6b99ff..236c9e6 100644
--- a/bbb.txt
+++ b/bbb.txt
@@ -1,7 +1,7 @@
 add a line
-add a line
-add a line
+add two lines
+add two lines
 add a line
 add a line
 
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git add .
warning: LF will be replaced by CRLF in bbb.txt.
The file will have its original line endings in your working directory

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git diff

–staged 比较暂存区与本地库之间的区别,也就是上一次commit之后至今已暂存(add)未commit的内容

/d/gitlearning/localdir (master)
$ git add .
warning: LF will be replaced by CRLF in bbb.txt.
The file will have its original line endings in your working directory

 /d/gitlearning/localdir (master)
$ git diff

/d/gitlearning/localdir (master)
$ git diff --staged
diff --git a/bbb.txt b/bbb.txt
index c6b99ff..236c9e6 100644
--- a/bbb.txt
+++ b/bbb.txt
@@ -1,7 +1,7 @@
 add a line
-add a line
-add a line
+add two lines
+add two lines
 add a line
 add a line

  1. git mv 移动或重命名
    mv之后可直接commit,无需add
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git mv ccc.txt ddd.txt

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        renamed:    ccc.txt -> ddd.txt
  1. git rm
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git rm ddd.txt
rm 'ddd.txt'

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        deleted:    ddd.txt

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git commit -m "ddd" ddd.txt
[master 7de7866] ddd
 1 file changed, 2 deletions(-)
 delete mode 100644 ddd.txt
  1. git chekout --commit之前恢复所有修改(恢复至上一次提交的状态)
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ vi ddd.txt

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git checkout HEAD -- ddd.txt

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git status
On branch master
nothing to commit, working tree clean

# 恢复到最近一次提交的上一次提交,^^代表最近一次提交的上两次提交
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git checkout HEAD^ -- ddd.txt

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ cat ddd.txt
rrrrr
ttttt

  1. git revert id 恢复提交
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git revert e2c69b3
[master ab311f4] Revert "modified one line"
 1 file changed, 1 insertion(+), 1 deletion(-)

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git log --oneline
ab311f4 (HEAD -> master) Revert "modified one line"
0bb08c0 add aaa.ttt
e2c69b3 modified one line
e6bdb10 delete one line
5b443fe clean
e53c101 add
7de7866 ddd
7609339 nn
2996cb5 mv
e06fb8d add dd
61a7e40 mv

  1. git reset

三种模式:
git reset [filename] --hard commitID :硬重置,工作区与暂存区的修改被删除,恢复到与commitID 时的状态完全一致
git reset [filename] [–mixed] commitID:保留工作目录,并清空暂存区
git reset [filename] --soft commitID 会保留工作区的内容,并把因为保留工作区内容所带来的新的文件差异放进暂存区。

  1. git branch
    查看分支、创建分支、切换分支、修改分支名称、删除分支
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git branch
* master

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git branch newbranch

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git branch
* master
  newbranch

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git checkout newbranch
Switched to branch 'newbranch'

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git branch -m newbranch newbranch-1

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git branch
* master
  newbranch-1

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git branch -d newbranch-1
Deleted branch newbranch-1 (was 3a1b794).
  1. git merge
    在newbranch与master上分别修改不同的文件并commit后:
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git log --oneline --all --decorate
4ef579b (HEAD -> master) modify bbb on master
a09eee6 (newbranch) modify on newbranch
3a1b794 all
4dcf0d9 commit reason:add a file-bbb comitter: yunweixioacai

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git merge newbranch
Merge made by the 'ort' strategy.
 aaa.txt | 1 +
 1 file changed, 1 insertion(+)

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git log --oneline --all --decorate
6dbf89c (HEAD -> master) Merge branch 'newbranch'
4ef579b modify bbb on master
a09eee6 (newbranch) modify on newbranch
3a1b794 all
4dcf0d9 commit reason:add a file-bbb comitter: yunweixioacai

处理冲突:
当在不同分支修改相同文件并commit后merge时可能会出现冲突:

$ git log --decorate --all --oneline
673df32 (HEAD -> master) master
8d0aefb (newbranch) sddfds
6dbf89c Merge branch 'newbranch'
4ef579b modify bbb on master
a09eee6 modify on newbranch
3a1b794 all
4dcf0d9 commit reason:add a file-bbb comitter: yunweixioacai

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git merge newbranch
Auto-merging aaa.txt
CONFLICT (content): Merge conflict in aaa.txt
Automatic merge failed; fix conflicts and then commit the result.

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master|MERGING)  # 注意这里的merging

此时若要放弃合并:

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master|MERGING)
$ git merge --abort

若要解决冲突,则要修改后commit:

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master|MERGING)
$ vi aaa.txt

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master|MERGING)
$ git add .

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master|MERGING)
$ git commit
[master 6c62b6a] Merge branch 'newbranch'

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git log --oneline --de
--decorate   --decorate=  --dense

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git log --oneline --de
--decorate   --decorate=  --dense

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git log --oneline --decorate --all
6c62b6a (HEAD -> master) Merge branch 'newbranch'
673df32 master
8d0aefb (newbranch) sddfds
6dbf89c Merge branch 'newbranch'
4ef579b modify bbb on master
a09eee6 modify on newbranch
3a1b794 all
4dcf0d9 commit reason:add a file-bbb comitter: yunweixioacai

15.git stash
保存工作区的修改并恢复至修改之前的状态

# 修改文件
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ vi aaa.txt

# 执行stash
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git stash save aaa.txt "add one line on aaa.txt"
Saved working directory and index state On master: aaa.txt add one line on aaa.txt

#查看状态是clean状态
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git status
On branch master
nothing to commit, working tree clean

# 查看git stash保存内容列表
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git stash list
stash@{0}: On master: aaa.txt add one line on aaa.txt

# 查看保存的修改
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git stash show -p stash@{0}
diff --git a/aaa.txt b/aaa.txt
index bb574c6..0b2ccac 100644
--- a/aaa.txt
+++ b/aaa.txt
@@ -1,2 +1,4 @@
 popopoddsfd·
 ddddggghhhmaster
+git stash
+t stass:wq

# 恢复保存的修改至工作区
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git stash list
stash@{0}: On master: aaa.txt add one line on aaa.txt

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git stash apply stash@{0}
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:   aaa.txt

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

#删除保存的stash
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git stash drop stash@{1}
Dropped stash@{1} (ff439665242c07c5a89892d510c5bb7ffbe3e837)

  1. git log
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git log
commit 6c62b6af8738806bf3d4bc1a9403359fbde5534b (HEAD -> master)
Merge: 673df32 8d0aefb
Author: yunweixiaocai <yunweixiaocai@csdn.com>
Date:   Sun Nov 21 20:33:42 2021 +0800

    Merge branch 'newbranch'

commit 673df3202641b4728ccdac029be6433b0db6352d
Author: yunweixiaocai <yunweixiaocai@csdn.com>
Date:   Sun Nov 21 20:29:02 2021 +0800

    master

commit 8d0aefb41f58341d9c3b0062ec319a61c8d153fb (newbranch-1)
Author: yunweixiaocai <yunweixiaocai@csdn.com>
Date:   Sun Nov 21 20:28:21 2021 +0800

    sddfds

单行显示简单信息,并指定显示数量、提交时间与作者:

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir (master)
$ git log --oneline -5 --author="yunweixiaocai" --before="2021-12-1"
6c62b6a (HEAD -> master) Merge branch 'newbranch'
673df32 master
8d0aefb (newbranch-1) sddfds
6dbf89c Merge branch 'newbranch'
4ef579b modify bbb on master
  1. git ignore
    设置忽略文件,文件不加入版本控制
# 设置使用哪个配置文件
96133@LAPTOP-E2F5BG63 MINGW64 ~/Desktop
$ git config --global core.excludesfile ~/gitignore_global
# 在配置文件中设置ignore规则
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir
$ cat ~/gitignore_global
*.ttt

# 创建与规则相同的文件
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir
$ vim test.ttt

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir
$ ls -l
total 3
-rw-r--r-- 1 96133 197609 33 Nov 21 20:45 aaa.txt
-rw-r--r-- 1 96133 197609 16 Nov 21 20:28 bbb.txt
-rw-r--r-- 1 96133 197609  8 Nov 21 21:06 test.ttt

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir
$ git status
On branch master
nothing to commit, working tree clean

每个项目单独忽略,使用项目下的.gitignore文件

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir
$ cat .gitignore
*.thisproject
*.gitignore

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir
$ touch aaa.thisproject

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir
$ git status
On branch master
nothing to commit, working tree clean

取消已追踪的文件,不再加入版本控制

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir
$ echo "after git rm --cached aaa.txt" > aaa.txt

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir
$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        deleted:    aaa.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        aaa.txt


96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir
$ vim .gitignore

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir
$ echo aaa.txt >> .gitignore

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir
$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        deleted:    aaa.txt

  1. 获取已跟踪的文件列表
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir
$ git ls-files --full-name
bbb.txt
temp/aaa.thisproject
temp/aaa.txt
  1. git rev-parse
    显示版本库 .git 目录所在的位置。
96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir/temp
$ git rev-parse --git-dir
D:/gitlearning/localdir/.git

显示工作区根目录。

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir/temp
$ git rev-parse --show-toplevel
D:/gitlearning/localdir

显示相对于工作区根目录的相对目录。

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir/temp/tmp1/tmp2
$ git rev-parse --show-prefix
temp/tmp1/tmp2/

显示从当前目录(cd)后退(up)到工作区的根的深度。

96133@LAPTOP-E2F5BG63 MINGW64 /d/gitlearning/localdir/temp/tmp1/tmp2
$ git rev-parse --show-cdup
../../../
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维小菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值