Git教程(三):基本操作

常用操作和命令

初始化

初始化设置用户名和邮箱

1
2
3
git config --global user.name "Your Name"
git config --global user.email "mail@mail.com"
git config --global credential.helper store

创建仓库

创建一个新的本地仓库(省略project-name则在当前目录创建)

1
git init <project-name>

下载一个远程仓库

1
git clone <url>

特殊文件

  • .git:Git仓库的元数据和对象数据库

  • .gitattributes:指定文件的属性,比如换行符

  • .gitmodules:记录子模块的信息

  • .gitconfig:记录仓库的配置信息

  • .gitkeep:使空目录被提交到仓库,.gitkeep文件是一个空文件,它的作用是在空目录中保留一个文件,以便Git可以跟踪该目录。(由于Git仅跟踪具有内容的文件,因此空目录通常不会被Git自动跟踪。)

  • .gitignore:忽略文件,不需要提交到仓库的文件,.gitignore文件是一个文本文件,它告诉Git忽略特定的文件和目录,从而使它们不会被跟踪和提交到Git仓库中。这个文件的作用很重要,因为有些文件不需要被版本控制,例如编译产生的中间文件、日志文件、缓存文件、临时文件等。如果这些文件不被忽略,它们会混杂在代码文件中,导致Git仓库变得很臃肿,并且增加提交、合并和回滚代码的复杂性。.gitignore文件可以在项目的根目录下创建,并使用特定的语法来描述要忽略的文件和目录。你可以在文件中指定文件名、文件夹名、文件扩展名等等,也可以使用通配符来匹配多个文件。当你向Git提交代码时,Git会自动忽略.gitignore文件中列出的文件和目录,从而使Git仓库变得更加干净和整洁。下面是一个.gitignore文件的示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    # Class file
    *.class

    # Log file
    *.log

    # BlueJ file
    *.ctxt

    # Mac file
    .DS_Store

    # package file
    *.jar
    *.war
    *.nar
    *.ear
    *.zip
    *.tar
    *.tar.gz
    *.rar

    # config file
    .idea/

添加和提交

添加一个文件到仓库

1
git add <file>

添加所有文件到仓库

1
git add .

提交所有暂存区的文件到仓库

1
git commit -m "message"

提交所有已修改的文件到仓库

1
git commit -am "message"

撤销

移动一个文件到新的位置

1
git mv <file> <new-file>

从工作区和暂存区中删除一个文件,然后暂存删除操作

1
git rm <file>

只从暂存区中删除一个文件,工作区中的文件没有变化

1
git rm --cached <file>

恢复一个文件到之前的版本

1
git checkout <file> <commit-id>

创建一个新的提交,用来撤销指定的提交,后者的所有变化都将被前者抵消,并且应用到当前分支

1
git revert <commit-id>

重置当前分支的HEAD为之前的某个提交,并且删除所有之后的提交。--hard参数表示重置工作区和暂存区,--soft参数表示重置暂存区,--mixed参数表示重置工作区

1
git reset --mixed <commit-id>

撤销暂存区的文件,重新放回工作区(git add的反向操作)

1
git restore --staged <file>

查看

列出还未提交的新的或修改的文件

1
git status

查看提交历史,--oneline可省略

1
git log --oneline

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

1
git diff

查看两个提交之间的差异

1
git diff <commit-id> <commit-id>

Stash

Stash操作可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作。-u参数表示把所有未跟踪的文件也一并存储,-a参数表示把所有未跟踪的文件和忽略的文件也一并存储,save参数表示存储的信息,可以不写。

1
git stash save "message"

查看所有stash

1
git stash list

恢复最近一次stash

1
git stash pop

恢复指定的stash,stash@{2}表示第三个stash,stash@{0}表示最近的stash

1
git stash pop stash@{2}

重新接受最近一次stash

1
git stash apply

popapply的区别是,pop会把stash内容删除,而apply不会。可以用git stash drop来删除stash

1
git stash drop stash@{2}

删除所有stash

1
git stash clear