git 常用命令
在实际开发中,会使用git作为版本控制工具来完成团队协作。并对基本的git操作指令进行总结是十分有必要的
想要弄懂git是怎么对代码进行管理的,得弄懂git工作区是怎么构成的(如下图):
- 工作区(workspace):平常开发中进行改动的地方
- 暂存区(index):当执行git add 命令后工作区的内容会被移入暂存区,当完成某个功能或任务时需要提交代码,第一步 就是先通过git add 将本地工作区修改的代码提交到暂存区
- 本地仓库(Repository):通过git commit 命令将暂存区的内容提交到本地仓库
- 远程仓库(Remote):用来托管代码的服务器,通常使用clone命令将远程仓库拷贝到本地仓库中,开发完成后通过git push推送到远程仓库中即可;
第一次使用git,配置用户信息
- 配置用户名:git config --global user.name "your name";
- 配置用户邮箱:git config --global user.email "youremail@github.com";
- 查看当前用户(global)配置:git config --global --list
查看git用户名和邮箱
- git config user.name :查看用户名
- git config user.email :查看邮箱
新建仓库
- 将工作区中的项目文件使用git进行管理,即创建一个新的本地仓库:git init;
git clone
- git clone URL :拉取远程代码到本地
- git clone -b 分支名称 远程地址:git克隆远程分支仓库(git克隆远程仓库项目时如果不指定分支,只会克隆默认分支的内容)
git status
- git status :查询当前工作区所有文件的状态
git add
- git add . :提交工作区所有文件到暂存区
- git add [file1] [file2] ... : 提交工作区一个或多个文件到暂存区
- git add [dir] :提交工作区指定目录(某个文件夹中所有文件)到暂存区
重置工作区和暂存区的所有文件为原始状态
- git reset -hard
git commit
- git commit -m "提交内容" :提交暂存区的更改,并记录下备注
- git commit :提交暂存区的更改,会新开编辑器进行编辑
- git commit -am :等同于git add . && git commit -m
- git commit --amend :对最近一次的提交信息进行修改,此操作会修改commit的hash值
强制回退旧版本
- git log :找到commit hash值
- git reset --hard hash值:返回一次commit前的代码
git pull
- git pull <远程主机名> <远程分支名>:<本地分支名> :从远程仓库拉取代码并合并到本地,可简写为 git pull 等同于 git fetch && git merge
- git pull --rebase <远程主机名> <远程分支名>:<本地分支名> :使用rebase的模式进行合并
网上有针轮是先git commit 再pull还是先pull 再git commit,个人比较喜欢先git commit 之后在pull,原因:
1. 在本地修改与远程代码无冲突的情况下,使用 pull -> commit -> push 比较好
2. 在本地修改与远程代码有冲突的情况下,使用 commit -> pull -> push 比较好
但是上面两种情况,如果都是自己开发肯定优先第一种方法(因为这样会减少Git没有必要的merge),但是项目大了难免会遇到多人开发,同时改了一个地方的代码,产生冲突的情况下,先 pull 会报错,所以保险起见先git commit 再 pull
git push
- git push origin master:将完成的项目推送到远程仓库中
- git push origin --tags :讲本地所有的完成项目全部推送到远程仓库中
- git push origin --delete <branch-name>:删除远程分支(此分支必须是非默认分支)
git fetch
与 git pull
不同的是 git fetch
操作只会拉取远程的更改,不会自动进行 merge 操作。对你当前的代码没有影响
- git fetch <远程主机名> <分支名> :获取远程仓库特定分支的更新
- git fetch --all :获取远程仓库所有分支的更新
git branch
- git branch :查看本地当前分支
- git branch -r :查看远程分支
- git branch -a :查看本地和远程所有分支
- git branch 分支名字 :新建本地分支
- git branch -d 分支名字 :删除本地分支 (分支被合并后才允许删除 ,把 -d 改成 -D 强制删除)
- git branch -m 旧的分支名字 新的分支名字 :重新命名分支
- git branch --merged:查看哪些分支已经合并到当前分支
- git branch --no-merged:查看当前哪些分支还没有合并到当前分支
git checkout
- git checkout --<file> :撤销上一次对文件的操作
- git checkout 想要切换的分支名:从当前所处的分支切换到其他分支(当切换分支的时候,需要把暂存区里面的文件进行提交,不然暂存区里面的文件会跟着到切换的这条分支上)
- git checkout -b <branch-name>:新建并切换到新建分支上
查看git历史
- history
查看commit历史
- git log
- git log --summary
git merge
- git merge 想要合并的分支名 :将当前分支与指定分支进行合并
- git merge --abort :取消一次合并代码
查看项目origin代表的地址
- git remote -v