git cmd ---记录

2019-08-06  本文已影响0人  幸宇
发展历程:

2002年以前,志愿者们通过diff方式发给linus,linus通过手工合并代码
2002 - 2005 之间,linus用BitKeeper管理代码
2005年之后 linus花了两周时间用C写了一个分布式版本控制系统,一个月之内 Linux系统的源码由Git管理
2008年 Github网站上线

区别:

CVS、SVN :集中式版本控制体统
Git:分布式版本控制体统
收费的集中式版本控制体统:ClearCase 特点:安装比windows还大,运行比蜗牛还慢

GIt下载

如果你用Debian或者Ubuntu Linux 安装git:sudo apt-get install git
老一点的 安装:sudo apt-get install git-core,原因:之前有软件叫GIT(SNU Interactive Tools),所以GIT叫git-core。由于Git名气太大,就把GUn Intreactive Tools 改成gnuit,git-core 正式改为git
设置

    git config user.name /  user.email     查看本地name&email
    git  config --global user.name "Your  Name"
    git  config --global user.email  "Your  Email"
    原因:Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址
命令
    pwd  显示当前目录
    git init 将文件夹变成Git可以管理的仓库
    ls  -ah  没有看到.git文件 -- 这个目录默认是隐藏的
    git log   查看日志
    git log --pertty=oneline               查看日志 只输出commit版本号和commit注释
    git log --pertty=oneline --abbrev-commit       查看日志 只输出commit版本号和commit注释的7位ID
    git  reset --hard HEAD^              回退到上一个版本
    git  reset --hard 版本号               回退到某个版本
    git reflog                                      记录每一次命令  回退某个版本号但是不知道版本id的时候可用    记录了你的每一次命令
    git diff HEAD  --  做修改文件   查看工作区和版本库里面最新版本的区别
    git checkout -- 文件名                 让文件回到最近一次add或commit时的状态
    git reset HEAD 文件                   撤销add 撤销暂存区的修改
    rm  文件名                                  删除添加的文件
    git checkout --  文件名               恢复已删除的文件,因为版本库里面还有,只是删除了目录中的文件
    ssh-keygen -t rsa -C "youremail@example.com"   在github创建SSH Key 你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的
    git remote add origin 远端项目地址                               将本地git和远端的仓库进行关联
    git push -u origin master                                                -u:因为远程仓库是空的,所以加上-u参数,git不但会把本地的master分支内容推送到远程新的master分支,还会把本地master和远程master分支关联起来,在以后的推送或者拉取就可以简化命令
    git log --graph                                                                 查看分支的合并图
    git log --graph --pretty=oneline --abbrev-commit     只输出commit版本号和commit注释的分支情况  更一目了然
    git merge --no-ff -m "注释文案"  合并分支                   禁用Fast forword合并,会生成一个新的commit
    
    git stash                         将当前工作现场存储起来,方便去先修改bug
    git stash list       查看
    git stash apply     恢复,但是stash内容并不删除
    git stash drop                 删除stash内容
    git stash pop                 恢复并把stash内容删除
    git  stash apply stash@{0}    恢复指定stash
    
    git branch -d 分支名      删除分支
    git branch -D 分支名  强制删除分支
    
    git remote -v                   origin抓取和推送的地址,如果没有推送权限,看不到push的地址
标签(tag)
    Git标签虽然是版本库的快照,但其实它就是指向某个commit的指针,创建和删除标签都是瞬间完成的
    git tag                           查看所有标签
    git tag <name>            新建一个标签
    git show <tagname>   查看标签信息
    git tag <tagname>  <commit-id>                                            某次提交需要打tag
    git tag -a <tagname>  -m  "说明文案" <commit-id>              创建带有说明的标签    -a:指定标签名  -m:指定说明文字
    git tag -d <tagname>                                                                删除本地标签
    git push origin --tags                                                                推送全部未推送过的本地标签
    git push origin <tagname>                                                       推送本地标签
删除远程标签
    git tag -d <tagname>                                先将本地标签删除
    git push origin :refs/tags/<tagname>       删除一个远程标签
修改远程仓库
    git remote rm origin         删除远程现有仓库
    git  remote add origin 路径   添加仓库
    git  remote -v   查看远程仓库
协议
    ssh:   git://
    https:https://
    ps:https速度慢,每次推送都需要输入口令
备注
    HEAD  当前版本
    HEAD^    上一个版本  ....  以此类推

Q:
如果本地有对应远程分支

git branch branch_nama

如果本地没有对应远程分支

git fetch origin
git checkout -t origin/remote_branch_name
切换分支 git checkout branch_name

Q1:

Pull is not possible because you have unmerged files.

解决:

1.pull会使用git merge导致冲突,需要将冲突的文件resolve掉 git add -u, git commit之后才能成功pull.

2.如果想放弃本地的文件修改,可以使用git reset --hard FETCH_HEAD,FETCH_HEAD表示上一次成功git pull之后形成的commit点。然后git pull.
注意:

git merge会形成MERGE-HEAD(FETCH-HEAD) 。git push会形成HEAD这样的引用。HEAD代表本地最近成功push后形成的引用。

Q#########################
拉取远程分支并创建本地分支
1.git checkout -b 本地分支名x origin/远程分支名x
使用该方式会在本地新建分支x,并自动切换到该本地分支x。
采用此种方法建立的本地分支会和远程分支建立映射关系。

2.git fetch origin 远程分支名x:本地分支名x
使用该方式会在本地新建分支x,但是不会自动切换到该本地分支x,需要手动checkout。
采用此种方法建立的本地分支不会和远程分支建立映射关系

建立映射关系:

   git branch --set-upstream-to=origin/分支名

删除分支:

    git branch -D 分支名

新建分支:

    git checkout -b 分支名

合并分支:

    git merge 分支名

拉取远程项目,新建本地分支并跟踪:
1、git clone 远程项目地址
2、新建本地分支并提交:

git checkout -b dbg_lichen_star

3、把新建的本地分支push到远程服务器,远程分支与本地分支同名(当然可以随意起名):

 git push origin dbg_lichen_star:dbg_lichen_star

4、建立当前分支与远程分支的映射关系:

git branch --set-upstream-to origin/dbg_lichen_star

得到结果如下:
Branch dbg_lichen_star set up to track...
5、查看当前本地分支与远程分支的映射关系结果:

git branch -vv
上一篇下一篇

猜你喜欢

热点阅读