您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
   
 
 
     
   
 订阅
  捐助
Git入门私房菜
 
作者 :Michael_翔_  来源:博客 发布于 2016-9-8
   次浏览      
 

Git安装

Linux

sudo apt-get install git命令安装Git

Windows

官网下载 安装即可,不赘述。

注:安装时注意一步:选择第二项,将git添加到path中。

创建版本库

1、创建项目文件夹,例如:demo

2、进入demo目录下:git init命令将这个目录变成git可以管理的仓库(repository)。将仓库建好后,仓库目录下会多了一个.git隐藏文件夹。可以用ls -ah查看隐藏文件。

3、向库里添加一个readme.txt文件:

4、git add告诉git,要把文件添加到仓库:

git add readme.txt

(1)执行命令,其实,这一步的作用就是将文件添加到stage(暂存区)。

(2)git add .将所有文件添加到暂存区。 git add -u将所有文件添加暂存区,同时,将删除的文件从仓库中删除。

5、git commit命令,将文件提交到仓库。

git commit -m "wrote a readme file"

注:-m是对本次提交的说明,不该偷懒省去。

6、git status查看当前版本库的状态。

7、git diff显示具体的尚未缓存的改动记录。

8、git log记录每次commit的信息。git log --pretty=oneline将每次commit的记录打印成一行,内容精简。

9、git reset修改命令:

(1)git reset HEAD废除这次修改记录,当前文件回到上一次提交的状态。

(2)git reset –hard [commit id]

10、git rm慎用。这个命令会将所有版本库记录删除。

远程仓库

创建SSH Key。在类似C:\Users\xiang_000\.ssh这样的主目录下,查看是否有id_rsa和id_rsa.pub文件。如果有了,直接可以将公钥添加到github账户上。如果没有,打开Shell(windows下的Git Bash):

ssh-keygen -t rsa -C "youremail@example.com"

id_rsa.pub是公钥,可以放心的告诉任何人。

在github的Account settings里,Add SSH Key。

从远程库克隆

如果从零开发,推荐的方式是先在github上创建远程仓库。然后,从远程库克隆。

在github创建名为:learngit的新仓库。勾选添加README.md。

git clone克隆一个本地库:

git clone git@github.com:michael728/learngit.git

添加(关联)远程库

如果本地已经有本地仓库了,要和远程的仓库关联起来。

在github创建新的repo,名字为:demo。根据github的提示,在本地的demo仓库下运行命令:

git remote add origin git@github.com:michae728/demo.git`

请千万注意,把上面的michae728替换成你自己的GitHub账户名,否则,你在本地关联的就是我的远程库,关联没有问题,但是你以后推送是推不上去的,因为你的SSH Key公钥不在我的账户列表中。

添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

将本地库的所有内容推送到远程库上:

git push -u origin master

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

从现在起,本地提交,可通过命令:

git push origin master

分享与更新项目

git push:

(1)git push origin dev表示提交到远程的dev分支。

(2) 通常在本地的dev分支推送到远程的dev分支,注意两地分支命名要相同,保证不发生混乱

git pull:

(1)git pull origin dev表示拉远程dev分支到本地,并和本地dev分支合并,git fetch(不常用):

(2)git fetch origin dev表示拉远程dev分支到本地,但是,不和本地dev分支合并

git remote:

git remote add github git@github.com:michael728/test.git将本地仓库推送到github上名为test的仓库里

分支管理

创建于合并分支

创建dev分支,然后切换到dev分支:

git checkout -b dev

相当于下面两条命令:

(1)git branch dev

(2)git checkout dev

git branch命令用于查看当前分支。当前分支前面会有*:

git branch查看本地分支

git branch -a查看本地和远程所有分支

git branch -r查看远程分支

git branch -d删除本地分支

git push :origin dev删除远程dev分支

git checkout master命令用于dev分支完成工作后,切换回master分支。

git merge用于本地的指令。如果当前分支是master,本地另一个分支是dev,

用下面命令将分支合并到master:

git merge dev

后悔药

版本回退

git log来查询历史记录。git log --pretty=oneline显示精简信息。

git中,HEAD表示当前版本,上一个版本就是HEAD^,上上个版本HEAD^^,上100个版本,写成HEAD~100。

回到上一个版本:

git reset --hard HEAD^

或者通过git reset --hard [commit id]回到指定版本号的版本。

git版本的回退速度很快,因为git内部有个指向当前版本的HEAD指针。git仅仅是通过修改HEAD指向就可以完成版本切换的工作。

git reflog用来查看命令历史。通过这个,就可以查到之前的版本号啦!

工作区和暂存区

工作区(Working Directory)

例如我们创建的demo文件夹,他就是一个工作区。

版本库(Repository)

工作区有一个隐藏目录.git,这个不算工作区,它是git的版本库。

git的版本库里存了很多东西,最重要的是称为stage的暂存区,还有git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

说明

git add实际上就是把文件修改添加到暂存区;

git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建爱你git版本库是,git自动为我们创建了唯一一个master分支,所以,现在git commit就是往master分支上提交更改。(因为以后还有可能往分支上提交啊!)

(1)+ `git status`可以查看状态。如果有文件从来没有被添加过,那么它的状态是:`Untracked`。

(2)+ 提交成功后,如果没有对工作区做任何修改,那么工作区就是`working directory clean`

管理修改

1、git diff HEAD -- README.md 命令查看工作区和版本库里最新版本的区别。

撤销修改

分为两种情况的修改:

修改了工作区某个文件的内容,想直接丢弃修改:

git checkout -- filename

注:--前后都有空格。

当修改了工作区内容,同时,添加到了暂存区,分两步:

(1)用命令git reset HEAD filename,回到场景1

(2)用场景1的方法操作。

删除文件

当删除了工作区的文件,git知道删除了文件,因此,工作区和版本库就不一致。git status命令会立刻告诉那些文件被删除了。

有两个选择:

1、确实要从版本库里删除该文件,用命令git rm fimename,之后git commit提交。

2、误删,因为版本库里还有,可以很轻松的把误删的文件恢复到最新版:git checkout -- filename

注:git checkout其实是用版本库里的东西替换工作区的版本。无论工作区是修改还是删除,都可以一键还原。

附件 1、

2、

   
次浏览       
相关文章

每日构建解决方案
如何制定有效的配置管理流程
配置管理主要活动及实现方法
构建管理入门
相关文档

配置管理流程
配置管理白皮书
CM09_C配置管理标准
使用SVN进行版本控制
相关课程

配置管理实践
配置管理方法、工具与应用
多层次集成配置管理
产品发布管理
最新活动计划
LLM大模型应用与项目构建 12-26[特惠]
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
业务建模&领域驱动设计 11-15[北京]
用户研究与用户建模 11-21[北京]
SysML和EA进行系统设计建模 11-28[北京]

软件配置管理的问题、目的
软件配置管理规范
CQWeb 7.1性能测试与调优指南
为什么需要使用ClearCase
ClearCase与RTC的集成
利用ClearQuest 进行测试管理
更多...   

产品发布管理
配置管理方法、实践、工具
多层次集成配置管理
使用CC与CQ进行项目实践
CVS与配置管理
Subversion管理员

配置管理实践(从组织级到项目级)
通号院 配置管理规范与应用
配置管理日构建及持续集成
丹佛斯 ClearCase与配置管理
中国移动 软件配置管理
中国银行 软件配置管理
天津华翼蓝天科技 配置管理与Pvcs