• git


    常识

    git是软件,

    github是网站:

    添加ssh keys时,需要自己定义名称;

    为什么要用github:代码比较丰富,功能齐全,横向强大

    如何更改项目的gitignore:当创建新项目时,指定了语言类型,以后就不能修改gitignore了;只能打开gitignore,edit时,有了选项,可以修改。

    coding是网站:

    添加ssh keys时,可以从key中提取出名称;

    为什么要用coding:国内稳定,纵向强大,可以演示

    在remote中,采用git.coding.net域名;

    代码管理快速入门:https://coding.net/u/coding/p/Coding-Feedback/git/blob/master/git-starter-tutorial.md

    遇到的问题:

    图形界面上传代码:git did not exit cleanly
    命令行上传代码:fatal: unable to access 'https://git.coding.net/sfpw/test1.git/': Protocol https not supported or disabled in libcurl  删掉C盘下的libcurl.dll(E:),之后图形界面上传代码也正常了。
    

    每次push都需要username和password,是因为采用了https,解决办法是:

    git remote rm origin
    git remote add origin git@git.coding.net:yuquan0821/demo.git
    git push origin
    

      

     

    gitshell是网站:

    跟github使用相同的ssh;

    碰到的问题:别人的Darwin给我加了权限,我remote add origin git@gitshell.com或者git clone https://都不能成功;我pull或clone自己的仓库就可以。

    解决办法:使用https的方式;.gitconfig/[credential]只有一个值;

    原因:执行了多次:git config --global credential.helper cache导致credential.helper有多个值

    git clone时,不用git init;

    github for windows:是window系统下github客户端,不过一般习惯用命令行(git bash)

    在mac下,习惯用终端。

    Windows英文版GitHub客户端使用操作流程图文攻略教程现没中文版   http://www.ihref.com/read-16514.html   

    Git版本控制软件结合GitHub从入门到精通常用命令学习手册    http://www.ihref.com/read-16369.html

     

    廖雪峰git教程 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 

    svn是集中式的,git是分布式的

    mac:pwd:显示当前目录

    版本控制系统 不能 管理二进制文件:图片,word。UTF-8编码最好

    windows下不能用记事本编写代码

    可以多次add,因为commit一次可以提交多个文件

    git status:查看工作区的状态

    git diff:查看修改内容

    q退出git log

    总结的图

    接下来就剩5个板块了:创建,穿梭,origin,branch, tag

    创建

    mac:pwd:显示当前目录

    mkdir learngit 创建文件夹

    git init 初始化

    版本控制系统 不能 管理二进制文件:图片,word。UTF-8编码最好

    windows下不能用记事本编写代码

    可以多次add,因为commit一次可以提交多个文件:git add readme.txt; git commit -m "add readme.txt",注释需要使用",而不能用'

    穿梭

    git status 查看工作区的状态

    git diff 可以查看文件的修改内容

    git log --pretty=oneline 查看历史记录,q退出

    HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id 或者 HEAD^或者HEAD~1。

    穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

    要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

    工作区就是当前目录

    版本库(.git):stage(暂存区,add目的地)和master(HEAD,commit目的地)

    每次修改,如果不add到暂存区,那就不会加入到commit

    reset HEAD是回退版本;checkout -- file撤销工作区的修改

    git  checkout -- file 撤销工作区的修改;修改三两种:一、add之前的操作;二、commit之前的操作。撤销到commit或者add时的状态;如果没有--,则为创建分支

    git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。处理撤销的第三种情况。

    rm file 删除文件,接下来得情况:一、确定删,git rm file,git commit -m ""; 二、撤销删,git checkout -- file;

    origin

    在shell中find ~/.ssh 找到.ssh目录,里面有id_rsa和id_rsa.pub,前者是私匙,后者是公匙

    关联远程库:git remote add origin git@github.com:path/test.git

    第一次推送:git push -u origin master

    以后推送:git push origin master

    克隆:git clone git@github.com:sfp/test.git

    git支持的协议:git://(ssh支持,快); https://(慢,每次必须输入口令)

    branch

    ------------------------------------------------------------------------------

    20150922创建分支

    先在本地创建分支:git branch v2

    然后切换到v2分支:git checkout v2

    把本地的分支跟线上的分支关联:git pull -u origin v2

    -----------------------------------------------------------------------------

    开发一个新功能,创建一个分支,在自己的分支上干活,完成后,再一次性合并到原来的分支。

    HEAD指向master,master指向提交

    查看分支:git branch

    创建分支:git branch <name>

    切换分支:git checkout <name>

    创建+切换分支:git checkout -b(创建并切换) <name>

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

    删除分支:git branch -d <name>;-D强制删除

    合并方式:FAST-forward,--no-off

    什么情况会冲突?如果master和branch都修改同意文件,就会冲突。冲突后,手动删除。

    查看分支合并图:git log --graph --pretty=oneline --abbrev-commit,如果不加--graph,则为查看历史操作

    Fast Forward模式下,合并分支后,会删除分支信息;有时需要使用--no-off模式:git merge --no-off -m "" dev

    修复bug时,创建一个master的临时分支

    git stash:工作现场保存

    git stash list:查找工作现场

    git stash apply stash@{0}恢复;git stash drop(删除)

    git stash pop(恢复并删除),应该也需要加stash{0}吧?

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

    查看远程库的信息:git remote -v

    bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;

    feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

    创建远程origindev分支到本地:git checkout -b dev origin/dev

    因此,多人协作的工作模式通常是这样:

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

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

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

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

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

    这就是多人协作的工作模式,一旦熟悉了,就非常简单。

    tag

    git tag 查看所有标签

    git show v0.9 查看标签信息

    git log --pretty=oneline --abbrev-commit 查看历史提交的commit id

    git tag -a v0.1 -m "" 368164

    标签只存储在本地,所以只需在本地删除

    命令git push origin <tagname>可以推送一个本地标签;

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

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

    命令git push origin :refs/tags/<tagname>可以删除一个远程标签。先删除本地的标签

    github

    用自己的账号fork开源仓库,自己可以推送到fork后的仓库,pull request到开源仓库

    忽略特殊文件

    忽略某些文件时,需要编写.gitignore;

    .gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!

    https://github.com/github/gitignore

    配置别名

    很有用,我先熟悉基本的命令,然后再用别名

    重装系统后重装git

    git for windows

    配置环境变量: 找到git安装路径中bin的位置; 找到git安装路径中git-core的位置,加入系统变量的path中

    生成ssh keys:在git bash中 git config --global user.name "lxyz";git config --global user.email "1129103472@qq.com";ssh-keygen -t rsa -C “1129103472@qq.com”,会看到密匙生成的 位置,添加到github

    在仓库目录下git init之后再ssh git@github.com,而不能在任何地方都ssh git@github.com
    

    ssh默认位置:C:UsersAdministrator.ssh

    可在Git Bash下写命令

    mac中git连不上,参考官方文档:https://help.github.com/articles/generating-ssh-keys/

    20160819

    win7连不上git:Could not create directory '//.ssh': No such file or directory

    http://loftor.com/error/1/

    场景:之前有个前端项目darwin,后来想改为后端项目,打算把之前的内容删了,再上传新的。

    办法:新建一个文件夹,把之前的前端项目删了;再在后端项目中pull远程仓库上的空项目,然后再push。

    删除文件夹:git rm -r js

    git 团队协作的一些命令:http://www.linuxidc.com/Linux/2015-01/111999.htm

    检测github 是否 正常连接:ssh -T git@github.com

    对于一个新的文件夹,如果设置git?

    git init

    git remote add origin git@github.com:path/test.git

    git pull origin master

    git add *

    git commit -m ""

    git push -u origin master

    问题

    重装系统,安装git后,在cmd中,提示:不是内部或外部命令,也不是可运行的程序

    解决办法:

    3.1、找到git安装路径中bin的位置,如:D:Program FilesGitin
    
            找到git安装路径中git-core的位置,如:D:Program FilesGitlibexecgit-core;
    
            注:"D:Program FilesGit"是安装路径,可能与你的安装路径不一样,要按照你自己的路径替换"D:Program FilesGit"
    
    3.2、右键“计算机”->“属性”->“高级系统设置”->“环境变量”->在下方的“系统变量”中找到“path”->选中“path”并选择“编辑”->将3.1种找到的bin和git-core路径复制到其中->保存并退出
    

      

     github连不上了;

    github部署静态页面

    挺容易的:https://segmentfault.com/a/1190000002765287

    需要自己把代码pull到本地,进行修改;默认访问index.html,不过可以自己增加路由,可以部署多个页面,还是挺方便的。

    static static-1都是部署好的静态页面。

    场景一:

    github上没有gitignore,在本地添加.gitignore也可以 禁止某些文件的上传

    场景二:

    github上有branch develop,在本地新建branch develop,直接push就行。

    场景三:

    .gitignore文件需要 git add .gitignore 这样添加

    提交到代码库的文件放在gitignore,也不会被忽略。

    git fetch

      应用场景:从github上获取所有的分支,而git pull会自动merge

  • 相关阅读:
    monitor system
    monitor disk
    manage account
    windows
    backup daily
    shell 脚本编程概述
    OGNL表达式
    Struts2各个功能详解(2)-输入校验和拦截器
    struts2各个功能详解(1)----参数自动封装和类型自动转换
    Struts2源码解析2
  • 原文地址:https://www.cnblogs.com/wang-jing/p/4257171.html
Copyright © 2020-2023  润新知