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 即可