git命令

廖雪峰:

    https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

流程图:


一、创建版本库

将所在目录变成git可以管理的仓库,

 git init

二、添加文件到版本库

将readme.txt添加到暂存区里面去,

 git add readme.txt

加:

 将所在目录下的所有文件(包括隐藏文件)添加到缓存区里去,

  git add .

 更新文件内容后需要使用(-u会跟踪仓库包含文件的更新),

 git add -u xx

将readme.txt(缓存区的所有内容)提交到仓库,

 git commit -m 'readme.txt提交'

查看是否还有文件未提交,

 git status

如果文件被修改,我们想知道到底改了什么内容,如何查看?

git diff readme.txt 

三、 版本回退

当对readme.txt进行了多次修改并add和提交,如果想查看历史记录,

 git log:显示按时间由近到远的显示日志

 git log --pretty=online:简化信息的显示

HEAD代表版本,HEAD^代表上一个版本,HEAD^^代表上上个版本。

 回退到上一个版本,

  git reset --hard HEAD^

 回退到上100个版本,

  git reset --hard HEAD ~ 100 

查看readme.txt的内容,

 cat readme.txt

四、理解工作区和暂存区

工作区:即在电脑上看到的目录(.git隐藏目录版本库除外)

版本库:工作区的隐藏目录.git,这里存了很多重要的东西如,暂存区(stage)。

 git为我们自动创建了一个分支master,和一个指向master的指针HEAD。

之前提到的添加文件至git,就是分为两步:

 git add:即把文件添加到暂存区

 git commit:即将暂存区的所有内容提交到当前分支

五、git撤销修改和删除文件的操作

1、撤销修改

(1)我们可以使用git reset -- hard HEAD^直接恢复到上一个版本

(2)使用撤销命令

git checkout -- readme.txt 即把工作区做的修改全部撤销。分为两种情况:

 1)、readme.txt自动修改后,还没有add至暂存区,使用撤销命令就回到和之前版本库的内容状态

 2)、已经放入暂存区,然后又再次修改,此时撤销命令使其回到刚刚暂存区后的状态。

2、删除文件

当我们直接在文件目录删除文件,或者使用rm命令删除后,此时使用git status命令查看后,发现报红。

原因是:文件没了,git认为还在,却找不到!

此时我们有两个选择,

 选择1:直接commit,使git更新自己的记录

  选择2:从版本库中恢复被删除的文件

  即:git checkout -- xx.txt

 删除本地仓库中的文件名,删除后需要commit,再push,

 git rm -h 文件名

六、 远程仓库

 1、先有本地库,如何关联github远程库

 git remote add origin github仓库地址 

 git push -u origin 分支名 :将本地仓库分支上的内容传到 远程仓库的某个分支。

 如:git push -u origin master

  由于远程库是空的,我们第一次推送master分支时,加上了-u参数,git不但把本地的master分支内容推送到

 远程新的master分支,还会把本地mater分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

  推送成功后,可以立刻在github页面中看到远程库的内容已经和本地一摸一样了。

 2、先有远程库,从远程库克隆

  登陆github账号,创建新仓库

  git clone https://github.com/xxxxx/xxxx

七、创建和合并分支

在版本回退里,每次提交,git都把它们串成一条时间线,这条时间线是一个分支。截至目前只有一条时间线,

在git里,这个分支叫主分支,即master分支。HEAD严格意义上不是指向提交,而是指向master,master才是

指向提交的,所以,HEAD指向的就是当前分支。

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

git checkout -b dev

 注:git checkout 命令加上 -b参数表示创建并切换,相当于2条命令

  git branch dev

  git checkout dev 

2、git branch查看分支,会列出所有的分支,当前分支会添加一个星号。

如果,先在dev分支上对readme.txt添加内容:66666。并add和commit提交

然后,此时切换到主分支master上,此时查看内容,会发现没有dev分支所添加的东西,why?

这是因为不是一个分支。。。。

我们可以把dev分支上的内容合并到master,在master上使用如下命令:

 git merge dev

此时,master伤的内容就包含dev的了。。。

注:

 上面的方式是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。

合并后,就可以删除dev分支了,因为我们不用了嘛,如下:

 git branch -d dev

总结分支的创建与合并:

 查看分支:git branch

创建分支:git branch branch_name

切换分支:git checkoutbranch_name

 创建+切换分支:git checkout -b branch_name

合并某分支到当前分支:git merge branch_name

删除分支:git branch -d branch_name

3、冲突问题

 当在dev分支修改readme.txt ,如添加88888保存,然后又在master修改如添加99999保存。。此时如果在master分支上进行合并dev分支

时,就会出现冲突。。使用git status查看状态时,发现,原因在于修改了两处。

此时使用cat readme.txt查看时,会发现出现

 <<<<<<< HEAD

 88888

 >>>>>>>dev

 99999

二者分别表示主分支和dev分支修改的内容,此时只能把dev中所修改的内容与master保持一致。。

git log --graph:查看分支合并图

4、由于通常合并分支时,一般使用“fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息。现在我们采用带参数

的方式来禁用“fast forward”模式。如:

 git checkout -b dev

git add readme.txt

git commit -m "add merge"

git checkout master

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

 git branch -d dev

git branch:可以看到,分支dev仍在

八、工作现场

工作中,每一个bug都可以通过一个临时bug修复,修复完成后,合并分支,然后将临时的分支删掉。

隐藏当前工作现场: 

 git stash

查看工作现场有哪些

 git stash list

恢复工作现场:

 (1)git stash apply恢复,恢复后,stash内容不删除,你需要使用git stash drop来删除

(2)git stash pop,恢复的同时直接把stash中的内容也删除

九、团队协作

当你从远程库克隆时,实际上git自动把本地的master分支和远程的master分支对应,并且远程库

默认名是origin。

 (1)查看远程库的信息:git remote

 (2)查看远程库的详细信息:git remote -v

1、推送分支

 就是把该分支上所有本地内容提交到远程库中,推送时,要指定本地分支,这样git就会把

该分支推送到对应的远程分支上。

 使用命令:git push origin master

 一般,master是主分支,因此要时刻与远程同步。一些修复bug分支可以先合并到主分支,

 然后由主分支master推送到远程。

二、抓取分支

 创建远程origin的dev分支到本地来:

 git checkout -b dev origin/dev

把现在dev分支推送至远程:

git push origin dev 

 设置本地dev分支与远程origin/dev分支的链接:

 git branch --set-upstream dev origin/dev

 pull代码:

  git pull

团队协作一般是这样的:

 首先,可以试图用git push origin branch-name推送自己的修改

如果推送失败,则因为远程分支比你本地更新的早,需要先git pull试图合并

如果合并有冲突,则需要解决冲突,并在本地提交。再用git push origin branch-name

参考链接:http://blog.csdn.net/free_wind22/article/details/50967723



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值