zoukankan      html  css  js  c++  java
  • git笔记

    在tortoisegit的设置里,在git的选项下面的git loacl .git/config里加入可以不用再次输入用户名和密码:
     [credential]    
        helper = store    
    git config --global credential.helper store
     
    error occurred during unpacking on the remote end: index-pack abnormal exit
    当出现上述错误时,不是因为git配置有问题,而是提交的文件可能存在其它问题,这时再将要推送的文件右击”重置master到这个版本“即可解决
    另外拉取或获取的时候要保证远端url的正确性!
    选择丢弃的时候会无条件还原本地文件的更改
    选择还原此版本做出的更改会还原所选的文件(如果是新增则是删除)
     
    文件状态:
    对应:1、已修改,2、未修改,3、新文件加入跟踪至暂存状态,4、未受版本控制状态。
    功能解释:
    拉取(pull|更新本地的远程分支):无条件无预览把远端文件直接下载到本地进行合并
    获取(fetch):只获取服务器文件可以用于比较预览而不下载到本地
    获取变基(fetch&rebase):http://blog.csdn.net/witsmakemen/article/details/22661605
    更新远端(remote update)
    清理过时的远端分支()

    恢复丢失的版本 ! K; Z$ y) y  Q, D9 G; ~5 f( E
    丢失版本最常见的问题就是 比如使用了 git reset –hard HEAD^ 之类的操作,结果发现丢弃的版本还想恢复回来,但是已经没有任何分支

    能够reference到这个commit了。幸运的是,git 对各个分支的head还有一份log记录叫做reflog,你可以在.git/logs/refs/heads/ 目录下

    看到它们。 通过 git reflog 可以显示变更历史。使用类似 master@{1} master@{“2 days ago”}之类的格式,就能索引到你想要的commit。
    例如对应于git reset –hard HEAD^ 使用 git reset –hard HEAD@{1}即可恢复到reset之前的commit上。* K. R! {. I0 L. z7 r/ F" }

    出现 * (no branch)的处理 5 Q) O1 H8 M4 ~% T# k* m* R+ ~: W
    如果当前正工作在 (no branch)上:
    $ git checkout -b working,就会把(no branch)上的东西checkout到working分支
    如果不小心从(no branch)branch切换到其他分支了,用git log不能查找到(no branch)的信息,不要担心,先用git reflog查到(no 

    branch)的commit,然后:
    $ git branch -b backup commit3 d' O1 v2 K* L; `9 U$ k2 q! Z: L% @
    - ?0 M) W( c; j) W: Q) i
    Git push,merge,pull,fetch,rebase各自在什么情况下使用 * `3 D: ]3 C& v9 z5 g* y) d
    Git push:用本地的refs更新远程的refs。比如从远程的git repository中clone了一个副本,在此基础上做了一些修改,然后用git push将


    你的修改更新到远程,前提是要有远程的写权限。1 `5 ^2 I" r0 J
    . k/ l8 S/ Y) T4 W& }
    Git merge:合并不同的分支,详细看git merge 合并分支
    . K! X3 C2 x3 ~3 ^& l+ e% f- M# o
    Git pull:从另一个repository中fetch并且merge到一个本地分支,比如从远程的git repository中clone了一个副本,过了一段时间,远程的版本可能已经更新,用git pull将远程的更新fetch并且merge到当前分支。

    Git fetch:详细看,git fetch 从另一个repository中下载objects and refs

    Git rebase:详细看,git-rebase 跟上游分支同步

    提交问题
    提交的“日志信息”栏里面一定要手动输入若干信息,signed-off-by添加的不管用

    gitdos下操作:

    http://blog.csdn.net/wangjia55/article/details/8802490

    git自行整理(善用提示,懂提示):
    git add *  增加当前目录修改的文件
    git add . 会递归当前目录所有子目录及文件
    git status 
    git commit 文件名 -m "注释"
    git push 
    git reset head 文件名 也可以git reset . [*]表示还原当前所有
    git rm 移除文件
    other:
    touch 文件名  增加文件


    你当然不想把一些配置文件等commit到服务器上去吧?可以在本地项目根目录中建立.gitignore文件来忽略一些文件和目录:
    比如:
    /system/*   #忽略根目录system下所有文件
    /application/config/*  
    /admin/application/config/*


    只能或略没有与git打过交道的文件,否则需要重新从git远端删除再执行忽略

    使用sourcetree方便管理git项目

    有冲突的时候,先贮藏, git stash, git pull git stash pop还原贮藏区内容,最后解决冲突,使用tortoise的时候先现有,再远端(贮藏区自己的东西)

    Please move or remove them before you can merge.
    git clean  -d  -fx ""
    其中 
    x  -----删除忽略文件已经对git来说不识别的文件
    d  -----删除未被添加到git的路径中的文件
    f  -----强制运行

    http://www.cnblogs.com/hydah/archive/2012/04/10/2440220.html

    git  分支互动条件下  ,清理.settings之类的文件   最后不要切换分支 如果有冲突,则直接pull  
    还有远程删除文件预览 git rm -r -n --cached  */src/*    最好是去掉src前面的*/ 号可以匹配到
    熟练使用git命令 git add xxx.xxx不需要加后面参数(一般情况下)
    git commit xxx.xxx -m "beizhu" 
    最后git push origin "branch"   matster
    git pull origin master (origin master )有时候很有必要加上
    最最后就是合并了 。。。。
    所谓的merge  ,就是切换到需要“小文件”的分支,然后执行merge命令,执行完毕后在commit并推送
    合并完成后在被合并的小分支上需要add并commit ,commit的时候可能会遇到
    fatal:cannot do a partial commit during a merge 错误 解决办法:git commit -a  (提交全部)

    git merge 问题
    如果产生本地文件修改(unlink错误),使用checkout -文件方式还原
    如果提示exits,直接删除即可,命令:rm -f ./.git/index.lock
    ....

    https://segmentfault.com/q/1010000000156026
    官方文档有句话“切换分支的时候最好保持一个清洁的工作区域。”,不知道我的理解是不是正确的。如果你当前分支有修改,但是还没有


    commit,如果你要切换分支的话,最好就是把内容都commit了?还是只用add到暂存区,下次回来可以继续。
     
    我推荐你用git stash 暂存起来,切换回来的时候用git stash apply重新获取刚才的变更。切换的时候给你一个干净的工作目录:)
    2012年12月26日回答 评论


    jesse_91889
    353 声望
    答案对人有帮助,有参考价值2答案没帮助,是错误的答案,答非所问
    有如下几种处理方式:
    1. add并且commit,再checkout,提交到当前分支
    2. add但不commit,可以stash,然后checkout回来之后stash apply,在commit,提交到当前分支
    3. add但不commit,也不stash,直接checkout,然后再commit的话,记录就在切换分支下面。

    其背后的原因:一个本地的git repo只有一个工作区和暂存区,但是有多个分支的提交区,而我们的checkout只是将HEAD指针从一个分支切

    换到另一个分支。
     


    小乌鱼forever
    31 声望
    答案对人有帮助,有参考价值


    答案没帮助,是错误的答案,答非所问
    如果你当前分支有修改,但是还没有commit,如果你要切换分支的话,最好就是把内容都commit了?
    不是,因为你的change还不一定ready for commit,根据你的实际情况,你可以git stash暂存,你可以commit生成一个新的提交,你也可以git checkout -f强制切换分支
    2013年01月28日回答 1 评论

    loveky
    37 声望
    答案对人有帮助,有参考价值答案没帮助,是错误的答案,答非所问
    没有进行commit并切换分支,当前文件还在缓冲区。
    不是对当前Git版本,进行提交。
    在任意分支下还可reset修改或commit.

    测试

    全选复制放进笔记git config --global alias.co checkout
    git config --global alias.br branch
    git config --global alias.ci commit
    git config --global alias.st status

    git br a
    git br
    git br b

    git co a
    touch a.py
    git add .

    git co b
    git st
    git add .
    git commit -m 'add a.py file'
    git st

    当前文件就回出现b分支下
    如果这样,退回上次commit
    git reset --hard
    add 即是暂存 git stash git purpos....
    git忽略文件之再次笔记
    这个是全文件名:.gitignore
    添加的时候用伪linux命令vim或touch添加
    然后在里面以行为单位进行文件规则过滤,记得不要遗漏点

     
     
  • 相关阅读:
    Eclipse SVN忽略某些文件或文件夹方法
    在ORACLE中给已有数据的表增加、修改、删除一个字段(或一个列)或者多个字段(或多个列)的问题
    Java中IO流,输入输出流概述与总结
    Java面向对象之继承
    jquery-each()
    window.showModalDialog以及window.open用法简介
    struts1、ajax、jquery、json简单实例
    软件人才管理
    疑难杂症定位记录
    linux中断子系统
  • 原文地址:https://www.cnblogs.com/marineblog/p/5546655.html
Copyright © 2011-2022 走看看