一键教你学git,好不好学,你说的算!

创建版本库命令:
$mkdir learngit ---->创建learngit文件夹
$cd learngit
$pwd ------>用于显示当前目录
g i t i n i t − − − − > 命 令 把 这 个 目 录 变 成 g i t 可 以 管 理 的 仓 库 编 写 r e a d m e . t x t 文 件 , 添 加 一 些 内 容 ( 随 便 添 加 内 容 ) , 并 把 该 文 件 存 放 在 l e a r n g i t 目 录 下 把 r e a d m e . t x t 文 件 放 到 g i t 仓 库 只 需 要 两 步 : 1. 使 用 git init ---->命令把这个目录变成git可以管理的仓库 编写readme.txt文件,添加一些内容(随便添加内容),并把该文件存放在learngit目录下 把readme.txt文件放到git仓库只需要两步:1.使用 gitinit>gitreadme.txt便,learngitreadme.txtgit1.使git add readme.txt,将文件添加到仓库中;2.使用$git commit -m "wrote a readme.txt"命令,告诉git,把文件提交到仓库中,-m后面输入的是提交的说明,可以输入任意内容,也可以不输入 -m “XXX”,但是建议不要这么做。
git commit命令执行成功后会告诉你,1 file changed:1个文件被改动(我们新添加的readme.txt文件);2 insertions:插入了两行内容(readme.txt有两行内容)
疑难解答
Q:输入git add readme.txt,得到错误:fatal: not a git repository (or any of the parent directories)。
A:Git命令必须在Git仓库目录内执行(git init除外),在仓库目录外执行是没有意义的。
Q:输入git add readme.txt,得到错误fatal: pathspec ‘readme.txt’ did not match any files。
A:添加某个文件时,该文件必须在当前目录下存在,用ls或者dir命令查看当前目录的文件,看看文件是否存在,或者是否写错了文件名。

添加文件到Git仓库,分两步:
使用命令git add ,注意,可反复多次使用,添加多个文件;
使用命令git commit -m ,完成。

$git status命令可以让我们时刻掌握仓库当前的状态,上面的命令输出告诉我们,readme.txt被修改过了,但还没有准备提交的修改。
比如你休假两周从国外回来,第一天上班时,已经记不清上次怎么修改的readme.txt,所以,需要用git diff这个命令看看:

$git diff顾名思义就是查看difference,显示的格式正是Unix通用的diff格式,可以从上面的命令输出看到,我们在第一行添加了一个distributed单词。
$git status命令看看仓库的当前状态
git status告诉你有文件被修改过,用git diff可以查看修改内容

$git log 可以查看历史记录
当前版本append GPL回退到上一个版本add distributed,就可以使用git reset命令
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
git checkout – file命令中的–很重要,没有–,就变成了“切换到另一个分支”的命令,
$ rm test.txt 删除test.txt文件。
git merge命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的
查看分支:git branch
创建分支:git branch
切换分支:git checkout 或者git switch
创建+切换分支:git checkout -b 或者git switch -c
合并某分支到当前分支:git merge
删除分支:git branch -d

准备新的feature1分支,继续我们的新分支开发:
$ git switch -c feature1
Switched to a new branch ‘feature1’
通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
下面我们实战一下–no-ff方式的git merge:
首先,仍然创建并切换dev分支:
$ git switch -c dev
Switched to a new branch ‘dev’
修改readme.txt文件,并提交一个新的commit:
$ git add readme.txt
$ git commit -m “add merge”
[dev f52c633] add merge
1 file changed, 1 insertion(+)
现在,我们切换回master:
$ git switch masterSwitched to branch ‘master’
准备合并dev分支,请注意–no-ff参数,表示禁用Fast forward:
$ git merge --no-ff -m “merge with no-ff” devMerge made by the ‘recursive’ strategy.
readme.txt | 1 +
1 file changed, 1 insertion(+)
因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。
合并后,我们用git log看看分支历史:
$ git log --graph --pretty=oneline --abbrev-commit

  • e1e9c68 (HEAD -> master) merge with no-ff
    |\
    | * f52c633 (dev) add merge
    |/
  • cf810e4 conflict fixed

    合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
    Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
    $ git stashSaved working directory and index state WIP on dev: f52c633 add merge
    现在,用git status查看工作区,就是干净的(除非有没有被Git管理的文件),因此可以放心地创建分支来修复bug。
    首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支:
    $ git checkout master
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值