`

Git使用

阅读更多

 

git:一个分布式的版本控制工具,类似于SVN等,但是比SVN功能更强大

github:首先是一个网站,其次是提供了git服务,所以很多开源者将自己的代码上传到github上,供更多的开源者一起开发。

 

 

1.git init #进入某个目录,执行这个命令,这就创建了一个仓库

 

#注意:提交新文件和修改的文件都是两步,git add 、 git commit

#如果是修改之后的提交,在git add之后,最好执行下git status查看下状态,再进行commit

2.git add xxx.txt #添加一个文件

#git add -all

 

3.git commit -m "注释"  #提交

 

4.git status#查看仓库的版本状态,看是否有文件被修改

 

5.git diff#如果出现状态不一致,可以使用这个命令进行查看修改了什么内容

 

6.git log#git log --pretty=oneline  将只显示最有用的信息

 

#在git中,HEAD代表是当前版本,HEAD^代表上一个版本,HEAD^^代表上上一个版本,HEAD~100 代表上100个版本

 

7.git reset --hard HEAD^  #回到上一个版本

 

#其实git的版本控制,是通过head指针来控制的,类似于数组下标这个概念

8.git reset --hard 3628164  #后面的数字代表的是某个版本号,指定回退到哪个版本,数字可以不用写完整

 

9.git reflog#记录你之前的每一条命令

 

 

#工作区和暂存区,

10.每次修改,如果不add到暂存区,那就不会加入到commit中

 

#git checkout -- readme.txt文件在工作区的修改全部撤销,这里有两种情况:

#一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

#一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

#总之,就是让这个文件回到最近一次git commit或git add时的状态

#git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令

11.git checkout -- file#

 

 

#git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

12.git reset HEAD file#可以把暂存区的修改撤销掉(unstage),重新放回工作区。即:执行了add操作之后,把add到暂存区的恢复到之前的工作区状态

 

 

#提交到版本库,自己没有提交的是是工作区的。

#操作系统执行删除文件命令之后,git会检测到状态不一致,可以使用git status查看,有两种情况

#1.确实要删除该文件,那么执行git rm XX.txt ,然后执行 git commit -m "注释",就可以删除

#2.另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:

13.git checkout -- xx.txt#其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

 

 

#将本地的库和远程的github库进行关联,以便push等操作

14.git remote add origin git@github.com:henuzyy/zyy.git

 

#把本地库的所有内容推送到远程库上

#由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,

#还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

#要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;

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

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

15. git push -u origin master

 

 

#要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

#Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

16.git clone git@github.com:henuzyy/zyy.git #从远端库里面克隆一个一模一样的版本到本地

 

 

17.git checkout -b dev#创建dev分支,加上-b参数表示创建并切换,相当于以下两条命令:

git branch dev

git checkout dev;

 

18.git branch#命令会列出所有分支,当前分支前面会标一个*号。

 

#合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并

19.git merge dev#用于合并指定分支到当前分支。(Fast-forward:快进模式,直接把当前分支指向dev分支)

   #因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。

   git merge --no-ff -m "merge with no-ff" dev#准备合并dev分支,请注意--no-ff参数,表示禁用Fast forward:

   

   

20.git branch -d dev#删除dev分支

 

21.git log --graph命令可以看到分支合并图。

 

22.当分支合并出现冲突时,就无法自动合并,只能通过命令,修改内容,解决冲突,才能再次提交进行合并。

 

 

23.分支使用策略

1.master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

2.干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

3.你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

24.git stash#把当前工作现场“储藏”起来,等以后恢复现场后继续工作

   git stash list #这个查看某个分支下,stash之后的记录

   #如果上面那条命令生成的有stash记录,那么可以使用如下两种方式进行恢复

   1.git stash pop#恢复的同时把stash内容也删了

   2.git stash apply#恢复后,stash内容并不删除,你需要用git stash drop来删除

 

25.修复bug分支

在你dev分支进行开发时,突然线上出现了一个bug,那么需要基于master分支,创建一个bug分支,但是此时你的dev分支还不能提交,因为你的任务还没有完成,

那么可以使用上面的24进行bug恢复

 

26.feature分支

当创建一个feature分支之后,代码写好之后,然后add、commit之后,就在准备合并的时候,如果不需要此分支(分支上的代码不需要了),就可以删除该分支,命令如下:

git branch -d feature#如果没有合并,则会提示

git branch -D feature#即使没有合并,也不会提示,强行删除

 

27.git remote -v#查看远程库的信息,可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址

 

28.git push origin dev #把本地的dev分支推送到远端

 

29.git checkout -b dev origin/dev#创建一个dev分支,并远端的orgin/dev分支拉下来,赋给它

 

 

汇总:

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

 

 

30.远端推送冲突

#过程:先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送

git pull

 

 

多人协作的工作模式:

1.首先,可以试图用git push origin branch-name推送自己的修改;

2.如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

3.如果合并有冲突,则解决冲突,并在本地提交;

4.没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

5.如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。

 

 

多人协作小结:

1.查看远程库信息,使用git remote -v;

2.本地新建的分支如果不推送到远程,对其他人就是不可见的;

3.从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

4.在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

5.建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;

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

 

 

 

 

#将本地git仓库上传到github

1.本地,add,commit 

2.在gihub创建一个仓库,复制该地址,如https://github.com/henuzyy/cy.git

3.在git bash中执行 git push -u https://github.com/henuzyy/cy.git(初次会提示输入github的登录账户和密码)

4.

 

 

 

#需要搞明白的-------------------------------------

1.给一个仓库地址,如何拉到本地,设置账号是局域网的,还是全部都能用的,(个人和公司混用的账户)

 

2.查看修改的内容,查看历史版本,版本比较

 

3.提交

 

4.版本冲突解决

 

 

5.删除文件,提交

 

回退到某个版本

 

分支问题,时间线等

 

6.eclpse中使用教程

 

2
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics