Git学习笔记

该笔记是学习廖雪峰老师的Git教程后,自己的练习记录。

Git是分布式版本控制系统。

1、创建版本库,创建一个空文件夹git-prase

文件夹下出现learngit

 2、把文件提交到仓库

git add <file>可反复添加多个文件,是把文件添加到暂存区

git commit -m <message>提交文件并备注,是把内容提交到当前的分支

3、修改文件

修改了文件后,git status命令是随时掌握工作区的状态,git diff 查看修改的内容,再Git add 和Git commit

4、版本回退

git log可以查看提交历史,‘ca6d3d...’那些是版本号

知道版本号后就可以回退到相应的版本

git reset --hard  回退   git reflog 用来记录每一次的命令

HEAD^ 上一个版本 HEAD^^上上版本  HEAD~100往上100个版本

 

 5、理解下git版本控制系统的概念

把文件添加到版本库的两步:1、git add 把文件添加到暂存区2、git commit把暂存区内容提交到当前分支git

提交后 暂存区就空了如下图

 注意:必须先git add提交到 暂存区,再commit。

6、撤销修改(前提是没有到远程库)

1)如果我们修改了内容没有提交,可以直接cat readme.txt查看内容后,用 git checkout -- readme.txt撤回

2)如果我们把修改的内容 git add到暂存区了,那么可以先回退版本用git reset HEAD readme.txt 把暂存区的内容撤回到工作区,再用git checkout -- readme.txt 撤回

3)如果我们把修改的内容git add和git commit了,就可以退回到上一版本。git reset -- hard HEAD^ 或git reset -- hard <版本名>,回退后再撤回。

7、删除文件

文件被git add 和git commit 后用git status查看状态发下工作区和版本库不一样

1)如果想要确实要删除文件,就git rm test.txt 和git commit -m 'remove test.txt',文件就彻底删除了。

2) 如果要恢复文件,就git checkout -- test.txt

 删除文件 rm 

文件已被恢复。

若要彻底删除文件

8、远程仓库(先有本地库,后有远程库的时候,如何关联远程库)

方法如下:

GitHub网站提供Git仓库托管服务。注册了GItHub账号后。

由于本地GIt仓库和GitHub仓库之间的传输是通过SSH加密的,所以要做设置。

1)打开Git Bash创建SSH Key:

回车

即可看到id_rsa 是私钥(保密)和id_rsa.pub公钥文件

 

这样GitHub就能通过公钥确定是你自己推送的

我有自己的GitHub远程仓库了。

我本地有了Git仓库,GitHub上再创建个Git仓库,并让两个仓库远程同步。这样GitHub上的仓库即可备份,又可以让其他人通过该仓库来协作。

接下来来创建仓库:

1.右上角new repository填写learngit保存,即可得到learngit的仓库

 

2、创建GitHub仓库后,就可以把本地仓库连接到远程仓库啦。

1)关联远程库,用git remote add origin git@github.com:path/repo-name.git

2)关联后,使用命令git push -u origin master第一次推送master分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令git puth origin master推送最新修改。

9、从远程库克隆(先创建远程库,然后从远程库克隆)

1)首先,登录GitHub,创建一个新的仓库,名字叫gitskills

2)远程库准备好后,就可以克隆到本地库了

克隆的地址也可用https地址但是速度会慢,并且要输入口令。默认是git://使用ssh协议,但只开放http端口的公司内部就无法使用ssh协议,只能用https。

 

10、分支管理(工作时最好建一个分支干活,master分支仅用来发布新版本,不能在上面干活)

工作的时候创建一个属于自己的分支,别人看不到,还继续在原来的分支上正常工作,而我再自己的分支上干活,想提交就提交,等到开发完毕后,再一次性合并到原来的分支上,这样既安全又不影响别人工作。git的分支无论创建、切换和删除分支都非常方便。

查看分支:git branch ;创建分支:git branch <name>; 切换分支:git checkout <name> ;创建+切换 git checkout -b <name>

合并某分支到当前分支:git merge <name>; 删除分支:git branch -D <name>  查看状态: git status

11、分支解决冲突

命令 git log --graph可查看分支合并图

当我们创建了一个分支,并修改了内容后提交,切回master分支,又修改了内容并提交,然后创建的分支合并到master分支的时候就会造成冲突,这时候要把冲突修改内容修改后再提交。

在合并分支时,git会用fast forward模式,但这种模式下,删除分支后,会丢掉分支信息,如果要强制禁止 fast forward模式,git就会在merge时生成新的commit。这样从分支历史上就可以看出分支信息,可用--no--ff 方式来git merge。

$ git merge --no-ff -m "merge with no-ff" dev

 12、bug分支

命令 git stash 隐藏工作现场;git stash pop 回到工作现场。

当我们正在dev分支上工作时,有bug需要马上修复,这时可以用 git stash把dev分支给隐藏起来,创建个修复bug的分支来修复bug,修复后,把bug分支删除,用git stash pop恢复分支继续工作。。

13、feature分支。

命令git branch -D <分支名> :强行删除

开发的新功能合并前不用了,就用-D大写D来强制删除。

14、多人协作(用git push origin <branch-name>推送自己的修改,如果失败就git pull试图合并,如果合并有冲突,就解决冲突并在本地提交,没有冲突或解决掉冲突再git push origin<branch-name>)

命令: 查看远程库信息  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时若提示 no tracking information说明本地分支和远程分支的链接关系没有创建)

         从远程抓取分支,使用git pull,如果有冲突要先处理冲突。

15、标签

        命令 git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id

                git tag -a <tagname> -m 'balala'可以指定标签信息

                git tag 查看所有标签

                git push origin <tagname>可吐送一个本地标签

                git push origin --tags 可推送全部未推送过的本地标签

                 git tag -d <tagname>可删除一个本地标签

                git push origin :refs/tags/<tagname>可删除一个远程标签

posted @ 2018-06-19 15:05  彩色泡泡  阅读(139)  评论(0编辑  收藏  举报