利用 cd E:\github 定位到版本库文件夹
在git中添加用户名和对用的邮件信息,使得记录每一个添加修改的人
查看用户名和密码
将文件夹变为对应的git版本库,并生成相应的git管理文件
基本流程图:
使用$ touch 1.txt 命令创建文件1.txt,文件内容为11111,并用$ git status查看版本库的状态
此时1.txt文件为Untracked状态,表明还有没有放入版本库,此时需要使用$ git add 1.txt命令
如果想要一次性添加文件夹所有文件到版本库,使用 $git add . 即可
对1.txt的内容进行修改,然后查看状态,发现修改还没被add到stage状态
使用$ git diff查看变化的内容
把这次修改add 进入staged状态, 然后再commit这次的修改:( $git add 1.txt $git commit -m "修改1.txt" )
此时工作区没有要修改的文件,工作区很干净
查看记录log,会看到修改人的名字、邮箱和时间,还有commit的ID ($ git log)
回到add之前 -s是status的简写,表示简写输出文件状态
回到某一个commit之前的状态,针对1.txt,所有的commit如下:(--oneline表示以一行输出)
每个 commit 都有自己的 id 数字号, HEAD 是一个指针, 指引当前的状态是在哪个 commit. 我们如果要回到过去, 就是让 HEAD 回到过去并 reset 此时的 HEAD 到过去的位置.
回到change 2之后的状态为例:
再次回到change 3之后:
查看 $ git reflog 里面最近做的所有 HEAD 的改动, 并选择想要挽救的 commit id:
使用checkout使得1.txt文件回到change 2之后的状态,但是HEAD指针没有变,其他文件也不会变,只是1.txt自身变到change 2之后的状态
新建分支:$ git checkout -b de b是build
展示分支:$git branch
此时版本库中的修改发生在新分支de,原master分支不受影响
需要先转换到master分支:$git checkout master
然后将de分支中的改变合并:$git merge --no-ff -m "merge into" de
如果直接 git merge dev, git 会采用默认的 Fast forward 格式进行 merge, 这样 merge 的这次操作不会有 commit 信息. log 中也不会有分支的图案. 我们可以采取 --no-ff 这种方式保留 merge 的 commit 信息.
删除分支de:
首先移动到另一分支master,
使用命令: $ git branch -d de d是delete的意思
解决merge冲突
在dev和master分支中,都存在1.txt
目前在dev分支中,修改文件1.txt并提交更改
移动到master分支中,修改1.txt并提交更改
将dev的修改merge到master分支,出现冲突,git不知道如何处理
在1.txt中,出现了如下提示信息
123456
<<<<<<< HEAD
editor in master
=======
editor in dev
>>>>>>> dev
解决:
只需要手动确认1.txt的内容,然后提交修改
用stash存放临时修改
当我们正在修改文件时,需要中途暂停,可以使用stash保存临时修改
又要开始时,取出修改继续工作
查看stash的缓存:$ git stash list
取出修改:$ git stash pop