美文网首页
git常用命令

git常用命令

作者: link的勇气 | 来源:发表于2017-11-01 16:46 被阅读0次

配置用户信息:

$git config --global user.name"Your Name"

$git config --global user.email"email@example.com"

git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

一、创建版本库及提交基本操作

$git init 

创建版本库

$git status

 查看仓库状态

$git add <file>

 添加文件或文件夹到暂存区

$git commit -m "message"

 把暂存区中的文件提交到本地仓库

$git log

显示由近到远的提交日志(加上--pretty=oneline可简化输出)

$git reflog

显示所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)

二、版本控制

HEAD表示当前版本,HEAD^表示上一个版本,HEAD^^表示上上个版本,依此类推,当数量过多可以使用HEAD~N表示前N个版本。

$git reset --hard commit_id 

回到某个版本

回到旧版本:用git log可以查看提交历史,以便确定要回退到哪个版本。

回到新版本:用git reflog查看命令历史,以便确定要回到未来的哪个版本。

$ git reset HEAD <file>

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

通过add添加到暂存区,再commit到当前分支

$git checkout -- <file>

命令git checkout -- <file>意思就是,把file文件在工作区的修改全部撤销,这里有两种情况:

一种是file自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是file已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commit或git add时的状态。

$git rm <file>

从版本库中删除文件,删除后commit保存删除状态

三、远程仓库

git remote add origin git@server-name:path/repo-name.git

关联到远程仓库

$ git push -u origin master

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改。

$git clone git@server-name:path/repo-name.git

克隆远程仓库

$git remote

查看远程库的信息,加上-v可查看更详细的信息

$git push origin master

格式: git push <remote> <place>

place又可写成refspec的格式,<source>:<destination>

推送分支,把该分支上的所有提交推送到远程仓库。

master分支是主分支,因此要时刻与远程同步;

dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;

bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;

feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

$git fetch <refspec>

从远程仓库更新到本地远程分支

$git pull [ --rebase ]

默认相当于顺序执行fetch+merge两条指令,从远程仓库更新到本地远程分支并合并到当前HEAD所指分支上。加上--rebase可改merge为rebase。

四、分支管理

$git checkout -b dev

创建并切换到dev分支,相当于以下两条 命令

$git branch dev

创建分支

$git checkout dev

切换分支

$git branch

打印:* dev

            master

列出所有分支,当前分支前有*号

$git merge dev

合并指定分支到当前分支

$git merge --no-ff -m "message" dev

以普通模式合并

合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

$git rebase dev

把指定分支的提交作为当前分支的新提交,若以该方式合并,在log上是看不到整个合并关系的,好处分支树是比较简洁。

$git cherry-pick dev

把某次提交作为当前分支的新提交,与rebase不同的是cherry-pick是单次提交,而rebase是某个分支的所有提交。

$git branch -d dev

删除分支

git log --graph

$ git log --graph --pretty=oneline --abbrev-commit

查看分支的合并情况

$git stash

把当前工作现场“储藏”起来

$git stash list

查看储藏列表

$git stash apply stash@{0}

恢复指定储藏

$git stash drop

删除指定储藏

$git stash pop

恢复最近储藏,并删除该储藏

bug分支:修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

$git branch -D

删除未合并分支

feature分支:开发一个新feature,最好新建一个分支;如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。

四、标签

$git tag <tagName>

用于新建一个标签,默认为HEAD,也可以指定一个commit id;

$git tag -a <tagName>  -m "blablabla..."

可以指定标签信息

git tag -s -m "blablabla..."

可以用PGP签名标签;

$git tag

可以查看所有标签。

$git push origin

可以推送一个本地标签

$git push origin --tags

可以推送全部未推送过的本地标签;

$git tag -d 

可以删除一个本地标签

$git push origin :refs/tags/

可以删除一个远程标签

五、忽略

忽略配置参考:https://github.com/github/gitignore

忽略文件的原则是:

1.忽略操作系统自动生成的文件,比如缩略图等;

2.忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;

3.忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

$ git add -f <file>

强制添加已忽略文件

$git check -ignore -v <file>

检查是第几行规则忽略了该文件

学习自:廖雪峰老师的Git教程

练习:交互式教程

相关文章

网友评论

      本文标题:git常用命令

      本文链接:https://www.haomeiwen.com/subject/pufgpxtx.html