Git是目前最流行的项目代码版本管理系统,学会Git几乎成了开发者的代码库管理必备技能之一。下面介绍几个最常用的命令。
常用命令列表
- git clone
如果你是第一次从一个已存在(局域网或者远程的代码仓库)的代码仓库拉取代码。则需要使用git clone, 用法如下:
git clone code_repo_url
该命令会在本地主机生成一个目录,与远程主机的代码库同名。如果要指定不同的目录名,可以将目录名作为git clone命令的第二个参数,如下所示:
git clone code_repo_url local_dir
例如:
git clone https://github.com/TheAlgorithms/Java.git
通常code_repo_url支持http、https、ssh协议三种模式,此外,还支持ftp,rsync等协议
- git remote
为了便于管理,Git要求每个远程主机都必须指定一个主机名。git remote命令就用于管理主机名。不带选项的时候,git remote命令列出所有远程主机。
git remote
另外,可以添加配置项 -v查看完整链接,如下:
上面命令表示,当前只有一台远程主机,叫做origin,以及它的网址。
克隆版本库的时候,所使用的远程主机自动被Git命名为origin。如果想用其他的主机名,需要用git clone命令的-o选项指定,如下所示:
git clone -o test https://github.com/TheAlgorithms/Java.git
上面命令表示,克隆的时候,指定远程主机叫做test。
git remote show命令加上主机名,可以查看该主机的详细信息。
git remote show test
git remote add命令用于添加远程主机。
git remote add new-name code_repo_url
示例如下:
git remote rename更新远程主机名称
git remote rename old-name new-name
示例如下:
git remote rm命令删除远程主机。
git remote rm name
示例如下
- git fetch
一旦远程主机的代码库有了更新(Git术语叫做commit,注意与git commit命令的区别),需要将这些更新取回本地,这时就要用到git fetch命令。
# 将远程主机的commit全部拉取到本地(该代码库中远程主机中所有的分支)
git fetch remote_name
如果只需要获取其中某个分支, 则需要指定某个分支
git fetch remote_name branch_name
- git branch
用于查看或者切换分支,git branch命令的-r选项,可以用来查看远程分支,-a选项查看所有分支。
查看本地分支
git branch
查看远程分支
示例如下:
查看本地和远程所有的分支
注:分支前的*号表示代码库当前所处的分支
- git checkout
如果我们想在原有的基础上做改动,同时又不影响原来的版本,则使用git checkout完成,首先需要切换到我们希望创建的基础分支,然后执行
git checkout -b newBrach remote/origin_branch
示例如下所示:
除此以外,git checkout还可以用于从历史提交中拷贝文件到工作目录
- git add
把要提交的文件添加到缓存区,这是向远程代码仓库提交的第一步.
把单个文件提交到缓存区
git add filename
如果有多个文件,则可以切换到对应的根目录,执行
git add *
另外,可以直接执行 git
- git commit
把缓存区的改变生成一次commit,并加入commit历史,你的改动已经提交到了 HEAD,但是还没到你的远端仓库。
常用的命令如下:
git commit -m "代码提交信息"
在开发时,良好的习惯是根据工作进度及时 commit,并务必注意附上有意义的 提交备注信息。创建完项目目录后,第一次提交的 commit message 一般为「Initial commit.」
- git pull
git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并
git pull remote_name remote_branch_name:local_branch_name
如果需要取回test主机的master分支,与本地的hhhe分支合并,需要按照下面的方式写
git pull test master:hhhe
如果是远程分支与本地分支是同一个,则无需指定本地分支名,如下所示:
git pull test hhhe
- git push
git push命令用于将本地当前分支的commit推送到远程主机对应的分支。
git push remote_name local_branch_name:remote_branch_name
如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push
git push -u test hhhe
将本地的hhhe分支推送到远程的test主机
如果要将本地的所有分支推送到远程分支,就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要使用–all选项
git push --all test
强制推送到远程主机,建议慎用。
git push --force test
除了推送分支外,还可以使用git push推送tag
git push remote --tags