Git常用命令

1. 创建版本库

初始化一个Git仓库,使用 git init 命令

添加文件到Git仓库,分两步:

  • 第一步,使用命令 git add <file>,注意,可反复多次使用,添加多个文件;

  • 第二步,使用命令 git commit ,完成。

注意:

  • git add <file> 可以添加单个文件到暂存区;git add -A 可以添加所有改动文件到暂存区

  • git commit -m "xxx" 可以提交所有暂存区文件到分支;同样,该操作也可以使用 git commit -a 命令来执行

2. 时光机穿梭

使用 git status 命令可以查看当前仓库状态

使用 git diff 命令可以仓库前后修改的内容

2.1 版本回退与回退后复位

2.1.1 版本回退

  • git log 命令显示从最近到最远的提交日志,里面包含提交说明和版本id

  • git log --pretty=oneline 可以查看简化后的提交日志

  • git log --pretty=oneline --abbrev-commit 可以查看最简提交日志

那么,版本回退需要使用 git reset 命令

  • git reset --hard HEAD^ 回退到上一个版本

  • git reset --hard HEAD^^ 回退到上上一个版本

  • git reset --hard HEAD~100 回退到前100个版本

2.1.2 回退后复位

  • git reflog 命令记录你的每一次命令,以此可查看每次的版本id

版本复位依然需要使用到 git reset 命令

  • git reset --hard 8888888

2.2 撤销修改

2.2.1 撤销工作区修改

git checkout -- file 用于撤销工作区修改

例如: git checkout -- readme.txt 撤销readme.txt文件在工作区的修改

git checkout -- file
命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令

2.2.2 撤销暂存区修改

git reset HEAD file 用于撤销暂存区修改

例如: git reset HEAD readme.txt 撤销readme.txt文件在暂存区的修改,重新放回工作区

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

2.3 删除文件

删除工作区文件 test.txt 后,使用 git rm test.txt 可以继续从版本库删除该文件

删除工作区文件 test.txt 后,使用 git checkout -- test.txt 可以从版本库恢复该文件至工作区

3. 远程仓库

3.1 先本地,后远程

首先创建本地仓库,然后创建远程仓库,最后将两者关联起来

1. 远程仓库创建好后,在本地仓库下运行如下命令

git remote add origin git@github.com:michaelliao/learngit.git

2. 下一步,就可以把本地库的所有内容推送到远程库上

git push -u origin master

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改

3.2 先远程,后本地

使用克隆命令直接克隆远程库即可

git clone git@github.com:michaelliao/gitskills.git

4. 分支管理

4.1 创建与分支合并

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除已被合并的分支:git branch -d <name>

删除未被合并过的分支:git branch -D <name>

4.2 解决分支合并冲突

git log --graph 可以查看分支合并图

git log --graph --pretty=oneline 可以查看分支合并图简图

git log --graph --pretty=oneline --abbrev-commit 可以查看分支合并最简图

4.3 分支管理策略

通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。 如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
合并时添加参数 --no-ff 可以禁用快速合并模式,由于这会产生一个提交,所有需要添加 -m 参数把commit描述写进去

实例:

git merge --no-ff -m "merge with no-ff" dev

禁用快速合并模式合并 dev 分支到当前分支

4.4 多人协作

查看远程库信息,使用 git remote

查看远程库详细信息,使用 git remote -v

本地新建的分支如果不推送到远程,对其他人就是不可见的;

推送分支:
推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:
git push origin master
如果要推送其他分支,比如dev,就改成:
git push origin dev

从本地推送分支,使用 git push origin branch-name,如果推送失败,先用 git pull 抓取远程的新提交;

在本地创建和远程分支对应的分支,使用 git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

建立本地分支和远程分支的关联,使用 git branch --set-upstream branch-name origin/branch-name

从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

5. 标签管理

5.1 创建标签

创建标签,首先需要切换到需要打标签的分支上

查看所有tag: git tag

给最新commit即HEAD打标签: git tag <name>

给指定commit打标签: git tag <name> 888888

创建带有说明的标签,用-a指定标签名,-m指定说明文字: git tag -a <name> -m "version 0.1 released" 888888

查看某一标签说明: git show <name>

5.2 操作标签

删除本地标签: git tag -d <tagname>

推送指定本地标签到远程: git push origin <tagname>

推送全部尚未推送到远程的本地标签: git push origin --tags

删除远程标签:

  1. 先从本地删除: git tag -d <tagname>
  2. 再从远程删除: git push origin :refs/tags/<tagname>
posted @ 2017-05-23 18:52  YSP易水寒  阅读(265)  评论(0编辑  收藏  举报