Git学习

Git是目前世界上最先进的分布式版本控制系统。

网上看到一个做的比较好的教程https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

下载直接去官网下在对应系统的Git就好了。

创建版本库:

    首先,选择一个合适的地方,创建一个空目录:

$ mkdir learngit   //mkdir命令用于创建目录
$ cd learngit      //cd命令用于切换到指定目录
$ pwd              //pwd命令用于显示当前目录。

    其次,通过git init命令把这个目录变成Git可以管理的仓库:

$ git init

把文件添加到版本库:

  1. 使用命令git add <file>,注意,可反复多次使用,添加多个文件;
  2. 使用命令git commit -m <message>,完成。
$ git add <file>            //add将文件移入临时stage
$ git commit -m <message>   //commit将stage内所有文件移入master

撤销修改:

$ git checkout -- <file>    //直接丢弃工作区的修改,回到修改前
$ git reset HEAD <file>     //若以将工作区的文件修改并add到暂存区,需要先使用此命令回到add前的状态,再使用上条命令。

查看状态:

$ git status   //status命令用于查看当前状态
$ git diff     //diff命令用于查看当前具体修改值
$ git log      //log命令显示从最近到最远的提交日志
$ git reflog   //reflog命令查看命令历史
$ cat <file>   //cat命令查看仓库内文件内容

版本退回:

$ git reset --hard HEAD^       //上一个版本写HEAD^,上上一个版本写HEAD^^,往上100个版本写成HEAD~100。
$ git reset --hard commit_id   //commit_id为使用log查看某一版本的commit值,只写前几位即可

删除文件:

    先删除工作区内文件

$ rm <file>  

    再处理版本库里的文件

$ git rm <file>              //确定需要删除,则将版本库内文件删除
$ git checkout -- <file>     //若发现工作区内文件不需要删除,用版本库里的版本替换工作区的版本

远程仓库:

  GitHub网站提供Git仓库托管服务,你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以需要设置:

  第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

$ ssh-keygen -t rsa -C "youremail@example.com"  //在用户主目录里找到私钥id_rsa和公钥id_rsa.pub两个文件

  第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面。然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。

  第3步:创建一个新的仓库,登陆GitHub,在右上角点击“new repository”按钮。然后,在Repository name填入learngit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库。

  第4步:目前,在GitHub上的这个learngit仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

$ git remote add origin git@github.com:xxxx/learngit.git //具体按你们自己的来写
$ git push -u origin master     //由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

  从现在起,只要本地作了提交,就可以通过命令:

$ git push origin master

  把本地master分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!

  以上过程容易出问题,可参考https://blog.youkuaiyun.com/jingtingfengguo/article/details/51892864

  第5步:将仓库保存到本地,

$ git clone git@github.com:michaelliao/gitskills.git   //填写自己的地址

分支管理:

  因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。

团队合作的分支看起来就像这样:

git-br-policy

  首先,我们创建dev分支,然后切换到dev分支:

$ git branch dev        //创建分支:git branch <name>
$ git checkout dev      //切换分支:git checkout <name>

$ git checkout -b dev   //git checkout命令加上-b参数表示创建并切换,相当于以上两条命令

  然后,用git branch命令查看当前分支:

$ git branch

  修改文件后,dev分支的工作完成,我们就可以切换回master分支:

$ git checkout master

  现在,我们把dev分支的工作成果合并到master分支上:

$ git merge dev

  合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

  合并完成后,就可以放心地删除dev分支了:

$ git branch -d dev

  合并的过程也可能会出现冲突,解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

$ git log --graph    //用git log --graph命令可以看到分支合并图

保存现场:

  修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

  当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

Feature分支:

  添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。

$ git checkout -b feature-vulcan

如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。

$ git branch -D feature-vulcan

多人协作的工作模式:

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

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

  3. 如果合并有冲突,则解决冲突,并在本地提交;

  4. 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>

$ git remote -v         //查看远程库信息
$ git push origin branch-name     //从本地推送分支
$ git pull                 //抓取远程的新提交试图合并
$ git checkout -b branch-name origin/branch-name    //在本地创建和远程分支对应的分支
$ git branch --set-upstream branch-name origin/branch-name    //建立本地分支和远程分支的关联

rebase操作:

$ git rebase

rebase操作的特点:把分叉的提交历史“整理”成一条直线,看上去更直观。缺点是本地的分叉提交已经被修改过了。

 

标签管理:

创建标签

  在Git中打标签非常简单,首先,切换到需要打标签的分支上,然后,敲命令git tag <name>就可以打一个新标签:

$ git tag    //命令git tag查看所有标签
$ git tag v1.0     //命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id
$ git tag -a v0.1 -m "version 0.1 released" 1094adb   //可以创建带有说明的标签,用-a指定标签名,-m指定说明文字
$ git show <tagname>      //标签不是按时间顺序列出,而是按字母排序的。可以用git show <tagname>查看标签信息

操作标签

$ git tag -d v0.1           //删除本地标签
$ git push origin v1.0      //要推送某个标签到远程,使用命令git push origin <tagname>
$ git push origin --tags    //一次性推送全部尚未推送到远程的本地标签
$ git push origin :refs/tags/<tagname>   //删除一个远程标签

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值