Git操作

文章原文:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

注意问题

  1、目录名要避免含有中文

  2、编译文本时,编译器要使用标准的UTF-8编码,所有语言使用同一种编码,既没有冲突,又被所有平台所支持。

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

  4、HEAD 指向的版本就是当前版本

  5、工作区(Working Directory)就是你在电脑里能看到的目录。

  6、版本库(Repository)工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

  7、创建连接版本库:git remote add origin git@github.com:你在git上的用户名/learngit.git 然后通过  git push -u origin master  就可以把本地库的所有内容推送到远程库,由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的mater分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。每次本地提交后,只要有必要,就可以使用命令 git push origin master 推送最新修改。

  8、克隆版本库:git clone git@github.com:michaelliao/gitskills.git 要克隆一个仓库,首先必须知道仓库的地址,然后使用 git clone 命令克隆。Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快

  9、在版本回退里,每次提交,git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支

  10、创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。

  11、分支策略:在实际开发中,我们应该按照几个基本原则进行分支管理:首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

  12、并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?

  • master分支是主分支,因此要时刻与远程同步;

  • dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;

  • bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;

  • feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

       总之,就是在Git中,分支完全可以在本地自己藏着玩,是否推送,视你的心情而定!

  13、多人协作的工作模式:

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

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

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

  4. 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>

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

  15、退出vim编译器:一直按住esc ,再连续按大写的z两次就退出来了。

  16、退出git log:按下英文状态下的q

  17、使用git进行远程仓库连接,url写错了或者远程仓库的地址改了,需要在本地也相应地对Url进行修改。

  有三种方法:

    第一种:先删除原来的url,再创建新的url: git remote rm origin

                         git remote add origin git@github.com:用户名/text.git

    第二种:修改url命令 git remote set-url URL 

      第三种:手动修改.git/config文件,找到url进行相应的修改。

操作代码:

  1、git pwd

    命令用于显示当前目录。

  2、git init

    将当前目录变成Git可以管理的仓库。

  3、vi 文件名.文件类型

    如果文件不存在,就创建该文件,并可以对它进行修改,若文件存在,则可以对它进行修改

  4、git add 文件名.文件类型

    将文件添加到仓库,实际上就是把文件修改添加到暂存区stage。(该指令操作完没有显示任何信息是最好滴)。

  5、git commit -m "提交说明"

    实际上就是把暂存区stage的所有内容提交到当前分支branch,-m后面输入的是本次提交的说明,方便以后的修改,commit可以一次性提交多个文件,所以可以先git add添加多个文件。

  6、git log

    显示从最近到最远的提交日志,若嫌输出信息太多,看得眼花缭乱的,可以试试用 git log --pretty=oneline

  7、git reset --hard HEAD^

    退回到上一个版本,若想回到原来的版本可以:

      方法一:git log 查看原来版本的commit id,然后用 git reset --hard 版本的id(id不用写全,写前面几位就好了)   

      方法二:git reflog 查看原来版本的commit id,然后用 git reset --hard 版本的id(id不用写全,写前面几位就好了)   

  8、git status

    查看工作区的状态

  9、git diff HEAD -- 文件名.文件类型

    查看工作区和版本库里面最新版本的区别

  10、git checkout -- 文件名.文件类型

    将对应文件放在工作区的修改全部撤销

    有两种情况:

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

      一种是对应文件已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。若在commit之前,则用 git reset HEAD 文件名.文件类型  将暂存区                                stage的修改撤销掉,之后再 git checkout -- 文件名.文件类型

  11、git rm 文件名.文件类型

    删除指定文件,git status 可以查看哪些文件被删除了。git rm 文件名.文件类型 删除文件后,再 git commit -m “提交备注”,就可以将文件从版本库中删除。

    若不想删错了,则可以通过 git checkout -- 文件名.文件类型  来恢复文件

  12、ls

    列出当前文件和目录,也可以使用 ls -als 来显示隐藏的文件和文件夹

  13、git checkout -b dev(创建并切换)

    创建dev分支,然后切换到分支,也可以通过 git branch dev(创建分支), git checkout dev(切换分支)来完成该操作

  14、git branch

    查看当前分支,当前分支前面会有一个*号

  15、git merge 分支名

    用于合并指定分支到当前分支,该命令操作后出现的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。                然后并不是所有的合并都可以用Fast-forward

  16、git merge --no-ff -m “备注信息” 分支名

    参数 --no-ff 表示禁用Fast-forward  合并后的历史有分支,能看出来曾经做过合并,而Fast-forward 合并就看不出来曾经做过合并。

  17、git branch -d 分支名

    删除指定分支

  18、git log --graph

    可以看到分支合并图。git log --graph --pretty=oneline --abbrev-commit

  19、git stash

    可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作

  20、git stash list

    查看存储的工作区工作现场还在,Git的把藏匿内容存在某个地方了,但是需要恢复一下,有两个办法:

    方法一:git stash apply 恢复,但是恢复后,藏匿内容并不删除,需要你用git stash drop来删除

    方法二:git stash pop 恢复的同时把藏匿内容也删了

  21、git branch -D 分支名

    强制删除还没有合并的分支

  22、git remote

    查看远程库的信息  加上参数-v 可以显示更详细的信息

  23、git push origin master

    推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上

  24、git checkout -b dev origin/dev

    创建远程origin的dev分支到本地,于是他用这个命令创建本地dev分支,若提交的同时,其他伙伴也对它进行了修改,则需要 git pull  把最新的提交的origin/dev抓下来,然后,                  在本地合并,解决冲突,再推送

  25、git branch --set-upstream-to=origin/dev dev

    当git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置devorigin/dev的链接之后再 git pull

  26、git config --global alias.st status

    用st表示status,之后就可以 git st 来代替 git status

  27、git config --global alias.unstage 'reset HEAD'

    将 reset HEAD 用 unstage替代

  28、git config --global --unset alias.你取的别名

    将指定别名删除

  29、cat .git/config

    查看git配置文件

  30、git diff

    查看上次修改的内容

  31、cat 文件名.文件类型

    查看对应文件的内容

posted @ 2018-09-25 12:13  Rainm  阅读(160)  评论(0编辑  收藏  举报