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、团队合作
- 推送自己的修改:git push origin <branch name>
- 若(1)失败,则因为远程分支比本地更新,须先用git pull抓取合并分支的最新版本;若git pull提示”no tracking information“,则说明本地分支和远程分支未建立连接关系,须用git branch --set-upstream <branch name> origin/<branch name>建立连接
- 若合并有冲突,则解决冲突,再在本地提交
- 执行(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 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 --> 产品数据管理
高洪臣 (Gavin Gao)
cggos@outlook.com
=======================================================================