Git命令总结

初始化配置

  • git config - -global user.name “Your Name”
  • git config - -global user.email “email@example.com”

创建仓库后在根目录初始化

  • git init

添加文件

  • git add filename.txt
  • git commit -m “描述”

查看提交历史

  • git log
  • git log - -pretty=oneline

查看分支合并情况

  • git log - -graph
  • git log - -graph - -pretty=oneline –abbrev-commit

查看命令历史

  • git reflog

查看状态

  • git status

比较和当前版本库的不同

  • git diff readme.txt
  • git diff HEAD - - readme.txt

退回版本

  • git reset - -hard 1094a |git reset –hard HEAD^

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

  • git diff HEAD - - readme.txt

可以丢弃工作区的修改

  • git checkout - - file

小结

  • 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout - - file。

  • 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作。

  • 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

和GitHub建立链接

创建SSH Key:
  • ssh-keygen -t rsa -C “youremail@example.com”

SSH 密钥存储在其 ~/.ssh 目录 找到 id_dsa.pub复制内容到 在GitHub setting中新建的ssh链接,这样就能连接到你的GitHub

与本地仓库关联

  • git remote add origin git@github.com:username/xx.git
  • git push -u origin master #推送到主分支
  • git push origin

上面命令表示,将当前分支推送到origin主机的对应分支。

如果当前分支只有一个追踪分支,那么主机名都可以省略。

  • git push 如果当前分支与多个主机存在追踪关系,那么这个时候-u选项会指定一个默认主机,这样后面就可以不加任何参数使用git push。

  • git push -u origin master 上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。

  • 不带任何参数的git push,默认只推送当前分支,这叫做simple方式。此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。

从远程克隆仓库

创建分支:

创建并切换到一个名为dev的分支:

  • git checkout -b dev
    git checkout命令加上-b参数表示创建并切换

相当于以下两条命令:

  • git branch dev
  • git checkout dev

然后,用git branch命令查看当前分支:

  • git branch
  • *dev
    master
    git branch命令会列出所有分支,当前分支前面会标一个*号。

然后,我们就可以在dev分支上正常提交

Git鼓励大量使用分支:

查看分支:git branch

创建分支:git branch name

切换分支:git checkout name

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

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

删除分支:git branch -d name

分支管理:

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

  • git merge - -no-ff -m “merge with no-ff” dev

推送分支

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

$ git push origin master
如果要推送其他分支,比如dev,就改成:

$ git push origin dev

如果是:需先删除原来的远程库关联,重新建立ssh模式的远程库关联
git remote rm origin
git remote add origin git@github.com:?????/????

多人协作的工作模式通常是这样:

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

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

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

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

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

这就是多人协作的工作模式,一旦熟悉了,就非常简单。

查看远程库信息,使用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,如果有冲突,要先处理冲突。

保存当前工作场景

有时候当前的工作未完成需要切换到其他分支修改bug之类的情况 又不想单独提交一次 这时候就可以使用git stash,使用后即可切换到其他分支工作 完成后还可以回来恢复上次保存的工作场景

  • git stash 存储当前工作现场
  • git stash list 列出存储过的现场列表

恢复上次保存的工作场景

  • git stash apply stashid
    恢复后,stash内容并不删除,你需要用git stash drop来删除;

  • git stash pop stashid,恢复的同时把stash内容也删了

创建标签

  • 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 v0.9
    Deleted tag ‘v0.9’ (was f52c633)
    然后,从远程删除。删除命令也是push,但是格式如下:

  • git push origin :refs/tags/v0.9

  • git push origin tagname可以推送一个本地标签;

  • git push origin –tags可以推送全部未推送过的本地标签;

  • git tag -d tagname可以删除一个本地标签;

  • git push origin :refs/tags/可以删除一个远程标签。

设置颜色:

  • git config –global color.ui true

不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore

忽略文件的原则是:

忽略操作系统自动生成的文件,比如缩略图等;
忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

  • git config –global alias.st status 设置别名简化操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值