zoukankan      html  css  js  c++  java
  • Git的一些基本操作和命令

    1、创建版本库

    在D盘中打开Git Bash Here

    1.1、创建一个空目录

    Mkdir gitDemo –创建一个目录

    Cd gitDemo  --进入gitDemo目录

    Pwd –查看当前目录的路径

     

    1.2、通过git init命令把目录变成git可以管理的仓库

    Git init

     

    你会发现,多出一个.git文件,也可以理解成存放代码的仓库(暂存区)

    1.3、把文件添加到仓库中(暂存区)

    创建一个文件readme.txt,内容随便写

    Git add readme.txt –将文件放入暂存区

     

    没有提示代表成功

    1.4、把文件提交到仓库中

    Git commit –m ‘提交readme.txt文件’

     

    可以通过git status 查看状态

     

    如果有文件未提交,比如在readme.txt 中新增内容

     

    可以通过git diff 命令查看修改的内容

     

    如果要提交到git仓库中,你需要先add 然后再 commit

     

    小结:

    初始化一个Git仓库,使用git init命令。

    添加文件到Git仓库,分两步:

    使用命令git add <file>,注意,可反复多次使用,添加多个文件;

    使用命令git commit -m <message>,完成。

    2、理解工作区和暂存区

           工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。

      版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。

      我们前面说过使用Git提交文件到版本库有两步:

      第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。

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

    3、版本回退

    3.1、查看历史记录

    Git log

     

    如果要简化上面的信息

    Git log --pretty=oneline

     

    也可以更简单

     

    注意,上面三个图黄色部分为commitId(也就是下面所说的版本号),它是全球唯一的,reflog中的commitid是简写。

    3.2、还原到指定的版本号

    Git reset --hard 版本号

     

    注意事项:还原到指定版本后,在通过git log查看,就找不到指定版本之后的信息了,如上图所示,如果想还原到指定版本之后的信息,只能通过git reflog查找,如下图所示:

     

    4、git撤销和删除文件

    4.1、撤销操作

    如果我发现readme.txt新增的内容有误,但是我已经add了,还没有提交,那么我可以通过以下方法进行修改:

    (1):手动改写readme.txt错误的信息,然后add—》commit。

    (2):通过git reset --hard 版本号命令恢复到上一个版本。

    现在有一个新方法,使用git checkout -- file 方法丢弃工作区的修改

     

    命令 git checkout -- readme.txt 意思就是,把readme.txt文件在工作区做的修改全部撤销,将工作区的内容改为暂存区的内容。

    4.2、删除文件

    比如我新增了一个文件a.txt

     

    然后我在目录里面删除a.txt(rm a.txt),我现在有三种选择:

    (1):直接addàcommit提交

    (2):恢复到以前版本(git reset –hard 韩本号)。

    (3):撤销修改内容 git checkout – a.txt(前提是没有add)

    5、创建与合并分支

    在版本回填退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。

    5.1、创建一个分支并切换到该分支(git checkout –b dev)

     

    Git branch 查看当前分支

     

           git checkout 命令加上 –b参数表示创建并切换,相当于如下2条命令

      git branch dev :创建分支

           git checkout dev:切换分支

    5.2、

    在文件a.txt中添加内容1111111并提交

     

    查看master(主分支a.txt内容)

    我们可以看到主分支的a.txt文件没有内容,这时候我们需要将dev分支合并到master分支上。

     

    git merge命令用于合并指定分支到当前分支上,合并后,再查看readme.txt内容,可以看到,和dev分支最新提交的是完全一样的。

    注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。

    合并完成后,我们可以接着删除dev分支了,操作如下:

     

    总结创建与合并分支命令如下:

      查看分支:git branch

      创建分支:git branch name

      切换分支:git checkout name

      创建+切换分支:git checkout –b name

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

           删除分支:git branch –d name

    6、分支管理策略

    通常合并分支时,git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息(通过日志找不到了)现在我们来使用带参数 –no-ff来禁用”Fast forward”模式。首先我们来做demo演示下:

    创建一个dev分支。

    修改readme.txt内容。

    添加到暂存区。

    切换回主分支(master)。

    合并dev分支,使用命令 git merge –no-ff  -m “注释” dev

    查看历史记录

     

    分支策略:首先master主分支应该是非常稳定的,也就是用来发布新版本,一般情况下不允许在上面干活,干活一般情况下在新建的dev分支上干活,干完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。

    7、多人协同开发

    多人协作时,大家都会往master分支上推送各自的修改。现在我们可以模拟另外一个同事,可以在另一台电脑上(注意要把SSH key添加到github上)或者同一台电脑上另外一个目录克隆,新建一个目录名字叫gitDemo1

    7.1、先将分支新增一个新内容(可増可不增,方便了解分支)推送到远程库中

     

    7.2、进入gitDemo1目录中,克隆远程库到本地

     

    7.3、创建分支并与远程库关联:git checkout  –b dev origin/dev

     

    注意:clone过来的readme.txt文件没有dev内容的

    虽然你cat readme.txt可以看到,因为clone过来的是master主线,你可以使用git pull将远程库内容拉过来

     

    7.4、在gitDemo1/gitDemo/readme.txt文件底下新增内容aaaaaaa

     

    7.5、将新增的内容推送到远程库dev分支上

     

    刷新远程库地址

     

    7.6、在d:gitDemo目录底下拉取刚才d:gitDemo1gitDemo提交的修改

     

    Git pull失败,原因是没有指定本地dev分支与远程origin/dev分支的链接(虽然前面我们使用git push origin dev推送了分支,但也需要建立连接),根据提示,设置dev和origin/dev的链接

     

    7.7、当dev代码没有错误的时候,将dev代码合并到master中

     

    因此:多人协作工作模式一般是这样的:

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

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

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

    最后发布程序的时候,负责人在服务器上将远程库中的dev拉过来(git pull),然后合并到master主线上(git merge dev)。

     

    Git基本常用命令如下:

      mkdir:         XX (创建一个空目录 XX指目录名)

      pwd:          显示当前目录的路径。

      git init          把当前的目录变成可以管理的git仓库,生成隐藏.git文件。

      git add XX       把xx文件添加到暂存区去。

      git commit –m “XX”  提交文件 –m 后面的是注释。

      git status        查看仓库状态

      git diff  XX      查看XX文件修改了那些内容

      git log          查看历史记录

      git reset  --hard HEAD^ 或者 git reset  --hard HEAD~ 回退到上一个版本

      (如果想回退到100个版本,使用git reset –hard HEAD~100 ,也可以不写HEAD~,直接写版本号,版本号通过日志查找)

      cat XX         查看XX文件内容

      git reflog       查看历史记录的版本号id

      git checkout -- XX  把XX文件在工作区的修改全部撤销。

      git rm XX          删除XX文件

      git remote add origin https://github.com/tugenhua0707/testgit 关联一个远程库

      git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库(如何推送分支,将master改成分支名字,比如:dev)

      git clone https://github.com/tugenhua0707/testgit  从远程库中克隆

      git checkout –b dev  创建dev分支 并切换到dev分支上

      git branch  查看当前所有的分支

      git checkout master 切换回master分支

      git merge dev    在当前的分支上合并dev分支

      git branch –d dev 删除dev分支

      git branch name  创建分支

      git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作

      git stash list 查看所有被隐藏的文件列表

      git stash apply 恢复被隐藏的文件,但是内容不删除

      git stash drop 删除文件

      git stash pop 恢复文件的同时 也删除文件

      git remote 查看远程库的信息

      git remote –v 查看远程库的详细信息

           git push origin master  Git会把master分支推送到远程库对应的远程分支上

           git pull  将远程库内容拉过来

  • 相关阅读:
    JS 继承
    Ajax 与 Comet
    JS事件对象
    JS事件处理程序
    在JavaScript中创建命名空间的几种写法
    DOM0 DOM2 DOM3
    html5脚本编程
    canvas画图
    R语言平均值和加权平均值
    pyqt5通过文本对话框打开文件
  • 原文地址:https://www.cnblogs.com/your-Name/p/10365157.html
Copyright © 2011-2022 走看看