Git基本命令

Git

1. git仓库

1.1 git init

通过 git init 命令在现有的目录中初始化仓库

该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的Git仓库中所有的必须文件,就是Git的版本库。

1.2 从一个服务器克隆一个现有的 Git 仓库

git clone https://github.com/test/test

也可以自定义本地仓库的名字

git clone https://github.com/test/test myTest

2. git生命周期

git生命周期

3. 查看文件状态

3.1 git status

  • 没有任何文件打印的结果
$ git status
On branch master
Initial commit
nothing to commit (create/copy files and use "git add" to track)

表示当前没有任何处于跟踪状态的新文件

  • 添加一个未被跟踪文件的打印结果

    $ git status
    On branch master
    Initial commit
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            helloGit.txt
    nothing added to commit but untracked files present (use "git add" to track)
    

    Untracked files 表示文件未被跟踪


4. 将文件添加到git版本库

4.1 git add xxx

4.1.1 跟踪新文件

git add 命令使用文件或目录的路径作为参数,如果参数是目录的路径,该命令将递归地跟踪该目录下的所有文件。

git add . 表示将所有文件全部添加添加到版本库

$ git add helloGit.txt
# 查看状态
$ git status
On branch master
Initial commit

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

        new file:   helloGit.txt

Changes to be committed表示文件是已暂存状态,准备提交

4.1.2 把已跟踪的文件放到暂存区

当A文件已经被 git add 设置为被跟踪,然后再修改A文件时

文件状态为:Changes not staged for commit

Changes not staged for commit:表示说明已跟踪文件的内容发生了变化,但还没有放到暂存区。

要暂存这次更新,需要运行 git add 命令


5. 忽略文件

5.1 .gitignore 文件

github .gitignore配置文件

文件 .gitignore 的格式规范如下:
1 所有空行或者以 # 开头的行都会被 Git 忽略。
2 可以使用标准的 glob 模式匹配。
3 匹配模式可以以(/)开头防止递归。
4 匹配模式可以以(/)结尾指定目录。
5 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
    所谓的 glob 模式是指 shell 所使用的简化了的正则表达式
1 星号(*)匹配零个或多个任意字符
2 [abc]匹配任何一个列在方括号中的字符
    (这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c)
3 问号(?)只匹配一个任意字符;
4 如果在方括号中使用短划线分隔两个字符,表示所有在这两 个字符范围内的都可以匹配
    (比如 [0-9] 表示匹配所有 0 到 9 的数字)
5 使用两个星号(*) 表示匹配任意中间目录
    (比如`a/**/z` 可以匹配 a/z, a/b/z 或 `a/b/c/z`等)

6. 查看已暂存和未暂存的文件

6.1 git diff && git diff xxx

要查看尚未暂存的文件更新了哪部分

此命令比较的是工作目录中当前文件暂存区域快照之间的差异, 也就是修改之后还没有暂存起来的变化内容。

$ git diff
diff --git a/helloDongnao.txt b/helloDongnao.txt
index 94872de..3012711 100644
--- a/helloDongnao.txt
+++ b/helloDongnao.txt
@@ -1 +1,2 @@
-hello dongnao!
\ No newline at end of file
+hello dongnao!
+dongnao VIP!
\ No newline at end of file

$ git diff helloDongnao.txt
diff --git a/helloDongnao.txt b/helloDongnao.txt
index 94872de..3012711 100644
--- a/helloDongnao.txt
+++ b/helloDongnao.txt
@@ -1 +1,2 @@
-hello dongnao!
\ No newline at end of file
+hello dongnao!
+dongnao VIP!
\ No newline at end of file

7. 将文件提交到git版本库

7.1 git commit –m "提交说明"

使用命令 git commit把暂存区的文件提交到git版本库;

-m: 后面输入的是本次提交的说明,可以输入任意内容,最好是有意义的,这样你就能从历史记录里方便地找到改动记录

git commit 前一定先要 git add


8. 重新将文件提交到git版本库

8.1 git commit -amend -m "提交说明"

有时候提交完了发现漏掉了几个文件没有添加,或者提交信息写错了。此时,可以运行带有 --amend 选项的提交命令尝试重新提交

