git使用笔记
Posted 112226
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git使用笔记相关的知识,希望对你有一定的参考价值。
git在我目前看来,有两大好处优点1、版本回退 2、分支,适用于团队协作开发
我是根据廖老师学的的git教程,边实践边做笔记,以下是笔记
git config --global user.name “name”
git config --global user.email “email”
cd path(需要创建仓库的项目的目录)
在此目录下 输入git init 即创建好了代码工作库,此目录下会有个.git隐藏文件,用来记录我们的git操作,删库直接删除文件夹就好了
在该目录下写代码文件,写好后
使用git add 文件名/目录名/. (.表示添加所有文件)
git commit -m “描述(关于改动的描述或者什么描述)”
至此提交完了代码文件
当改动了代码文件,可以使用git diff 文件名 可以查看对上一文件做了什么修改//好像要在提交前才能查看
git status 可以查看当前仓库状态
这个图中可以看出,当前将要提交的修改包括1.txt //在此之前进行了一次add操作
git log 命令可以查看历史记录,显示从最远到最近提交操作
也可以加--pretty=oneline 参数,会清晰很多
有一串很乱的数值,这是commit id(版本号),它是经过sha1得到的
退回之前的版本//这就是git的强大之一
git reset --hard head^
head表示当前版本,head^表示上一版本,以此类推,多的话就可以用类似head~100
还可以用 commit id号,而且不需要全部完整的id号,只要给出几位(..稍微多点,5,6位吧)就可以还原到指定版本号
此时还原到上一版本后git log已经看不到还原前的版本了,但还是可以通过git reset --hard 还原前版本的commit id
由此可知,只要指定commit id就可以往前或往后还原版本。如果bash关闭了,或者之前没有用log查看commit id那么可以使用git reflog查看,它记录了每一次命令
git checkout -- filename 撤回修改,两种情况
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
如果已经提交到了暂存区,那么可以通过git reset head filename把暂存区的修改撤销掉(unstage),重新放回工作区,再用git checkout -- filename 回到版本库时版本//注意--后面有个空格
rm filename 删除文件//但版本库的文件没有删除,可以通过git checkout -- filename恢复到版本库中的文件
git rm filename 同时删除版本库的文件
连接github
创建rsa密钥
ssh-keygen -t rsa -C "youremail@example.com"
id_rsa是密钥,id_rsa.pub是公钥,中间创建是会有一堆问题,就是让你设置特殊的自己的密钥之类的(...英文没多看),因为不是什么很重要的东西,直接一直回车默认选项就好了
然后是打开登录github,进入setting
点这个创建ssh,title随便填,key里面粘贴id_rsa.pub里面的所有内容,然后点add ssh key
然后在github上创建远程仓库
之后的页面差不多都可以直接看懂,repository name一般都设置和自己电脑上的仓库名一样就好了,这样方便识别。选择piblic,private要钱....
最后create repository
然后git关联github的仓库
git remote add origin git@github.com:(你的github账户名)/github上的仓库名.git
完成后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的。
接下来就可以把内容推送到远程库中
git push -u origin master //master是什么,后面会提
这是第一次推送,加上了-u,且第一次会出现一个询问,输入yes并回车就好了//也可以自己看看英文意思
后面就可以简化命令了 git push origin master
从github上把远程库全部复制到本地
git clone git@github.com:(github账户名称)/远程库名.git
因为是克隆仓库,所以也会有.git隐藏文件
每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。//不同分支上互不影响,最后可以合并分支
初始默认有个master分支,就是前面的master
创建分支
$ git branch tian //创建分支(tian是自定义的分支名)
$ git checkout tian //切换分支
也可以一条命令 git checkout -b tian
git branch列出所有分支,当前分支前面有个*
合并分支 git merge tian //合并指定分支到当前分支
合并后可以删除分支了 git branch -d tian
分支之间互不影响,看下面例子:
这是处于master分支时,我建立的文件
切换到tian分支,然后在本地修改了1.txt
接着add commit一波后,再切换到master分支,可以去本地打开文件看看,它又变成了原来的文件内容
合并之后好像并不是直接覆盖,因为我试了把master合并到tian,而不是把tian合并到master,但文件内容没有变成原先master时的文件内容。到此我有些猜想,但不能确定,以后有机会或者碰到了再试试。
冲突问题...
如果在tian分支下提交了1.txt,然后切换到master分支下,修改1.txt后再次提交,git就会提示错误,需要手动修改git status也可以告诉我们冲突的文件
git log --graph --pretty=oneline --abbrev-commit //查看分支历史,带图形
通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,可以采用参数--no-f,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
--no-ff方式的git merge:
git merge --no-ff -m "merge with no-ff" dev //要加上-m 因为会创建commit
bug分支:你正在做一个分支上做项目,但接到一个bug修复任务
git有个stash命令用来保存当前工作现场,保存完后可以切换到bug分支进行操作,然后切换到该bug原先所在的分支,再merge 再删除bug分支,再就可以回到正在工作的分支上工作
git stash list 查看工作现场
有两种恢复方式
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了:
你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:
$ git stash apply stash@{0}
当伙伴从远程库clone时,默认只能看到本地的master分支,若要在tian分支上开发,就必须创建origin的tian分支到本地,于是需要使用
git checkout -b tian origin/tian //不知道后面的是什么格式还是随便
如果他都提交了某文件,而你也对此文件进行了修改并提交,则会产生冲突
则需要git pull把最新的提交抓下路,在本地合并解决冲突,再推送
git branch --set-upstream tian origin/tian //git pull 前需要链接本地分支和远程分支
以上是关于git使用笔记的主要内容,如果未能解决你的问题,请参考以下文章