Git 命令汇总

创建版本库

$ mkdir git_repo //创建文件夹git_repo,该文件夹作为git版本库
$ cd git_repo // 切换到git_repo目录下
$ git init  // 在git_repo目录下初始化版本库

把文件添加到版本库

$ git add <file> //把file添加到版本库
$ git commit -m 'message' //将更改提交到版本库,可以添加多个文件,一次提交。message是提交的备注,一定要添加,且用单引号括起来。

查看版本库

$ git status //查看版本库状态,包含已提交,已修改未添加,已添加未提交
$ git diff <file> //查看已修改未提交的文件修改内容
$ git log  --pretty=oneline //查看提交历史日志,也就是-m 'message' 记录的内容 参数pretty可以省略

版本回退

git中,HEAD表示当前版本,HEAD^表示上个版本,上上个版本用表示HEAD^^。往上100个版本记HEAD~100

git reset --hard HEAD^ //回退到上个版本。
git reflog //查看命令历史。
git reset --hard commit_id //根据commit_id回退到指定版本。其中commit_id可以根据git reflog 或git log 查看。
git diff HEAD -- <file> 查看工作区和版本库该文件的区别。

撤销修改

未提交暂存区

修改过后,未使用git add提交到暂存区

git checkout -- <file>

已提交暂存区

修改过后,使用git add提交到暂存区。这时候需要先回退暂存区的修改。再使用git checkout

git reset HEAD <file>

已提交版本库

使用版本回退方法撤销修改。

删除文件

删除工作区的文件后,可以选择从版本库恢复文件,也可以删除版本库的文件。

git rm <file> //删除版本库中的文件

添加远程库

添加远程库之前,需要配置证书,暂且不讨论。

git remote add origin <git url> //把本地仓库关联到GitHub上已有的仓库。远程库的名字是origin.
git push -u origin master //把本地库所有内容推送到远程库。第一次推送需要-u参数。

克隆远程库

git clone <git url> //从已有的远程库上,把内容克隆到本地来。
  • 注:Git支持多种协议,包括https,但通过ssh 支持的原生Git速度更快。

创建分支

git branch <分支> //创建分支
git checkout <分支> //切换分支

git checkout -b <分支> //也可以合并成一条指令

git branch //查看当前分支 当前分支前面会用* 标记

合并分支

git merge <分支> //合并分支。
git branc -d <分支> //合并分支之后,就可以放心的删除之前新建的分支。

合并分支时,如果有冲突需要解决冲突。解决冲突之后,才可以使用git add git commit 提交最终合并结果。

 git log --graph --pretty=oneline --abbrev-commit //查看分支合并情况

下面是我测试的内容,仅供参考

*   28e86b5 conflict fixed
|\  
| * 49df264 call dev
* | d80aa32 call master
|/  
* ba6b11e crate a new branch
* 49681bd add test file
* 9702823 readme.txt 文件添加部分内容
* 0d9eeb4 修改readme
* a0e7003 wrote a readme file

强制合并分支

git中,分支合并,默认使用Fast forward 模式,该模式下,如果有冲突需要手动合并。强制禁用该模式,git就会在merge时,生成一个新的commit。

扫描二维码关注公众号,回复: 2171261 查看本文章
git merge --no-ff -m "merge with no-ff" <分支> //强制合并,由于会生成一个新的commit,因此需要-m参数。把commit描述写进去。

保存工作现场

常用于,当前功能未开发完成,需要紧急修复一个bug,因此需要把当前所做修改保存起来(并未提交到暂存区)。待bug修复完毕,再切到当前工作区继续开发。

git stash //保存当前工作区
git stash apply //恢复之前保存的工作区,但并不删除stash内容
git stash drop //删除stash内容

git stash pop //恢复的同时删除stash内容

git stash list //查看stash历史,保存多次的时候,会列举出每个stash id。

git stash apply <stash id> //恢复指定stash

强制删除分支

git branch -d <分支> //合并后可删除该分支
git branch -D <分支> //未合并,打算丢弃分之后删除该分支

合作开发

git remote //查看远程库信息
git remote -v //查看更详细的远程库信息
git push origin master //推送分支,通常是主分支,也可以切换成其他分支。

当从远程库clone时,默认只能抓取master分支。如果在子分支上合作开发,需要创建相同的子分支。

git branch --set-upstream-to=origin/<branch> <branch> //将本地分支链接到远程分支上

git pull //从远程分支获取内容

在本地新增子分支流程

  • 如果远程仓库分支
git branch <子分支> //本地新建子分支
git push origin <子分支> //子分支发布到远程仓库
git checkout <子分支> //切换到新建的子分支
  • 如果远程仓库有子分支
git checkout -b <子分支> origin/<子分支> //本地新建子分支并切换过去
  • 在子分支目录下,获取远程仓库内容
git pull //获取远程仓库内容
  • 获取内容失败,需要将本地子分支关联到远程子分支
git branch --set-upstream-to=origin/<分支> <分支>  //例子:git branch --set-upstream-to=origin/master master。就是两个分支名称,用空格分隔
git push origin :<分支> //删除远程仓库的分支,冒号代表删除

创建标签

标签的作用使提交记录更加规范化。commit id 是一串sha1,不好辨认。

git tag <tag> //最近提交的commit上创建标签
git tag <tag> <commit id> //指定的commit上添加标签
git tag -a <tag> -m "说明文字" <commit id> // 创建带有说明的标签
git tag //查看所有标签

git show <tag> //查看标签信息

**还可以通过-s用私钥签名一个标签,后续讨论。

操作标签

git tag -d <tag> //删除标签
git push origin <tag> //推送标签到远程
git push origin --tags //一次性推送全部尚未推送的本地标签到远程
git push origin :refs/tags/<tag> //删除远程标签,需要现在本地删除

配置别名

别名是为了方便输入指令

git config --global alias.br branch //`br` 表示`branch`

使用时:

git br <分支>

配置文件存在于仓库目录下 .git/config 和用户主目录下.gitconfig

猜你喜欢

转载自blog.csdn.net/flueky/article/details/78177336