Git命令

Git命令

创建版本库

git init

把当前目录变成可以管理的工作区。git可以看作由工作区、版本库两部分组成,版本库又分为暂存区和master分支

git add <file>git add -A

把文件修改添加到暂存区,Git跟踪并管理的是修改,而非文件。所以,每一次修改后,都要使用git add 命令

git commit -m "提交的说明"

一次性把暂存区的所有内容提交到当前分支(暂存区的所有内容清空),git commit相当于保存了一个快照,以后我们可以从指定的一个commit中进行恢复

版本管理

git loggit log --pretty=oneline

查看提交历史,显示时间上由近到远的提交情况,其中看到的一大串随机字符串是每次提交自动生成的commit id

git reset --hard HEAD^git reset --hard 747534

表示返回上一个版本,HEAD表示当前版本,HEAD^^表示上一个版本的上一个版本,以此类推HEAD~100表示往上100个版本

747534表示版本号,这个版本号不一定要写全,git会自动去寻找对应的版本。如果你不记得版本号,可以使用命令

git reset HEAD file

把暂存区的修改撤销掉,放回到工作区

git reflog

查看命令历史

git diff HEAD -- aabb

查看aabb文件在工作区与版本库里最新版本的区别

git status

查看工作区每个文件的状态,Changes not staged for commit:表示修改的文件还没有从工作区提交到暂存区;Untracked files:表示文件还没有被添加过,所以状态是Untracked。对于这两种状态的文件,我们可以通过

  1. git add命令将其提交到暂存区。再用git status命令看到的就是Changes to be committed,其中分为newfile和modified两种类型。
  2. git commit命令提交所有修改到分之后,再用git status命令看到的就是nothing to commit,表示工作区是干净的

On branch master,Your branch is ahead of ‘origin/master’ by 2 commits,nothing to commit, working directory clean表示本地的所有改动都已经通过2次commit操作更新到本地仓库了,但是远程仓库还没有进行这2次commit,我们可以通过 git push origin master让远程仓库与本地仓库同步

git checkout -- aabb

把aabb文件在工作区中的修改全部撤销,让它回到暂存区的aabb文件状态,暂存区的aabb文件状态为空则回到分支的aabb文件状态。总得来说git checkout – aabb,对于误删和误改都有一键还原的作用。

git rm

从分支中删除掉一个文件,紧接着要使用git commit命令提交这种删除操作到分支。

远程仓库

在本地创建了一个Git仓库后,又想在GitHub创建一个可以与本地仓库同步的Git仓库,这样,Git仓库既可以发挥备份和与他人协作的作用。

git remote add origin git@github.com:XXXXX/xxxx.git

把一个已有的本地仓库与Git仓库关联,Git仓库的名字置为origin
git@github.com:XXXXX/xxxx.git 走的是SSH协议,https://gitee.com/XXXXX/xxxx.git走的是https协议 可以通过 git remote add 带不同格式的参数,选择不同的协议
git remote remove origin

取消与本地关联的远程库

git push -u origin master

把本地库的master推送到Git仓库,一般在push之前要先git pull origin master,然后进入一个信息填写页面,填写备注信息后,存盘退出即可

-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。之后

git push origin master

把本地master分支的最新修改推送至Git仓库

把Git仓库和本地仓库关联的最好方式是:先创建远程库,然后,从远程库克隆

git clone git@github.com:XXXXX/xxxx.git

克隆一个仓库到本地,Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin

git remotegit remote -v

查看远程仓库的信息或详细信息,对于-v参数:显示了可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址

分支管理

自己创建的分支,对于别人是不可见的,而且自己的分支可以和主分支合并

git checkout -b dev

创建dev分支,然后切换到dev分支,相当于以下两条命令

git branch devgit checkout dev

新创建的分支是指向当前的master分支的

git branch

查看当前分支命令,当前分支会加上*号

git merge

合并指定分支到当前分支

git branch -d dev

删除分支dev,合并分支到master后就可以删除dev分支了

git log --graph

查看分支合并图

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

  • 在合并分支时,如果不产生冲突,默认采取Fast forward模式,这种模式下,删除分支后,会丢掉分支信息,看不出来曾经做过合并过
  • 加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并

git stash

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

git stash list

查看被存储的工作场

git stash pop

恢复工作场,并把储藏的工作场删掉

git branch -D <name>

开发一个新功能,最好新建一个分支,如果要丢弃一个没有合并过的分支,就可以通过-D参数强行删除

git push origin xxx

把xxx分支上的所有本地提交推送到远程库对应的分支上,但是,并不是一定要把本地分支往远程推送:

  • master分支是主分支,要时刻与远程同步
  • dev分支是开发分支,所有成员都要在上面工作,也需要与远程同步
  • bug分支只用于在本地修复bug,就没必要推到远程了
  • feature分支根据实际情况决定

git checkout -b dev origin/dev

创建远程origin的dev分支到本地,用这个命令创建本地dev分支

git pull

把最新的提交从抓下来,如果在pull的时候提醒no tracking information,说明本地分支和远程分支的链接关系没有创建,就用命令

git branch --set-upstream dev origin/dev

指定本地dev分支与远程origin/dev分支的链接

git push origin dev

把dev分支push到远程对应的dev分支

  • [ ] 多人协作的工作模式流程如下:

    1. 试图用git push origin branch dev推送自己修改的dev分支
    2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并
    3. 如果合并有冲突,则解决冲突,并在本地提交
    4. 解决掉冲突后,再用git push origin branch dev推送
标签管理

用tag打标签唯一确定一个版本,比使用commit id更方便,Git的标签其实就是指向某个commit的指针

git checkout master

首先,切换到需要打标签的分支上

git tag v1.0

给master分支上的当前commit打上v1.0的标签

git tag v0.9 6224937

给指定的commit版本打上标签

git tag

查看所有标签,标签出现的顺序按照字母排列顺序

git show v0.9

查看打了标签的commit的所有信息

git tag -a <tagname> -m "......."

指定标签信息为…….

git tag -d v0.1

删除指定标签v0.1

git push origin v0.1

推送标签v0.1到远程

git push origin --tags

一次性推送全部尚未推送到远程的本地标签

如果标签已经推送到远程,要删除远程标签就:

  1. it tag -d v0.9先删除本地标签v0.9
  2. git push origin :refs/tags/v0.9 再远程删除标签v0.9
自定义Git

某些文件在Git工作目录中,但又不需要提交它们。在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。

  • 在项目的根目录下启动git bash窗口,执行touch .gitignore
  • 然后在.gitignore中编辑规则
    #过滤掉文件夹下的所有内容
    /bin/
    #过滤掉所有class文件
    *.class
    #过滤掉指定文件
    /bin/a.class
  • 执行git add .和git commit -m “update gitignore”命令提交规则
参考资料

[1] https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
[2]:http://www.runoob.com/git/git-tutorial.html
[3]:https://git-scm.com/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值