常用操作和命令
初始化
初始化设置用户名和邮箱
1 | git config --global user.name "Your Name" |
创建仓库
创建一个新的本地仓库(省略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 |
pop
和apply
的区别是,pop
会把stash
内容删除,而apply
不会。可以用git stash drop
来删除stash
。
1 | git stash drop stash@{2} |
删除所有stash
1 | git stash clear |