Git 从入门到精通(常用命令解析)(一)

大学的时候就一直在用git了,不过直到现在公司才切git,所以,重新学习记录下。

一,git add 命令。

$git add <文件名>       //将文件提交到本地仓库。
$git add .             //他会监控工作区的状态数,使用该命令会把工作时的所有变化提交到暂存区。包括modified以及new文件。不包括被删除的文件。
$git add -u            //他仅监控以及被add的文件(即tracked file),他会将被修改的文件提交到暂存区。 不包括新文件。(git add -update缩写)
$git add -A            //是上面两个命令的合集(git add -all的缩写)

二,git commit

$git commit -m "你的注释"    //添加文件到本地git仓库
$git diff <文件名>   //查看具体修改了什么内容
$git log //查看历史提交记录,以便确定要回退到哪个版本。
$git reflog //查看历史命令,以便确定要回到未来的哪个版本。

再git中,用HEAD表示当前版本,上一个版本是HEAD^,上上个版本可以就是HEAD^^。如果很多,可以写HEAD~100。
回退版本命令:git reset -hard HEAD^

原理:git有工作区,暂存区,以及当前分支。并且git跟踪管理的是修改,并非文件。所以每次修改后,如果没有add到暂存区,就不会加入到commit中。
git add,实际上就是把文件修改添加到暂存区。
git commit 实际上就是把暂存区的所有内容提交到当前分支。

三,git checkout
git checkout可以用来切换分支,但是一般主要是撤销修改。

git checkout - <file> //其实就是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以意见还原。

分两种情况:
1,file自修改后还没有放到暂存区,现在,撤销修改就回到和版本库一样。
2,file修改后已经添加到暂存区,又做了修改。现在,撤销修改就回到添加到暂存区后的状态。
3,git reset HEAD file 可以把暂存区的修改撤销掉,重新放回工作区。

checkout文件层面的操作:主要是对暂存区和工作区起作用,一般有暂存区覆盖工作区的行为特征。
reset文件层面的操作:主要对暂存区起作用。

用check命令如果切换分支呢?

git checkout -b dev //创建分支dev 并切换到dev,相当于git branch dev,git checkout dev 两条命令。
git checkout dev //切换分支到dev。

四,git push 详解。
在使用git之前,你首先要关联一个远程库

$git remote add origin git@server-name:path/repo-name.git.

管理远程仓库后,就可以把本地代码推送到远程, 一般第一次提交可以使用
$git push -u origin master :第一次提交后后面可以省略“-u“。

$git push origin master :熟悉的命令

详解
1,git push 命令用于将本地分支的更新,推送到远程主机。
原始命令:git push <远程主机名> <本地分支名>:<远程分支名>
如果省略远程分支名,则表示将本地分支推送与之存在“追踪关系”的远程分支(通常两者同名)。
git push origin master:表示将本地的master分支推送到origin主机的master分支。如果后者不存在,则会创建。
如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。

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

五,git remote 详解。
为了便于管理,git要求每个远程主机都必须指定一个主机名。
git remote用于管理主机名。
git remote :会列出所有远程主机。
git remote -v:可以查看远程主机的网址。
git remote show <主机名> :可以查看该主机的详细信息。
git remote add <主机名,也可以理解别名> <网址>:用于添加远程主机。
git remote rm <主机名> :用于删除远程主机。
git remote rename <原主机名> <新主机名> :用于远程主机的改名。

在克隆版本库的时候,所使用的远程主机会自动的被git命名为origin。如果想使用其他的主机名(包括添加主机名时)。
如果克隆时想使用其他主机名,需要git clone命令 -o选项指定。
$git clone -o jQuery <地址>

$git remote
jQuery//此时,远程主机名为jQuery

六,git fetch详解。
一旦远程主机的版本库有了更新(git术语叫做commit),需要将这些更新取回本地,这时就要用到git fetch命令。
$git fetch <远程主机名>:表示将某个远程主机的更新,全部取回本地。

默认情况下,git fetch取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指定分支名。

$git fetch <远程主机名> <分支名>

$git fetch origin master:取回origin主机的master分支。

git fetch只是取回分支更新,但是没有和本地分支合并。
$git merge origin/master 将远程主机origin的更新合并本地master。

七,git pull详解。
git pull 命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并,它的完整格式稍稍有点复杂。

$git pull <远程主机名> <远程分支名>:<本地分支名>

比如,取回origin主机的next分支,与本地的master分支合并,需要写出下面这样:

$git pull origin next:master

如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

$git pull origin next
上面的命令表示,取回origin/next 分支,再与当前分支合并。实质上,这等同于先做git fetch,在做git merge。

$git fetch origin

$git merge origin/next

在某些场合,git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。 比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动追踪origin/master分支。git也允许手动建立追踪关系。

$git branch -set-upstream master origin/next

上面命令指定master分支追踪origin/next 分支。
如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。

$git pull 

上面命令表示,当前分支自动与唯一一个追踪分支进行合并。
如果合并需要采用rebase模式,可以使用-rebase选项。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值