$ git commit -m 'test'
$ git add xxxxxx
$ git commit –amend -m 'test amend'
# 最终你只会有一个提交 ,第二次提交将代替第一次提交的结果。

9. 跳过使用暂存区域

9.1 git commit –amend –m "提交说明"

git add -> git commit 简单方式

git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤


10. 查看已暂存和版本库的修改

10.1 git diff --cached (staged) && git diff --cached (staged) xxx

查看已暂存的文件更新了哪部分

此命令比较的是暂存区域快照版本库之间的差异

$ git diff --cached
$ git diff --cached hello.txt

11. 移除文件

11.1 git rm xxx

git rm 命令使用文件或者目录的名字,也可以使用 glob 模式

git rm 连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。

下一次提交时,该文件就不再纳入版本管理了

$ git rm hello.txt
rm 'helloGit.txt'

11.2 git rm --cached xxx

把文件从 Git 仓库中删除,仍然保留在当前工作目录中,换句话说,你想让文件保留在磁盘,但是并不想让 Git 继续跟踪,比如你忘记添加 .gitignore 文件,不小心把.class这样的编译生成文件添加到暂存区

$ git rm --cached hello.txt

12. 重命名文件

12.1 git mv xxx1 xxx2

$ git mv hello1.txt hello2.txt
# 者一个mv命令相当于下面三个命令
$ mv hello1.txt hello2.txt
$ git rm hello1.txt 
$ git add hello2.txt

13. 查看提交历史

13.1 git log

工作一段时间之后,如果你想查看提交历史,可以使用git log命令

按提交时间列出所有的更新,最近的更新排在最上面。

会列出每个提交的 SHA-1 校验和、作者的名字和电子邮件地址、提交时间以及提交说明

$ git log --pretty=oneline 显示每次提交的简略信息
$ git log –p    显示每次提交的内容差异,可以加上 -1 来仅显示最近一次提交,除了显示基本信息之外,还附带了每次 commit 的变化
$ git log  --stat  显示每次提交的简略的统计信息
$ git log --since=2.weeks  列出所有最近两周内的提交,可以设置多种格式,比如说具体的某一天 “2008-01-15”,或者是相对地多久以前 “2 years 1 day 3 minutes ago”。

14. 暂存区和版本回退

14.1 git reset HEAD^ ( 暂存区和版本库回退 )

git reset 命令使用文件作为参数,或者^

上一个版本就是HEAD^上上一个版本就是HEAD^^,往上100个版本HEAD~100

reset HEAD xxxx

14.2 git reset HEAD xxxx ( 暂存区回退 )

xxx 文件名称

$ git reset HEAD hello.txt

14.3 git reset --hard HEAD^ ( 工作区一起回退 )

--hard会让工作区的文件一起回退

$ git reset --hard HEAD^

15. 版本找回

15.1 git reset --hard 1094a ( commit id 1094a )

参数为commit id 1094a,版本号没必要写全,前几位就可以了,Git会自动去找

版本回退之后用git log是再也找不到提交历史了,也就无法找到commit id,这个时候可以用git reflog来查看你的每一次命令

$ git reflog
0b11337 HEAD@{0}: reset: moving to HEAD^
a65c356 HEAD@{1}: commit: test hard
0b11337 HEAD@{2}: reset: moving to HEAD^
dd9f0f0 HEAD@{3}: commit: test hard
0b11337 HEAD@{4}: reset: moving to HEAD^
2addbe3 HEAD@{5}: commit: test hard
0b11337 HEAD@{6}: reset: moving to HEAD^
b79c0f4 HEAD@{7}: commit: test hard
0b11337 HEAD@{8}: reset: moving to HEAD^^

$ git reset --hard a65c356
HEAD is now at a65c356 test hard

16. 撤消工作区修改

16.1 git checkout –- xxxx ( 参数文件 )

hello修改后还没有被放到暂存区撤销修改回到和版本库一模一样的状态;

其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

$  git checkout -- hello.txt

17. Git别名

17.1 git config –-global alias.xxx1 xxx2 ( xxx1为别名,xxx2为git命令 )

$ git config --global alias.co checkout 
$ git config --global alias.ci commit 
$ git config --global alias.st status
$ git config --global alias.unstage 'reset HEAD --' ==> $ git reset HEAD -- xxx

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容