zoukankan      html  css  js  c++  java
  • Git学习笔记

    该笔记是学习廖雪峰老师的Git教程后,自己的练习记录。

    Git是分布式版本控制系统。

    1、创建版本库,创建一个空文件夹git-prase

    文件夹下出现learngit

     2、把文件提交到仓库

    git add <file>可反复添加多个文件,是把文件添加到暂存区

    git commit -m <message>提交文件并备注,是把内容提交到当前的分支

    3、修改文件

    修改了文件后,git status命令是随时掌握工作区的状态,git diff 查看修改的内容,再Git add 和Git commit

    4、版本回退

    git log可以查看提交历史,‘ca6d3d...’那些是版本号

    知道版本号后就可以回退到相应的版本

    git reset --hard  回退   git reflog 用来记录每一次的命令

    HEAD^ 上一个版本 HEAD^^上上版本  HEAD~100往上100个版本

     

     5、理解下git版本控制系统的概念

    把文件添加到版本库的两步:1、git add 把文件添加到暂存区2、git commit把暂存区内容提交到当前分支git

    提交后 暂存区就空了如下图

     注意:必须先git add提交到 暂存区,再commit。

    6、撤销修改(前提是没有到远程库)

    1)如果我们修改了内容没有提交,可以直接cat readme.txt查看内容后,用 git checkout -- readme.txt撤回

    2)如果我们把修改的内容 git add到暂存区了,那么可以先回退版本用git reset HEAD readme.txt 把暂存区的内容撤回到工作区,再用git checkout -- readme.txt 撤回

    3)如果我们把修改的内容git add和git commit了,就可以退回到上一版本。git reset -- hard HEAD^ 或git reset -- hard <版本名>,回退后再撤回。

    7、删除文件

    文件被git add 和git commit 后用git status查看状态发下工作区和版本库不一样

    1)如果想要确实要删除文件,就git rm test.txt 和git commit -m 'remove test.txt',文件就彻底删除了。

    2) 如果要恢复文件,就git checkout -- test.txt

     删除文件 rm 

    文件已被恢复。

    若要彻底删除文件

    8、远程仓库(先有本地库,后有远程库的时候,如何关联远程库)

    方法如下:

    GitHub网站提供Git仓库托管服务。注册了GItHub账号后。

    由于本地GIt仓库和GitHub仓库之间的传输是通过SSH加密的,所以要做设置。

    1)打开Git Bash创建SSH Key:

    回车

    即可看到id_rsa 是私钥(保密)和id_rsa.pub公钥文件

     

    这样GitHub就能通过公钥确定是你自己推送的

    我有自己的GitHub远程仓库了。

    我本地有了Git仓库,GitHub上再创建个Git仓库,并让两个仓库远程同步。这样GitHub上的仓库即可备份,又可以让其他人通过该仓库来协作。

    接下来来创建仓库:

    1.右上角new repository填写learngit保存,即可得到learngit的仓库

     

    2、创建GitHub仓库后,就可以把本地仓库连接到远程仓库啦。

    1)关联远程库,用git remote add origin git@github.com:path/repo-name.git

    2)关联后,使用命令git push -u origin master第一次推送master分支的所有内容;

    此后,每次本地提交后,只要有必要,就可以使用命令git puth origin master推送最新修改。

    9、从远程库克隆(先创建远程库,然后从远程库克隆)

    1)首先,登录GitHub,创建一个新的仓库,名字叫gitskills

    2)远程库准备好后,就可以克隆到本地库了

    克隆的地址也可用https地址但是速度会慢,并且要输入口令。默认是git://使用ssh协议,但只开放http端口的公司内部就无法使用ssh协议,只能用https。

     

    10、分支管理(工作时最好建一个分支干活,master分支仅用来发布新版本,不能在上面干活)

    工作的时候创建一个属于自己的分支,别人看不到,还继续在原来的分支上正常工作,而我再自己的分支上干活,想提交就提交,等到开发完毕后,再一次性合并到原来的分支上,这样既安全又不影响别人工作。git的分支无论创建、切换和删除分支都非常方便。

    查看分支:git branch ;创建分支:git branch <name>; 切换分支:git checkout <name> ;创建+切换 git checkout -b <name>

    合并某分支到当前分支:git merge <name>; 删除分支:git branch -D <name>  查看状态: git status

    11、分支解决冲突

    命令 git log --graph可查看分支合并图

    当我们创建了一个分支,并修改了内容后提交,切回master分支,又修改了内容并提交,然后创建的分支合并到master分支的时候就会造成冲突,这时候要把冲突修改内容修改后再提交。

    在合并分支时,git会用fast forward模式,但这种模式下,删除分支后,会丢掉分支信息,如果要强制禁止 fast forward模式,git就会在merge时生成新的commit。这样从分支历史上就可以看出分支信息,可用--no--ff 方式来git merge。

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

     12、bug分支

    命令 git stash 隐藏工作现场;git stash pop 回到工作现场。

    当我们正在dev分支上工作时,有bug需要马上修复,这时可以用 git stash把dev分支给隐藏起来,创建个修复bug的分支来修复bug,修复后,把bug分支删除,用git stash pop恢复分支继续工作。。

    13、feature分支。

    命令git branch -D <分支名> :强行删除

    开发的新功能合并前不用了,就用-D大写D来强制删除。

    14、多人协作(用git push origin <branch-name>推送自己的修改,如果失败就git pull试图合并,如果合并有冲突,就解决冲突并在本地提交,没有冲突或解决掉冲突再git push 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;(git pull时若提示 no tracking information说明本地分支和远程分支的链接关系没有创建)

             从远程抓取分支,使用git pull,如果有冲突要先处理冲突。

    15、标签

            命令 git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id

                    git tag -a <tagname> -m 'balala'可以指定标签信息

                    git tag 查看所有标签

                    git push origin <tagname>可吐送一个本地标签

                    git push origin --tags 可推送全部未推送过的本地标签

                     git tag -d <tagname>可删除一个本地标签

                    git push origin :refs/tags/<tagname>可删除一个远程标签

  • 相关阅读:
    spring在加Transactional的方法中使用redis取值为空的问题
    IDEA 调试jar文件
    搭建maven私有中央仓库
    F2BPM的流程仿真
    F2BPM流程中心RESTfull解决方案及示例
    F2BPM中关于工作流引擎驳回设计
    “员工请假”流程及在线表单开发示例
    在线表单字段做为节点处理人
    F2工作流引擎之-纯JS Web在线可拖拽的流程设计器(八)
    【原创】工作流引擎运转模型之--终极利器退回时回收分支算法
  • 原文地址:https://www.cnblogs.com/colorful-paopao1/p/9198626.html
Copyright © 2011-2022 走看看