zoukankan      html  css  js  c++  java
  • 版本控制之GitHub亲手实验总结

        使用Git的基本方式是:第一种,在remote端创建一个repository,clone到本地,然后在本地把已有文件添加进来/在本地clone的目录下创建新文件,再add 提交等纳入git版本控制。。第二种,直接在本地项目上,通过IDE相关插件,把整个项目提交到remote的一个库中(一般就为这个项目新建一个repository),从而纳入版本控制。

    实践可行的方式(Ps:命令行,只要懂得命令正确使用方式,发现是越用越顺手,越用越爽……):

      首先,克隆仓库的命令格式为 git clone [url]

    例如: git clone https://github.com/jhtlove/study.git

     

      这会在当前目录下创建一个名为study(自己在GitHub上建立的库的名称)的目录,其中包含一个 .git 的目录,用于保存下载下来的所有版本记录,然后从中取出最新版本的文件拷贝。如果进入这个新建的 study目录,你会看到项目中的所有文件已经在里边了,准备好后续的开发和使用。

     

    如果希望在克隆的时候,自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:

    $ git clone git://github.com/schacon/study.git mystudy
    

    唯一的差别就是,现在新建的目录成了 mystudy,其他的都和上边的一样。

      上图中,必须进入到含有(隐形文件夹).git文件夹的同一级目录下,才能使用git stash命令。([stæʃ]  存放:经常有这样的事情发生,当你正在进行项目中某一部分的工作,里面的东西处于一个比较杂乱的状态,而你想转到其他分支上进行一些工作。问题是,你不想提交进行了一半的工作,否则以后你无法回到这个工作点。解决这个问题的办法就是git stash命令。“‘储藏”“可以获取你工作目录的中间状态——也就是你修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中,随时可以重新应用。你可以重新应用你刚刚实施的储藏,所采用的命令就是之前在原始的 stash 命令的帮助输出里提示的:git stash apply。如果你想应用更早的储藏,你可以通过名字指定它,像这样:git stash apply stash@{2}。如果你不指明,Git 默认使用最近的储藏并尝试应用它:)进入后,命令行显示也会不同,多了一个“(master)”--master分支的显示。

     

    复制本地Java工程文件(贪食蛇)到和.git同一级的文件夹下,

     

    再次查看状态。snake文件夹没有被跟踪,

     

    使用git add .   去添加,再查看状态。

     

     

     

    为了避免push时出现的(Non-fast-forward)(出现原因在于:git服务器端的仓库中已经有你现在准备push的本地库中的一部分代码,所以它不允许你直接把你的代码覆盖上去)于是你有2个选择方式:

    1,强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容

      git push -f

    2.每次先从服务器拉取文件到本地,先把git服务器端的东西fetch(取得)到你本地,然后merge后,再push本地的库到服务器:

    ①git fetch 

    ②git merge

      两个操作加起来相当于git pull操作,但是又有区别。例如,如果服务器端有一个文件,如snake文件夹,另一个本地库(StudyRep)下也有一个未跟踪snake文件夹(从workspace中copy的),在StudyRepstudy下直接pull会提示必须先merge,如果没有merge,而是进行git add . 操作,把未跟踪的snake文件夹添加进去,再pull,会强制更新本地库中的snake文件。

    接着,为了进一步试验pull命令,先直接登录GitHub修改snake下的blood.java文件,然后再pull,执行pull命令后发现本地库中的blood文件确实改变了。接着直接git commit却发现虽然之前有执行git add .命令,但是仍然提示有Untracked files。再git add . 再git commit,再git push 就可以把本地库新增加的工程同步到服务器端。

     

      push之前,先要把changed内容commit到本地库。

    直接输入git commit 命令会进入VIM命令行模式,让你输入本次commit内容的一些相关信息。按i(insert)输入;Esc退出编辑,:wq(write and quit)保存退出。

      再git push,输入GitHub的用户名和密码,

    最后对比服务器端https://github.com/jhtlove/study,发现snake文件夹内容已经同步到服务器端的库了。

    要想达到Eclipse中修改了snake代码,又同步到服务器,只需要(如果已有workspa下的snake工程,只需要移除)把testAgain下的git库的snake工程import到Eclipse中,然后修改之后再add + commit + push操作即可(如果有需要可以先fetch+merge)。

     

     

      .ignore文件的使用

    *.class
    *.dll
    /bin/
    #ignore thumbnails created by windows
    Thumbs.db
    #Ignore files build by Visual Studio
    *.obj
    *.exe
    *.pdb
    *.user
    *.aps
    *.pch
    *.vspscc
    *_i.c
    *_p.c
    *.ncb
    *.suo
    *.tlb
    *.tlh
    *.bak
    *.cache
    *.ilk
    *.log
    [Bb]in
    [Dd]ebug*/
    *.lib
    *.sbr
    obj/
    [Rr]elease*/
    _ReSharper*/
    [Tt]est[Rr]esult*

     

     

      每次push都要输入用户名和密码,用户名密码的global配置?

     

    ,每次修改提交都要:

     git add .   (使用git stash  和git status 查看状态,红的不行,绿的就ok了)

    git commit

    git push

     

     

      git bash命令行的粘贴不是很好用的话,右击命令行标题栏->属性->选项->快速编辑模式,然后只要右击就可以进行“粘贴”操作。另外使用cd 命令进入某个目录,不能使用反斜杠,只能使用斜杠/。例如想要进入目录:D:StudyRepstudy,就只能在命令行输入 cd d:/StudyRep/study

     

     

    为URL取别名,不用每次都输一长串的url

    git  remote add 后查看.git文件夹下的config文件

    [remote "study"]
    url = https://github.com/jhtlove/study.git
    fetch = +refs/heads/*:refs/remotes/study/*

     

      其余实践注意点:

    ①ssh-keygen  不要手贱加空格写成:ssh  -keygen

    ②打开,克隆,……:使用克隆比较好建立好本地文件夹与GitHub服务器对应关系,再把自己想要保存的内容放入这个文件夹。

    ③commit是commit到本机的git库,而push才是同步到github

    ④其中要使用到GitHub 用户名(jht)和邮箱,登录密码

    ⑤在Eclipse中使用插件egit很方便,之前用用命令行产生的ssh key,只要在GitHub网站上保存了,取得了本地与GitHub服务器端的连通,在Eclipse中可以不再generate key,使用ignore忽略不想同步的文件。在Git Bash中使用命令  $ ssh -T git@github.com可检测本机与github的连通性。

    ⑥GIT不会在每一个目录下建立版本控制文件夹,仅在根目录下建立仓库。(svn版本高了,也仅仅在根目录形成 .svn文件)

    ⑦eclipse中的project也建立git版本控制,当未创建分支,处于NO-HEAD状态,首次提交后,会自动生成master分

     

    ⑧Eclipse项目下文件夹中的符号”?”表示此文件夹处于untracked状态,即git没有对此文件进行监控。通过Team -> Add to index可以将文件加入git索引,进行版本监控。也可以通过Team -> Untrack将文件从索引控制中排除。将此次新增的文件commit到仓库中,文件将处于unmodified状态,或者说,这就是一种staged状态。然后修改文件的内容,文件将处于modified状态。

    ⑨将不需要版本控制的文件,使用gitignore文件过滤掉:打开Navigator窗口,在project根目录中的.gitignore文件中,将需要排除控制的目录写入.gitignore文件中。

    十、Team -> Show in history可以查看版本历史提交记录。

         

     

     

    Eclipse上GIT插件EGIT使用手册

     

    Git文档:取得项目的-Git-仓库

     

  • 相关阅读:
    C#注意事项
    组件化开发
    kettle导数删除并插入更新数据_20161130
    MySQL_各城市在线产品天订单数据20161130
    MySQL_杭州11月1-29号在线产品在线天数、销售天数_20161129
    kettle每天自动发送邮件总结_20161128
    MYSQL_与excel结合在excel中用&连接符快速创建表头_20161125
    MySQL_杭州拱墅区、西湖区近9-11月销售过的产品_20161125
    MySQL_产品昨日库存与历史入库历史出库成本_20161124
    MySQL11月16-11月21日活动赠送的优惠券使用率_20161124
  • 原文地址:https://www.cnblogs.com/yongwangzhiqian/p/3938024.html
Copyright © 2011-2022 走看看