git 常用命令

git 常用命令

//学习的过程非常痛苦,但是最终还是回了一些常用命令,感谢网络上各种大神们的博客,才有了我今天的学习成果,

本博客是本人亲身测试,得出的结果在学习中参考了如下博客,非常感谢各位博主的分享

http://blog.csdn.net/hudashi/article/details/7668798 git   分支合并与撤销

http://zengrong.net/post/1746.htm    Git查看、删除、重命名远程分支和tag

https://git-scm.com/book/zh/v1/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E8%A1%8D%E5%90%88      分支的衍合(只是了解并未测试,他与merge类似,原理不一样)

http://www.cnblogs.com/sawyerzhu/p/3578268.html   常用命令汇总 

简易的命令行入门教程:
git --version 查看当前版本状态
git --clone https://github.com/zce/weapp-demo 这是复制一份到当前文件夹,新文件的名字就是默认的在网络上项目的名
Git 全局设置:
//用户
git config --global user.name "lizhanqi"
//用户邮箱
git config --global user.email "lizhanqihd@163.com"
//查看所有设置
git config --list
//设置的帮助
git config --hlep
克隆仓库 – git clone复制一份项目到本地
git  --clone https://github.com/zce/weapp-demo xxxx --depth 1  这个是在复制一份xxx是自己规定下载的文件名,depth是版本历史记录,可以追溯版本历史记录,depth 1是最近一次的提交.
创建 git 仓库:
mkdir nine  创建文件夹
cd nine  进入文件夹
git init   初始化一个本地的版本库
touch README.md  创建了一个 README.md文件
git add README.md  跟踪改动过的指定文件,如果跟踪所有文件, 使用 git add . 
git commit -m "first commit" 提交本地版本库,以及备注提交原因
git remote add origin https://git.oschina.net/xxx.git
(//连接远程项目重点 如果这里执行完报错,
提示出错信息:fatal: remote origin already exists.
就是说明你之前已经指定过了该项目的远程位置,如果不知道该位置,可以移除之前的远程位置, 
    解决办法如下:
    1、先输入$ git remote rm origin
    2、再输入$ git remote add origin git@github.com:djqiang/gitdemo.git 就不会报错了!
    3、如果输入$ git remote rm origin 还是报错的话,error: Could not remove config section 'remote.origin'. 我们需要修改gitconfig文件的内容
    4、找到你的github的安装路径,我的是C:\Users\ASUS\AppData\Local\GitHub\PortableGit_ca477551eeb4aea0e4ae9fcd3358bd96720bb5c8\etc
    5、找到一个名为gitconfig的文件,打开它把里面的[remote "origin"]那一行删掉就好了!
上传到服务器
git push -u origin master  推送到指定远程分支(这里可以是分支如果分支不存在自动创建)//将本地版本库更新到网络版本库
从服务器上拉取代码
git pull origin master 拉到指定远程分支(这里可以是分支如果分支不存在自动创建)//将本地版本库更新到网络版本库
查看提交到本地版本库历史
git log  查看提交历史
git log -p <filename> 查看指定文件提交历史
git  blame <filename> 以类表形式查看指定文件提交历史
分支:
git  branch -a 查看所有分支包括远程端的
git branch 查看所有本地分支
git branch -r 查看服务器端分支情况
git branch <branchName> 创建一个名为branchName的新分支
git branch -d <branchName> 删除一个名为branchName的本地分支
git branch -m <oldBranchName> <newBranchName> 将名为oldBranchName的分支名称修改为newBranchName
git branch -m <newBranchName> 将正在工作分支名称修改为newBranchName
git checkout <branch/tagname> 切换到指定分支或者标签
git checkout <localBranchName> 切换到名为localBranchName的本地分支上
git checkout <remoteBranchName> 切换到名为remoteBranchName的远程分支上,此时未新建分支,而是处于一个名为no branch的临时分支上,还需要使用git branch -b 来创建一个新分支并将该临时分支挂接到新分支上
git checkout -b <branchName> 创建一个名为branchName的新分支,并切换到该分支上
git merge <branchName> 将名为branchName的分支合并到当前所处在的分支上
git push --delete origin <branchName> 删除远程分支
标签:
git tag  查看所有本地标签
git tag <tagname> 基于最新提交创建标签
git tag -d <tagname> 删除指定的标签
合并命命令
git merge命令示例:
$ git merge branchname  这个命令把分支"branchname"合并到了当前分支里面。
撤销操作
git reset 是常用的版本回退,版本回退到之前版本,版本轨迹里会擦除后面的提交
git revert 也是版本回退,但是是你的仓库内容回退到了之前版本内容,但是版本号没有减,还是增加了一个版本,这个版本就是你回退的操作。
例如:你提交了  v1--->v2--->v3, 现在想回退的v2版本
如果git reset  则版本轨迹变为  v1--->v2
如果git revert  则版本轨迹变为 v1--->v2--->v3--->v4  (v4版本内容和v2完全相同)
reset命令有3种方式:
1:git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
2:git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
3:git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
撤销上次的合并
 git reset --hard HEAD
或者其他的也可以回退
首先得到你要回退到的版本号:(查看所有提交版本的索引)
git reflog
执行回退
git reset --hard yourCommitNum
 
 测试中问题:

1.  打了新分支,新分支中修改了内容,

  没有commit就切换到其他分支或者主分支,

     那么切换的分支中也有上次的内容,

  解决方案:

  这就需要我们,修改完分支内容之后commit完了再切换分支,这样分支之间就有了区别

 

2.远程删除分支后,本地的Git分支-a依然能看到的解决办法。(这个标题点击后进入原文)

解决方案:
使用命令 git remote show origin,可以查看远程地址,远程分支,还有本地分支与之相对应关系等信息。
此时我们可以看到那些远程仓库已经不存在的分支,根据提示,使用 git remote prune origin命令:
好了到此再次查询就ok了
 
解决后记:一下仅供了解

烟花易冷心易碎 2016/10/17 星期一 15:45:53
@Ed  我看其他的地方说的,prune是删除没有对应的版本分支,fetch 是获取分支的最新版本,与pull类似,只是一个会merge一个不会,我目前看到的结果是这样的不知道对不对,有错误希望指正

E 2016/10/17 星期一 15:48:18
@烟花易冷心易碎 哦我说的不是这个。之前的 git fetch origin 没有效果,有点奇怪。看过文档 git fetch --prune origin 应该和 git remote prune origin 达到一样的效果,因为 git fetch 缺省是指增加不删除
E 2016/10/17 星期一 15:48:36
你说的那个是fetch 和 pull的区别,是没有错的
 

Git fetch和git pull的区别

血刺青衣庤佺 | 浏览 8738 次  2014-12-30 13:46
2014-12-30 13:51 最佳答案
 
Git中从远程的分支获取最新的版本到本地有这样2个命令:
1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge

git fetch origin master
git log -p master..origin/master
git merge origin/master
    以上命令的含义:
   首先从远程的origin的master主分支下载最新的版本到origin/master分支上
   然后比较本地的master分支和origin/master分支的差别
   最后进行合并
   上述过程其实可以用以下更清晰的方式来进行:

git fetch origin master:tmp
git diff tmp 
git merge tmp

    从远程获取最新的版本到本地的test分支上
   之后再进行比较合并
2. git pull:相当于是从远程获取最新版本并merge到本地

git pull origin master

上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并
结束
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值