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

 

 

点这个创建sshtitle随便填,key里面粘贴id_rsa.pub里面的所有内容,然后点add ssh key

 

然后在github上创建远程仓库

 

 

之后的页面差不多都可以直接看懂,repository name一般都设置和自己电脑上的仓库名一样就好了,这样方便识别。选择piblicprivate要钱....

最后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-fGit就会在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分支上开发,就必须创建origintian分支到本地,于是需要使用

git checkout -b tian origin/tian               //不知道后面的是什么格式还是随便

如果他都提交了某文件,而你也对此文件进行了修改并提交,则会产生冲突

则需要git pull把最新的提交抓下路,在本地合并解决冲突,再推送

git branch --set-upstream tian origin/tian   //git pull 前需要链接本地分支和远程分支

以上是关于git使用笔记的主要内容,如果未能解决你的问题,请参考以下文章

Git总结笔记1-搭建和使用30条简明笔记

Git使用笔记

Git使用笔记01

Git学习笔记

Git使用笔记

使用git 提交笔记