妈妈不再用担忧我使用git了

妈妈不再用担忧我使用git了

git因为其灵活,速度快,离线工做等特色而倍受青睐,下面一步步来总结下git的基本命令和经常使用操做。git

安装msysgit

下载地址:msysgit,安装完成后配置系统环境变量,打开git bash,尽可能少用图形化工具git gui,推荐使用命令行。github

你能够在本地操做git,也能够在远程服务器仓库操做git,例如github,这样你就须要配置下ssh key,详情请查看官方文档说明generating-ssh-keysbash

git操做

一、检出仓库(克隆仓库)

本地克隆:服务器

$ git clone /path/to/repository

远程克隆:ssh

$ git clone <server>

ssh方式(推荐),例如:svn

$ git clone git@github.com:hcy2367/hcy2367.github.io.git

https方式,例如:工具

$ git clone https://github.com/hcy2367/hcy2367.github.io.git

二、建立新仓库

$ git init

三、添加工做区(working dir)新的或改动的文件到暂存区(Index或stage)

$ git add <filename> | --all | -A

git工做区,暂存区,HEAD区(能够理解为本地仓库master分支的最新版本)关系图:gitlab

四、从暂存区删除添加或改动的的文件

$ git rm --cached <filename> | *

五、查看当前仓库状态

执行add、commit操做以前和以后最好都要查看下当前提交的一些状态信息,防止漏添加,错提交post

$ git status

六、查看和对比修改的内容

$ git diff <filename>

七、查看提交的历史记录版本(添加参数:–pretty=oneline,用于输出少许信息)

$ git log

八、提交到当前分支master HEAD区

$ git commit -m '代码提交信息'

九、版本回退

HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本HEAD~100,如回退到上一个版本,则命令以下:

$ git reset --hard HEAD^

其中–hard参数表示撤销工做区与暂存区的修改,回退到指定历史版本,可以使用以下命令:

$ git reset --hard 20038

其中20038为提交版本的前五位ID号(原始:20038c521d4e81aca8ec8bca9f05d50ebb4fb835),查看时可以使用以下命令:

$ git reflog

十、撤销修改

丢弃工做区的修改,已添加到暂存区的文件不受影响,注意:不能少了–参数,命令以下:

$ git checkout -- <filename> | *

把暂存区的修改撤销掉,从新放回工做区,命令以下:

$ git reset HEAD <filename> | *

十一、删除文件

删除后再commit到HEAD区,若是误删文件了,能够恢复到该文件的最新版本。

$ git rm <filename>

十二、推送到远端仓库

$ git push -u origin master | <branch>

-u参数表示初次推送时把本地的master分支和远程的master分支关联起来;

若是你尚未克隆现有仓库,并欲将你的本地仓库链接到某个远程服务器,你可使用以下命令添加:

$ git remote add origin <server>

例如这样你就可以将你的改动推送到所添加的服务器上去了:

$ git remote add origin git@github.com:hcy2367/hcy2367.github.io.git

1三、分支

建立分支:

$ git checkout -b <branch>

切换回主分支:

$ git checkout master

列出全部分支:

$ git branch

合并指定分支到当前分支(默认使用fast forward方式):

$ git merge <branch>

普通模式合并(禁用fast forward,由于该方式合并后看不到历史提交信息):

$ git merge --no-ff -m "merge with no-ff" <branch>

删除分支:

$ git branch -d <branch>

丢弃一个没有被合并过的分支,能够经过以下命令强行删除:

$ git branch -D <branch>

推送到远端仓库:

$ git push origin <branch>

1四、更新与合并

查看远程信息:

$ git remote -v

从远程获取最新版本到本地仓库,并自动merge到本地分支:

$ git pull origin master

从远程获取最新版本到本地仓库,不自动merge到本地分支:

$ git fetch

合并分支前先到另一个分支更新代码,而后本地合并后提交到远程仓库; 当有冲突时,可以使用$ git diff$ git status命令查看分支的差别,手工解决后,再执行$ git add <filename>命令以将它们标记为合并成功。查看提交记录图形信息:

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

1五、标签(能够理解为版本库的快照)

建立标签:

$ git tag <tagname>

可以使用命令以下命令找到历史提交的ID号:

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

再打标签:

$ git tag v1.0 6224937

还能够建立带有说明的标签,用-a指定标签名,-m指定说明文字:

$ git tag -a v1.1 -m "version 1.1 released" 3628164

查看标签:

$ git tag

查看标签信息:

$ git show v1.0

删除本地标签:

$ git tag -d v1.1

推送标签到远程:

$ git push origin <tagname>

一次性推送所有未推送的标签:

$ git push origin --tags

删除远程标签(先删除本地,再删除对应的远程tag):

$ git tag -d v1.1
$ git push origin :refs/tags/v1.1

1六、丢弃你全部的本地改动与提交,能够到服务器上获取最新的版本并将你本地主分支指向到它:

$ git fetch origin
$ git reset --hard origin/master

1七、移除全部未跟踪文件(通常会加上参数-df,-d表示包含目录,-f表示强制清除)

$ git clean [options]

1八、多人协做的工做模式

  • 首先,能够试图用$ git push origin <branch>推送本身的修改;
  • 若是推送失败,则由于远程分支比你的本地更新,须要先用$ git pull试图合并;
  • 若是合并有冲突,则解决冲突,并在本地提交;
  • 没有冲突或者解决掉冲突后,再用$ git push origin <branch>推送就能成功;
  • 若是git pull提示“no tracking information”,则说明本地分支和远程分支的连接关系没有建立,用命令$ git branch --set-upstream <branch> origin/<branch>解决便可。

1九、git工做流程图

说了这么多,来张工做图,可能更加通俗易懂:

总结

掌握上面的命令后基本上能够轻松使用git来管理项目和参与团队开发了,当你欣赏到git的过人和可爱之处后,你可能不再想使用svn来管理代码了,妈妈也不用担忧我如何使用git了,熟悉操做后你就能够遨翔于githubgitcafegitlab的天空,为开源生态圈贡献本身的一份力量。不论是forkstarclone,仍是pull request,总要尝试下未知的世界。[博客转移了] =》 http://hcy2367.github.io/

天高任鸟飞,海阔凭鱼跃。

相关文章
相关标签/搜索