git init
这可能是你创建新项目时要使用的第一个命令。它用于初始化一个新的、空的 Git 仓库。使用这个命令的语法非常简单:
git init
1
执行 git init
命令后,Git 会在当前目录下创建一个名为 .git
的子目录,这个子目录包含 Git 用来跟踪版本控制所需的所有文件和目录。具体来说,包括以下文件和目录:
HEAD
文件:存储当前位置指针,指向当前工作区的分支。config
文件:存储仓库的配置信息,比如远程仓库的 URL ,你的邮箱和用户名等。description
文件:供 Gitweb 使用,显示仓库的描述。hooks
目录:保存在执行 Git 命令时触发的自定义 hooks 脚本。info
目录:用于排除提交规则,与 .gitignore 功能类似。他们的区别在于.gitignore 这个文件本身会提交到版本库中去,用来保存的是公共需要排除的文件;而 info/exclude 这里设置的则是你自己本地需要排除的文件,他不会影响到其他人,也不会提交到版本库中去。objects
目录:Git 的对象数据库。refs
目录:存储着分支和标签的引用。index
文件:用于追踪文件的更改。logs
目录:用于记录操作信息。
git clone
通常情况下,你已经有一个现有的 Git 仓库(有时托管在像 GitHub 或 Bitbucket 这样的网站上),并希望将其复制到本地计算机。在这种情况下,你需要使用的命令是 git clone
。简单来说,这个命令用于创建现有仓库的副本或克隆:
git clone [url-to-existing-git-repo]
1
git status
Git 会持续监控您的项目工作目录中的变化,这些变化可能涉及创建新文件、添加文件以进行跟踪、删除文件、更改文件权限、修改文件名或内容等。您可以使用 git status 命令,查看 Git 在某个特定时间所记录的变化情况。
git status
1
git add
一旦在您的工作目录中对文件做出更改并通过 git status 命令确认更改完全正确,就可以将这些变化添加到 Git 的暂存区中。
您可以使用 git add 命令将单个文件添加到暂存区:
git add <your-file-name>
1
或者,如果您有多个更改的文件,您可以使用 -A 选项将它们全部添加到暂存区:
git add -A
1
另外,您也可以使用单个点号代替 -A 选项:
git add .
1
git commit
一旦您的更改已经被暂存,就可以使用 git commit 命令将这些更改保存到 Git 仓库中。一个 Git commit 是一组文件更改,作为一个单元存储在 Git 中。
在此过程中,您应该提供一个清晰明确的提交信息,以便其他开发者能够轻松理解其目的:
git commit -m "some useful comment about your change"
1
一个常见的经验法则是使用祈使语气编写提交信息。
下面是一张图片,帮助您更好地理解 Git 中更改是如何从工作目录流转到暂存区,最终提交到仓库的:
git branch
您可以将 Git 分支看作是一系列提交或开发历程。实际上,分支名称只是一个指向特定 commit ID 的标签。每个 commit ID 都链接回其父 commit ID,形成了一条开发历史链。
git branch 命令就像一把瑞士军刀,它可以展示当前 Git 仓库中的所有分支。带有星号标记的分支是您当前所在的分支:
git branch
1
要创建一个新分支,只需使用以下命令并指定您的新分支名称即可:
git branch <new-branch-name>
1
git checkout
使用 git checkout 命令可以在不同的分支之间进行切换,它会更新您的工作目录以反映所选分支的最新版本:
git checkout <name-of-branch>
1
此外,git checkout 命令还可以同时创建一个新分支并切换到该分支:
git checkout -b <name-of-branch>
1
git merge
那么,您已经在新分支上进行了多次提交,完成了您的工作。接下来该怎么做呢?
通常情况下,这些更改应该合并回主代码分支(默认情况下通常称为 master 分支)。我们可以使用 git merge 命令来完成合并操作。
git merge <branch-to-merge-from>
1
请注意,git merge 命令将指定分支中的提交合并到当前所在的分支中。因此,在运行该命令之前,您需要首先切换到要合并的分支上。
git push
到目前为止,我们运行的所有命令都只影响了本地环境。现在,是时候通过使用 git push 命令将您最新提交的更改推送到远程仓库(通常托管在 GitHub 和 Bitbucket 等网站上)与其他开发者分享了:
git push <remote> <name-of-branch>
1
例如:
git push origin master
1
在该示例中,我们将 master 分支推送到名为 origin 的远程仓库(在 Git 中是远程仓库的默认名称)。
一旦您推送了更改,其他团队成员就可以看到它们、审查它们并将它们拉取到他们自己的本地 Git 仓库副本中。
git pull
git pull 命令与 git push 命令正好相反。您可以使用它将其他开发者所做的更改下载到您的本地仓库中:
git pull <remote> <name-of-branch>
1
上述命令将下载远程仓库中指定分支的新提交,并尝试将它们合并到您本地的该分支副本中。实际的命令将类似以下示例,使用 origin 远程仓库和 master 分支:
git pull origin master
1
有趣的是,git pull 命令实际上只是 git fetch 命令和 git merge 命令的组合。其中,git fetch 命令用于将远程分支下载到本地仓库,而 git merge 命令用于将已下载的分支合并到本地副本中。
git log
如果您想查看 Git 分支上所有提交的历史记录,可以使用 git log 命令。git log 命令按时间顺序显示所有提交的有序列表,包括作者、日期和提交信息,从最新到最旧:
git log
1
若要按从旧到新的顺序列出提交,请使用 --reverse 选项:
git log --reverse
1
如果您是一个视觉化的人,可以尝试使用以下命令选项,在终端中显示提交历史的图形化表示:
git log --all --graph --decorate
1
这对于查看分支在开发过程中如何分叉和合并回来非常有用。
git stash
有时候,您在工作目录中修改了一些文件,但是意识到需要先处理其他事情。然而,您又不想丢失已经完成的工作。在这种情况下,可以使用 git stash 命令将所有未提交的更改保存在工作目录中,以便稍后可以找回它们。
git stash
1
使用 git stash 命令后,您的工作副本将被清理(所有更改将消失)。但是不要担心,它们并没有丢失,git stash 只是将这些更改放在临时存储中,您可以使用 git stash pop 命令找回它们:
git stash pop
1
在这里,pop 子命令将重新应用存储在 stash 中的最后一个状态,以便您可以继续上次的工作。