git学习记录

git 学习笔记 (gitlab搭建自己服务器上的远程仓库,稍后研究)

1、pwd : 命令用于显示当前目录

2、git init : 通过git init命令把这个目录变成Git可以管理的仓库 (初始化一个Git仓库,使用git init命令。)

3、git status : 命令可以让我们时刻掌握仓库当前的状态

4、git diff (文件名) : 可以查看更改的细节

  要随时掌握工作区的状态,使用git status命令。
  如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

5、git log 告诉我们历史记录 (git log --pretty=oneline 简化输出log)

6、git reset --hard HEAD^ 回退到上一个版本
  在Git中,用HEAD表示当前版本 ,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

  git reset --hard commitID 可以去到每一个commit版本,


7、git reflog 用来记录你的每一次命令,(可以查询commitID

  总结:    HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
      穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
      要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

8、工作区,暂存区
  第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区
  第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支

9、git checkout -- readme.txt 意思就是,把readme.txt文件在工作区的修改全部撤销
  ①一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
  ②一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

  总之,就是让这个文件回到最近一次git commit或git add时的状态。
  (git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令

  总结:    场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
      场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,可以清除缓存区的修改,保留到工作区的修改,再丢弃工作区的修改,就回到了场景1,第二步按场景1操作。
      场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

10、rm test.txt / git rm test.txt 删除文件
  (rm虽然删除了,但是未提交到缓存区双层,不能commit,可以用git rm test.txt 这个命令是:删除并提交,可以 直接commit)
  命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

 

11、远程仓库(对应8的工作区暂存区)
  关联远程仓库:git remote add origin git@gitee.com:zjzweb/heima.git

  总结: 要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
  关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
  此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

12、git clone git@gitee.com:zjzweb/heima.git 命令 克隆远程仓库

 

<------------------git分支操作-------------------------->

13、git checkout -b dev
  git checkout命令加上-b参数表示"创建并切换"
  等同于    git branch dev
      git checkout dev

  ***** git switch -c dev(最新版本创建并切换分支)

14、git branch -d dev 删除分支


15、git branch 查看分支
  会列出所有分支,当前分支前面会标一个*号。

  注意:    切换分支使用git checkout <branch>,而前面讲过的
      撤销修改则是git checkout -- <file>,同一个命令,有两种作用,确实有点令人迷惑。
      实际上,切换分支这个动作,用switch更科学。因此,最新版本的Git提供了新的git switch命令来切换分支。

小结:
  Git鼓励大量使用分支:

  查看分支:git branch

  创建分支:git branch <name>

  切换分支:git checkout <name>或者git switch <name>

  创建+切换分支:git checkout -b <name>或者git switch -c <name>

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

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

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

 

16、git merge --no-ff -m "merge with no-ff" dev
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick <commit>命令,把bug提交的修改“复制”到当前分支,避免重复劳动。

17、bug分支
发现bug-->存储正在工作的内容stash-->创建bug分支-->解决bug,合并到主分支 -->恢复储存的stash-->继续开心的工作

18、git stash 可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作
git stash list 查看储存位置
工作现场还在,Git把stash内容存在某个地方了
git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除
git stash pop,恢复的同时把stash内容也删了

你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:
git stash apply stash@{0}

19、向线上git push 推送失败
你的小伙伴已经向origin/dev分支推送了他的提交,而碰巧你也对同样的文件作了修改,并试图推送

先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送
git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接
git branch --set-upstream-to=origin/dev dev 再pull,
这回git pull成功,但是合并有冲突,需要手动解决,解决的方法和分支管理中的解决冲突完全一样。解决后,提交,再push

必须手动解决冲突后再提交。git status也可以告诉我们冲突的文件
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,我们修改如下后保存


20、多人协作流程
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-to <branch-name> 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,如果有冲突,要先处理冲突。

21、git rebase
rebase操作的特点:把分叉的提交历史“整理”成一条直线,看上去更直观。缺点是本地的分叉提交已经被修改过了。
小结:
rebase操作可以把本地未push的分叉提交历史整理成直线;

rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

22、标签管理
Git有commit,为什么还要引入tag?commit号是6a5819e...”不好记
创建标签
git tag <name>

查看标签
git tag
查看标签信息
git show <tagname>查看标签信息
创建带有说明的标签:用-a指定标签名,-m指定说明文字
git tag -a v0.1 -m "version 0.1 released" 1094adb

git tag v0.9 f52c633 :找到commit id 给他打个标签

标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。
小结:

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

命令git tag -a <tagname> -m "blablabla..."可以指定标签信息;

命令git tag可以查看所有标签。

操作标签
如果标签打错了,也可以删除
git tag -d v0.1

小结

命令git push origin <tagname>可以推送一个本地标签;

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

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

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

 


屏幕宽度 / 设计稿宽度 *100 来设置根元素的 font-size 10px = 0.10rem

375/750 0.5*100 = 50px;


1rem = 50px
0.1rem = 5px


设计稿 / 手机
750 / 375
10px 0.1rem = 5px

 

 

 //工作切换合并

 

 //工作内容添加、提交、推送

git  add .
git  commit -m '提交的备注信息'
git  push -u origin dev


想将dev分支合并到master分支,操作如下

 
1、首先切换到master分支上
git checkout master

2、如果是多人开发的话 需要把远程master上的代码pull下来
git pull origin master
//如果是自己一个开发就没有必要了,为了保险期间还是pull

3、然后我们把dev分支的代码合并到master上

git merge dev

4、然后查看状态及执行提交命令
git status

On branch master
Your branch is ahead of 'origin/master' by 12 commits.
  (use "git push" to publish your local commits)
nothing to commit, working tree clean

//上面的意思就是你有12个commit,需要push到远程master上 
> 最后执行下面提交命令
git push origin master

5、其他命令

更新远程分支列表
git remote update origin --prune

查看所有分支
git branch -a

删除远程分支Chapater6
git push origin --delete Chapater6

删除本地分支 Chapater6
git branch -d  Chapater6

 

 
 
 




《------------------------未完待续-------------------------------》

posted @ 2019-12-24 15:02  张小中  阅读(216)  评论(0编辑  收藏  举报