Git 入门
2016-06-07 20:53
267 查看
# git 入门
本文只整理了一些常用命令,长期更新完善...
以下是一个未被版本控制的文件夹提交到远程仓库的一个简单过程
git init 初始化一个git仓库,会在该目录生成一个.git文件夹,以后所有文件的变化信息都保存在此目录不会像svn在每个目录都生成.svn文件夹。
git add . 或 git add --all 将所有文件添加到git的索引中。
git add [路径/文件]... 添加文件夹或文件到git的索引中。
git commit -m '注释内容' 提交刚刚加入到git索引中的文件到本地仓库。
**git remote add origin https://github.com/chenghuanhuan/test.git** 添加该仓库的对应的远程主机。
upstream & downstream
>git中存在upstream和downstream,简言之,当我们把仓库A中某分支x的代码push到仓库B分支y,此时仓库B的这个分支y就叫做A中x分支的upstream,而x则被称作y的downstream,这是一个相对关系,每一个本地分支都相对地可以有一个远程的upstream分支(注意这个upstream分支可以不同名,但通常我们都会使用同名分支作为upstream)。
>初次提交本地分支,例如git push origin develop操作,并不会定义当前本地分支的upstream分支,我们可以通过git push --set-upstream origin develop,关联本地develop分支的upstream分支,另一个更为简洁的方式是初次push时,加入-u参数,例如git push -u origin develop,这个操作在push的同时会指定当前分支的upstream。
git push origin develop push代码到远程分支
git push -set-upstream origin develop 执行此命令后以后每次push都只需执行git push即可
git push -u origin develop 同上
此时一个本地文件完整的上传到git服务器了。
push.default参数设置
git config --global push.default [simple/matching/nothing/current/upstream]
nothing - push操作无效,除非显式指定远程分支,例如git push origin develop(我觉得。。。可以给那些不愿学git的同事配上此项)。
current - push当前分支到远程同名分支,如果远程同名分支不存在则自动创建同名分支。
upstream - push当前分支到它的upstream分支上(这一项其实用于经常从本地分支push/pull到同一远程仓库的情景,这种模式叫做central workflow)。
simple - simple和upstream是相似的,只有一点不同,simple必须保证本地分支和它的远程upstream分支同名,否则会拒绝push操作。
matching - push所有本地和远程两端都存在的同名分支。
因此如果我们使用了git2.0之前的版本,push.default = matching,git push后则会推送当前分支代码到远程分支,而2.0之后,push.default = simple,如果没有指定当前分支的upstream分支,就会收到fatal提示。
###常用命令
git clone https://github.com/chenghuanhuan/test.git**" target=_blank> [path] 将一个完整的远程代码库拷贝到本地git remote 列出所有远程主机
git remote -v 查看远程主机的网址
git remote add origin url 添加一个远程主机
git remote remove origin/git remote rm origin 删除远程主机
git clone -o test [url=https://github.com/chenghuanhuan/test.git**]https://github.com/chenghuanhuan/test.git** 克隆版本库的时候,所使用的远程主机自动被Git命名为origin。如果想用其他的主机名,需要用git clone命令的-o选项指定。
git remote show [主机名]** 查看该主机的详细信息。
git fetch [远程主机名] [分支名]
此命令执行了两个关键操作
创建并更新所有远程分支的本地远程分支
设定当前分支的 FETCH_HEAD为远程分支的master分支(未指定远程分支的情况下)
git pull [远程主机] [分支名] 从远程分支更新代码到本地分支
相当于以下两步
git fetch
git merge FETCH_HEAD
git rm -r * 删除目录下所有文件和子目录
git rm --cached f1 删除文件f1,不会删除本地目录文件,只删除index中的文件记录;将已经git add的文件remove到cache中,这样commit的时候不会提交这个文件, 适用于一下子添加了很多文件, 却又想排除其中个别几个文件的情况.
git status
查看版本库的状态。可以得知哪些文件发生了变化,哪些文件还没有添加到git库中等等。 建议每次commit前都要通过该命令确认库状态。
git push origin :master
git push origin --delete master
删除远程分支
git push origin --tags git push不会推送标签(tag),除非使用--tags选项。
git branch 查看本地存在的分支
git branch [分支名] 创建新分支
git branch -r 查看远程分支
git branch -a 查看远程和本地的分支
git checkout [分支名] 切换分支
git checkout -b [分支名] 切换并创建分支
git branch -d/-D [分支名] 删除本地分支
git branch -d -r [远程分支名] 删除远程分支
git branch -m/-M [旧分支名] [新分支名] 修改分支名
###退回代码到某一个版本
git loggit reset --soft ${commit-id}
git stash
git push -f
详解如下:
第1行: git log 查看提交历史,然后找到要回滚的版本 。历史如下,
commit 84686b426c3a8a3d569ae56b6788278c10b27e5b
Author: JeffLi1993 [url=mailto:qiangqiangli1993@gmail.com]qiangqiangli1993@gmail.com
Date: Fri Apr 8 19:11:32 2016 +0800
我删除了老板的东西
commit 72bd6304c3c6e1cb7034114db1dd1b8376a6283a
Author: JeffLi1993 qiangqiangli1993@gmail.com
Date: Fri Apr 8 19:05:23 2016 +0800
add A.txt
我们想要回滚到的版本就是:72bd6304c3c6e1cb7034114db1dd1b8376a6283a
第2行:git reset –soft 72bd6304c3c6e1cb7034114db1dd1b8376a6283a
撤销到某个版本之前,之前的修改退回到暂存区(不懂看漂亮的图哦~)。soft 和 hard参数的区别就是,hard修改记录都没了,soft则会保留修改记录。
第3行:暂存为了安全起见。
第4行:git push -f
将本地master push 到远程版本库中, -f 强制覆盖 。
基础知识
文件的三种状态已提交(committed)表示该文件已经被安全地保存在本地数据库 中了;
已修改(modified)表示修改了某个文件,但还没有提交保存;
已暂存(staged)表示把已修改的文件放在下次提交时要保存的清单中;
###参考资料
http://www.open-open.com/lib/view/open1460134175743.htmlhttps://segmentfault.com/a/1190000002783245
http://www.open-open.com/lib/view/open1328069609436.html
相关文章推荐
- Hadoop安装教程_单机/伪分布式配置
- py activate code
- 设计模式六大原则
- JDK常用的包
- 练字究竟"练"的是什么?
- J2EE传参解决中文乱码问题
- 简单STL
- jdbc 连 oracle 12c
- Python(2)-第二天
- Python(1)-第一天
- hdu 5438(类似拓扑排序)
- jdbc 连 oracle 12c
- Spring JdbcTemplate方法详解
- CocoaPods安装
- 练字在现代社会的意义还大不大,尤其是电脑普及的情况下,花费大量的时间去练字还值得么?
- 编外话题外
- Jquery--------图片轮放
- HDU 1171 Big Event in HDU (母函数)
- Python 装饰器 学习笔记
- php数组概述