git教程
来源:互联网 发布:蔡依林国际化知乎 编辑:程序博客网 时间:2024/06/02 04:42
git教程
mkdir test
创建一个目录
git init
git init 初始化这个目录
git add
这命令告诉 git 把文件添加到仓库git add 可以反复使用,添加多个文件
git commit
把这个文件 提交到仓库git commit -m '这次提交的描述'
git 版本回退
git status
可以让我们时刻掌握仓库当前的状态working directory clean 告诉我们没有需要提交的修改
git diff 文件名字
---已经删去的内容+++增加内容
git log
显示从最近到最远的提交的日志嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline --pretty=oneline
git reset –hard head^
git rest 回退版本head 表示当前版本head^ 上一个版本head^^ 上上个版本如果是往上100版本 可以写成head~100如果想回去之前的版本 可以用【git reset -hard <commit_id>】commit_id 版本号
工作区和暂存区
git add
1. 实际上就是把文件修改添加到暂存区2. git status 可以查看一下当前文件状态3. 平时编辑的其实是我们的工作区4. Git管理的是修改,而不是文件,为什么这样子手呢?第一次修改-->git add-->第二次修改-->git commit我们提交的只是第一次修改的Git管理的是修改,用git add命令后被放入暂存区,工作区的第二次修改并没有放入暂存区,git commit只负责把暂存区的修改提交了
撤销修改
git checkout – filename
注意上面是两个-1. 文件在工作区的修改全部撤销2. 两种情况 一种是修改后还没有被放到暂存区,撤销修改就回到和版本库一模一样的状态 一种是添加到暂存区后,作了修改,撤销修改就回到添加到暂存区后的状态
git reset hrad
可以把暂存区的修改撤销掉(unstage),重新放回工作区配合git checkout -- <filebane>可以丢弃工作区的修改
删除文件
rm
删除文件
git rm
从版本库中删除git commit 提交即可如若删错了 用 git checkout -- <filename>从版本库中"一健还源"
远程版本库
申请一个远程的个人代码库 可在下面申请http://git.oschina.net
从远程库克隆
git clone git@github.com:michaelliao/gitskills.git
git clone 是远程命令
分支管理
git checkout -b test
表示创建并切换分支相当于下面两条命令 * git branch dev [创建一个分支] * git checkout dev [切换分支]
gir branch
查看当前分支当前分支前面会标一个*号
git merge dev
用于合并指定分支到当前分支master 代表主分支一般我们所有的开发都会在分支上,当开发完毕才会合并到住分支上
git branch -d dev
删除dev分支如果没有合并当前要删除的分支,git会有提示,如果不需要当前分支可用git branch -D dev 去删除
主要分支语法
查看分支:git branch创建分支:git branch <name>切换分支:git checkout <name>创建+切换分支:git checkout -b <name>合并某分支到当前分支:git merge <name>删除分支:git branch -d <name>
解决冲突
git merge
冲突提示语Auto-merging readme.txtCONFLICT (content): Merge conflict in readme.txtAutomatic merge failed; fix conflicts and then commit the result.用 git status 可以告诉我们冲突在哪里 提示如下# On branch master# Your branch is ahead of 'origin/master' by 2 commits.## Unmerged paths:# (use "git add/rm <file>..." as appropriate to mark resolution)## both modified: readme.txt#no changes added to commit (use "git add" and/or "git commit -a")打开文件 readme.txt <<<<<<<,=======,>>>>>>>标记出不同分支的内容删掉自己不需要的,保留自己想要的 git add <filename> git mommit -m "解决冲突"这样子就解决了冲突 记得不需要的分支应该删掉
查看分支合并图
git log --graph
分支策略
合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用Fastforward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。--no-ff方式的git mergegit merge --no-ff -m '合并' <branch_name>
bug 分支
git stash
把当前工作现场“储藏”起来,等以后恢复现场后继续工作当有一个bug 过来的时候 你需要去处理bug,但手头上的工作只进行一半。则需要储藏起来使用git stash 后 git status 查看工作区则是干净的这个时候可以在要修复bug的分支上创建一个临时分支【branch】去处理bug处理完并提交,切换到要修复的bug上,合并修复的bug分支,最后删除临时bug分支即可
git stash list
查看之前储藏的所有案发现场
git stash pop
恢复某一个案发现场 恢复的同时把stash内容也删了<stash_name>不填写默认是上一次的储藏另外一种方法 一是用git stash apply恢复,但是恢复后,stash内容并不删除 二要用git stash drop来删除
远程 多人协作
git remote
查看远程库的信当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,远程仓库的默认名称是origin。git remote -v 详细信息
git remote -v 查看抓取以及推送的地址
origin git@github.com:michaelliao/learngit.git (fetch)origin git@github.com:michaelliao/learngit.git (push)显示了可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址这个时候就要设置地址,第一次的时候设置好了,第二次就可以直接用 git push origin master 提交git remote add origin 复制的地址 //添加到远程项目,别名为origin 添加一次即可下次可以直接跳过git push -u origin master //把本地源码库push到github 别名为origin的远程项目中,确认提交
git push origin master
往远程库origin中推送master 主分支内容git push origin dev 推送dev分支内容
git checkout -b dev origin/dev
你的小伙伴要在dev分支上开发,就必须创建远程origin的dev分支到本地,于是他用这个命令创建本地dev分支修改完毕git push origin dev 来提交
git pull origin/dev 获取git服务器最新的内容
可以这样子指定拉取的分支内容【必须确定你当前的分支就是dev】也可以 git branch --set-upstream dev origin/dev git pull
小结
查看远程库信息,使用git remote -v;本地新建的分支如果不推送到远程,对其他人就是不可见的;从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
标签
git tag v1.0
创建标签
git tag
查看所有标签标签不是按时间顺序列出,而是按字母排序的
git show
查看标签信息$ git show v0.1tag v0.1Tagger: Michael Liao <askxuefeng@gmail.com>Date: Mon Aug 26 07:28:11 2013 +0800version 0.1 releasedcommit 3628164fb26d48395383f8f31179f24e0882e1e0Author: Michael Liao <askxuefeng@gmail.com>Date: Tue Aug 20 15:11:49 2013 +0800 append GPL用我们上面说的版本回退来查看刚刚版本git reset --hard 3628164fb
小结
命令git push origin <tagname>可以推送一个本地标签;命令git push origin --tags可以推送全部未推送过的本地标签;命令git tag -d <tagname>可以删除一个本地标签;命令git push origin :refs/tags/<tagname>可以删除一个远程标签。
ssh 私钥
1、创建ssh 在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key 命令:ssh-keygen -t rsa -C "sss"2、登陆http://git.oschina.net,打开“修改资料”,“SSH Keys”页面:然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容[这样子就可以了]删除配置的key1.查看是否已经有了ssh密钥:cd ~/.ssh如果不需要 先备份,然后rm -rf ~/.ssh 即可
阅读全文
1 0
- Git教程
- git 教程
- git 教程
- git 教程
- git 教程
- Git 教程
- Git教程
- Git教程
- git教程
- git教程
- Git教程
- git教程
- git教程
- Git 教程
- Git 教程
- git教程
- Git教程
- git教程
- 《Java从小白到大牛精简版》之第5章 数据类型
- 数据类型和运算符
- 匹配IP地址的正则表达式(java)
- Python中 sys.argv[]的用法简明解释
- FFMPEG 如何利用 AVDictionary 配置参数
- git教程
- Android-高通平台调试camera的OTP参数
- 设计模式(21)--状态模式
- python socket 编程之三:长连接、短连接以及心跳(转药师Aric的文章)
- UML的类与类图
- centos7安装jdk8
- 列表(list)的魔法
- 前序遍历建立二叉树
- 掌握VS2010调试 -- 入门指南