Git学习笔记

  Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

  分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。

  Git的工作原理框图如下所示:

  

  首先,介绍一下在Git Bash中使用的Git相关命令。

1、Git配置

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

git config --global user.email "Your email"

git config --global color.ui true

git config format.pretty oneline #显示历史记录时,只显示一行注释信息

2、本地仓库管理

  建立并初始化本地Git仓库(cd到需建立仓库的目录下):

git init

  添加工作区中文件到暂存区(index或stage):

git add <file name>    #可添加多个文件

  删除暂存区中的文件:

git rm <file name>

  提交暂存区中的文件到本地仓库,并添加提交信息:

git commit -m " comment "

  版本回退或撤销修改命令:

#在Git中,HEAD表示当前版本,上一个版本为HEAD^,上上个版本为HEAD^^,往上100个版本为HEAD~100

git reset --hard <commit id>   #回退到指定的版本(commit id为十六进制,七八位即可)

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

git reset HEAD <file name>     #撤销暂存区的修改

git checkout --<file name>     #撤销工作区的修改    

  分支操作相关命令(master为主分支,HEAD指向当前分支):

git branch    #查看分支,带 * 的为当前分支

git branch <branch name>      #创建分支

git checkout <branch name>     #切换到指定分支

git checkout -b <branch name>  #创建并切换到指定分支

git checkout -b <branch name> origin/<branch name> #创建远程分支到本地 git branch
-d <branch name> #删除分支 git branch -D <branch name> #强制删除分支 git merge <branch name>     #合并指定分支到当前分支(Fast-Forward方式) #当Git无法自动合并分支时,须先解决冲突,再提交,合并完成

  (分支管理原则:master分支稳定,仅用来发布新版本,平时在在其他分支上操作,而不在master上操作)

  bug分支操作:

  修复bug时,要创建临时bug分支来修复,然后合并,最后删除。但当手头工作未完成时,需先把工作现场”储藏“起来,创建bug分支修复bug,再删除bug分支,最后恢复工作现场并删除stash内容。

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

git stash list  #查看”储藏“的工作现场

git stash apply  #恢复工作现场

git stash drop  #删除stash内容

git stash pop   #恢复工作现场,并删除stash内容

  标签(版本)操作:

git tag #查看所有标签

git show <tag name>             #查看指定标签信息

git tag <tag name>              #(创建)打标签

git tag <tag name> <commit id>       #给指定的commit打标签

git tag -d <tag name>            #删除标签

git tag -a <tag name> -m "tag info"    #给指定标签添加信息


git push origin <tag name>         #推送一个本地标签

git push origin --tags           #推送全部未推送的本地标签

git push origin :refs/tags/<tag name>   #删除远程标签

  信息查看命令:

git status #查看本地仓库的状态

git diff #查看修改的详细信息(Unix通用的diff格式)

git diff HEAD --<file name> #查看指定文件修改的详细信息

git log #查看提交日志(--pretty=oneline单行显示;--graph显示分支图)

git reflog  #查看命令历史

  内建的图形化Git:

gitk

3、远程仓库操作

  Git支持连接远程仓库的协议有:SSH、https等,我们一般使用SSH协议。

  GitHub上的仓库使用SSH协议的地址格式如下(以我的仓库GaoHongchen/CSharp.git为例):

git@github.com:GaoHongchen/CSharp.git
或
git://github.com/GaoHongchen/CSharp.git

  本机关联远程仓库:

1、在Shell中,创建SSH Key:  ssh-keygen -t rsa -C "Your email"

    其中生成的位于.ssh目录下的id_rsa和id_rsa.pub文件须位于用户主目录

2、将id_rsa.pub中的内容添加到GitHub中的SSH Key中

  查看远程仓库信息(远程仓库默认名称为origin):

git remote  #  -v 查看详细信息(远程仓库的地址)

  将本地仓库与远程仓库关联(origin为远程仓库名):

git remote add origin <远程仓库地址>

git remote rm origin <远程仓库地址>  #解除关联

  克隆远程仓库:

git clone <远程仓库地址>

  抓取远程仓库分支的最新版本到本地:

git fetch origin <branch name>

  抓取远程仓库分支的最新版本到本地,并与本地分支合并:

git pull origin <branch name>

  推送本地仓库的<branch name>分支(如master)到远程仓库:

git push -u origin <branch name>  #第一次推送使用-u参数

  我的GitHub地址为:https://github.com/GaoHongchen/

4、团队合作

  1. 推送自己的修改:git push origin <branch name>
  2. 若(1)失败,则因为远程分支比本地更新,须先用git pull抓取合并分支的最新版本;若git pull提示”no tracking information“,则说明本地分支和远程分支未建立连接关系,须用git branch --set-upstream <branch name> origin/<branch name>建立连接
  3. 若合并有冲突,则解决冲突,再在本地提交
  4. 执行(1)

  团队协作模式图:

  

参考连接:

  廖雪峰的Git教程:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

Git相关链接:

  GitHub:https://github.com/

  Git - Fast Version Control System:http://git.or.cz/index.html

  Git:http://git-scm.com/

  Git Reference:http://gitref.org/index.html

  Git for Windows:https://git-for-windows.github.io/index.html

  Getting Started with Git and GitHub on Windows - Kyle Cordes:http://kylecordes.com/2008/git-windows-go

  git 使用简易指南:http://www.bootcss.com/p/git-guide/

  Git 版本管理工具(一) - CSDN.NET:http://blog.csdn.net/sunboy_2050/article/details/7527877

  Github - 博客 - 伯乐在线:http://blog.jobbole.com/tag/github/page/3/

  Git工作方式:http://www.ibm.com/developerworks/cn/devops/d-learn-workings-git/

配置管理工具:

  Git、CVS&SVN、IBM Rational ClearCase、MS VSS、Borland StarTeam

相关术语:

  • SCM --> 软件配置管理
  • UCM --> 同一变更管理
  • PDM --> 产品数据管理
原文地址:https://www.cnblogs.com/gaohongchen01/p/4794231.html