git 常用命令
Posted wangyaqian1212
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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依然能看到的解决办法。(这个标题点击后进入原文)
( http://blog.csdn.net/qq_16885135/article/details/52777871) 解决方案: 使用命令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前,我们可以查看更新情况,然后再决定是否合并
结束
以上是关于git 常用命令的主要内容,如果未能解决你的问题,请参考以下文章