Git 常用命令行
查看版本号
git --version
查看帮助
git <verb> --help
git help <verb>
man git-<verb>
查看 Git
帮助手册。<verb>
为具体的命令,比如 git clone --help
。如果不输入具体的命令,则会显示常用的操作名,可以根据显示的操作名进一步在帮助手册中查找。
本文仅起到一个指导与查阅的作用,可能不会覆盖到所有的命令行,因此遇到有困惑的地方,请善用搜索引擎,或者使用 git
的查看帮助语句。
除了直接使用 git <verb> --help
,在具体的操作时如果遗忘了命令行的具体写法,也可以在具体操作后加上 -h
查看帮助。
如:
// 本语句将会输出关于克隆操作命令行后面的参数与选项
git clone -h
设置用户信息
git config --global user.name 'name'
git config --global user.email 'email'
GitHub
或 GitLab
在页面上显示提交者时,会根据提交信息中的用户名与邮箱来关联账号。因此当信息不一致时,页面上错误的提交者信息可能会对其他人造成困扰。
使用 --global
时会设置全局的用户信息。如果在不同的项目想使用不同的用户名与邮箱进行提交,可以通过 cd
命令进入项目所在目录,使用不带 --global
选项的命令行进行设置。
初始化
git init
将当前目录初始化为 Git 仓库目录。
成功执行初始化后,目录中会出现 .git
文件夹。
一般该语句用于从本地新建 Git 仓库。不过目前更加普遍的做法是在网页上创建空的项目仓库,再克隆到本地进行开发。
克隆仓库
git clone <repo>
克隆远端仓库到当前目录。<repo>
可以是 http
、ssl
等形式的地址,只需要有权限都能进行克隆。
克隆仓库时,会在当前目录下创建一个与仓库名同名的文件夹,因此可以直接克隆仓库,不必再特地创建一个文件夹后再克隆。
文件操作
查看文件状态
git status
可以查看当前工作目录下文件的状态,同时也会显示当前本地仓库中有多少未上传的提交等。
暂存文件
git add <file-path>
将新文件、修改后的文件加入暂存区。file-path
可以是具体的文件,也可以是某一个文件夹。如果是文件夹,那么文件夹下的所有文件都会被添加进暂存区。如果是 *
,那么当前路径下所有的新文件或修改文件 都会 被加入暂存区。
如果对一个文件暂存后,再次修改该文件,可能出现工作区、暂存区都存在该文件的情况。这时候只需要 再次 执行 add
命令进行暂存即可。
删除文件
git rm <file-path>
从工作区中移除指定文件并且将该删除操作记录到下一次提交中。
git rm
命令其实等于直接删除文件后,对文件执行git add
两步操作的结合。
取消修改
修改未提交
// 将暂存的文件恢复到暂存前的状态
git reset HEAD <file-path>
// 撤销文件的修改
git checkout -- <file-path>
以上两个命令还可以撤销使用
git rm
对文件的删除操作。
修改已提交
// 将提交回退到工作区
git reset HEAD^
// 撤销文件的修改
git checkout -- <file-path>
如果需要将整个提交进行撤销,则使用
// 查看提交历史,获取 commit 的 id
git log
// 将当前工作区重置到某次提交
git reset --hard <commit-id>
查看差异
git diff <file-path>
查看 尚未暂存 的文件的修改内容(或者新增的文件的内容)。如果不指定某个文件的话,将会显示工作目录中所有未暂存的文件的内容。
当文件已经暂存,那么将不会输出任何改动内容。
由于终端在查看大量文件的差异时并不是很方便,因此推荐使用客户端进行查看。
提交修改
git commit -m <changelog>
将当前暂存的文件提交到本地仓库。changelog
为修改的内容。如果不附带 -m
选项,会打开一个文本编辑来输入提交内容。
查看提交记录
git log
查看提交记录,每一次的提交都会有一个唯一的 commit id
。这个 id
可以作为代码回退的标记。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3OzXLBFS-1592901041211)(media/15486967415657.jpg)]
远程仓库
查看远程仓库
git remote
输出当前项目所添加的所有远程仓库的名字。
如果加入 -v
选项,则会输出当前项目添加的所有远程仓库的名字和地址。
添加远程仓库
git remote add <shortname> <url>
shortname
可以自由指定(只要你能够明白这个仓库是做什么的)。
拉取远程仓库
git pull <shortname> <branch>
拉取指定的远程仓库的指定分支到本地。如果不添加分支的名字的话,会拉取所有分支到本地。
推送到远程仓库
git push <shorname> <branch>
将本地的修改推送到远程仓库。
分支
查看分支
git branch
查看当前项目所有用的分支。分支前的 *
表示当前正处在哪一条分支。
如果加上 -a
选项,则会列出本地和远程仓库的所有分支。
创建新的分支
git branch <name>
从当前工作区的状态新建一个分支。
切换分支
git checkout <branch>
切换分支。
如果加上 -b
选项,则会从当前工作区新建一个分支,并且进行切换,前提是 branch
不是已存在的分支。
合并分支
// 移动到想合入分支后
git merge <branch>
这里的 branch
为 被合并 的分支名。
注意,一定要先移动到想合并进来的分支。比如想将 bugfix
分支合并到 master
,就需要先移动到 master
分支,再执行合并命令。
删除分支
删除本地分支
git branch -d <branch>
需要先 移动到其他分支上 才能操作!
删除远程分支
git push <remote> --delete <branch>