我们会使用 Git 的命令行界面。Git 还有很多其他使用方式,比如 VS Code 插件、Magit、lazygit,等等。但是通常情况下你只要会使用命令行 Git,就可以在很短的时间内学会 Git 的图形化或者文本化界面。
从现在开始我们输入的所有命令,你都不必完全照做,而且就算照做了也未必会得到完全一样的结果。你只要理解了并且自己动手试一试这个命令就好。
如果你会使用 Unix 命令行,可以直接跳到 Git 基础配置一节。
cd
& mkdir
打开你的终端(macOS:打开 Terminal 应用;Windows:打开 Git Bash 应用)。你会在某个地方看到一个波浪线 ~
,它代表你的用户目录(directory),对应 macOS 上的 /Users/你的用户名
和 Windows 上的 C:\Users\你的用户名
。目录是 Unix 上文件夹的别名。
输入 cd /
,回车,你会看到刚才的波浪线变成了斜杠 /
。这代表你当前的目录切换到了根目录 /
。现在再输入 cd ~
,你就会回到用户目录下。cd
是「change directory」的缩写,可以让你切换当前的目录。通常情况下你每次打开终端都会处于用户目录 ~
下。
输入 mkdir test
,然后 cd test
,你就会进入到 ~/test
目录里。mkdir
是「make directory」的缩写,它让你在 ~
下新建了一个名叫 test
的目录。
ls
& touch
在 ~/test
里运行以下命令($
后面的是你要输入的;没有 $
的行是你应该看到的):
$ touch empty_file $ ls empty_file test2
touch
会创造出一个空文件,而 ls
会把目录里的所有文件和子目录都列出来。如果你想要看更详细的信息,运行:
$ ls -l total 0 -rw-r--r-- 1 xxx xxx 0 ??? ?? ??:?? empty_file drwxr-xr-x 1 xxx xxx 0 ??? ?? ??:?? test2
注意 test2
那行由 d
开头,说明它是一个目录。
你也可以通过 ls
查看别的目录:
$ touch test2/emtpy_file2 $ ls test2 empty_file2
在 Unix 上,所有 .
开头的文件都是隐藏文件。运行:
$ touch .hidden_file $ ls empty_file test2 $ ls -la total 0 drwxr-xr-x 1 xxx xxx ? ??? ?? ??:?? . drwxr-xr-x 1 xxx xxx ? ??? ?? ??:?? .. -rw-r--r-- 1 xxx xxx ? ??? ?? ??:?? empty_file -rw-r--r-- 1 xxx xxx ? ??? ?? ??:?? .hidden_file -rw-r--r-- 1 xxx xxx ? ??? ?? ??:?? test2
选项 -a
会把隐藏文件也列出来。目录 .
和 ..
分别是当前目录和上一级目录。试试 cd .
和 cd ..
。
rm
& rmdir
运行:
$ rm test2/empty_file2 $ ls test2
rm
是「remove」的缩写,用于删除文件。rm
删除的文件不会进入废纸篓或者回收站。
如果你想删除一个目录和其中的所有文件,运行 rm -r 目录名
。所以不要尝试运行 rm -rf /
。
再运行:
$ rmdir test2 $ ls empty_file
rmdir
是「remove directory」的缩写,用于删除空的目录。
mv
& cp
mv
和 cp
分别是「move」和「copy」的缩写。猜猜以下命令会干什么:
$ cp empty_file another_empty_file $ mv empty_file .. $ mv another_empty_file empty_file
cp
和 rm
一样,都可以用 -r
选项来选中目录和其中的所有文件。但是 mv
不需要,因为目录里的文件没有被重命名。
echo
& cat
在 ~/test
里运行:
$ echo hello hello $ echo hello > hello_file $ ls empty_file hello_file $ cat hello_file hello
echo
会把它的参数 hello
原封不动地输出。大于号 >
会把它左边的输出写入右边的文件里,因而我们创造了一个内容是 hello
的新文件 hello_file
。最后,小猫 cat
会把文件的内容输出。
运行以下命令并试着理解一下:
$ ls > files $ cat files > files_copy $ cat files_copy empty_file files hello_file
(注意 ls
在输入到文件时格式会略有不同,文件名之间会换行而非空格。)
连按几次方向上键,直到当前的命令变成 echo hello > hello_file
,然后回车。这时,运行 cat hello_file
还会得到 hello
,说明 >
会先把原来的内容清除,然后再写入。如果想要保留原来的内容,运行:
$ echo world >> hello_file $ cat hello_file hello world
这个教程不会像 Pro Git 那样教你每个命令的所有常用用法,事实上你也不需要背下每个命令。你只要知道什么时候大概该用什么,然后再像这样获得帮助:
$ ls --help Usage: ls [OPTION]... [FILE]... List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified. Mandatory arguments to long options are mandatory for short options too. -a, --all do not ignore entries starting with . -A, --almost-all do not list implied . and .. --author with -l, print the author of each file -b, --escape print C-style escapes for nongraphic characters --block-size=SIZE with -l, scale sizes by SIZE when printing them; e.g., '--block-size=M'; see SIZE format below . . .
man
, less
& 管道 也许 --help
输出的东西太多了,you want less
。输入 ls --help | less
,然后用以下的快捷键浏览:
(如果你在用 macOS,ls
的帮助太短了,输入 man ls
。man
是「manual」的缩写。)
命令中的管道 |
会把前面的输出送给后面当输入,而 less
则会让你浏览它的输入。
接下来是至关重要的一步。如果你没有把这一步做好,之后使用 Git 可能会遇到问题。
Git 在管理代码时会储存管理者的名字和邮箱,所以你要告诉 Git 你叫什么以及你的邮箱是什么。运行:
$ git config --global user.name "你的名字" $ git config --global user.email "你的邮箱"
然后试试:
$ cat ~/.gitconfig [user] 	name = 你的名字 	email = 你的邮箱
可以看到,Git 把你的设置存在了文件 ~/.gitconfig
里。
接下来我们要配置 Git 使用的文本编辑器。如果你使用 Windows,你可能已经在安装时配置了编辑器。如果还没有配置,输入:
$ git config --global core.editor "编辑器启动命令"
其中编辑器启动命令可以是:
code --wait
xed -w
notepad++
open -e -W -n
notepad
PyCharm --wait
想了解 git config
的更多使用方法,运行 git config -h
或者 man git config
。