1安装
window上安装git-官网直接下载。
下载完成后需要在git bash命令行中输入:
$ git config --global user.name "yourname"
$ git config --global user.email "youremail"
--global表示这台机器上所有的git仓库都会使用这个配置。
2.创建本地仓库
创建一个空目录
cd 空目录
$ git init//初始化
在当前目录中会出现.git文件夹,其时用来跟踪管理版本库的,不要随便改动。
编写一个文本文件read.txt,提交代码到暂存区。
$ git add read.txt
将暂存区的文件提交到仓库
$ git commit -m "说明文字"
-m后面的说明文字有助于后期管理及阅读。
注意:git命令必须在仓库目录下执行。提交某个文件时,必须确保当前目录下存在该目录。科使用ls
或dir
确定某目录下的文件列表。
$ `git status` 可以查看仓库的状态。
$ `git diff` 可以查看上次对文件的修改之处。在git add提交到暂存区之后,git diff不再提示
$ `git log` 可以查看提交的commit历史。
$ `git --stat` 在git log基础上输出文件增删改查的统计数据。
3.版本回退
$ git reset --hard HEAD^//回退上一版本。
$ git reset --hard HEAD~100//回退100个版本。
$ git reset --hard "提交id"
$ git reset --hard//回退到放入暂存区之前的版本,commit之后不能回到之前版本,撤销工作区更改。
$ git reset HEAD//回退到放入暂存区之前的版本,工作区需要使用git checkout -- name回退工作区的修改。
当你回退到某个版本之后,发现还是原来的版本好,但是你已经关闭了电脑,怎么办呢?使用git reflog查看以前执行的操作,并根据id跳转到指定版本。
$ git reflog//查看执行过的命令
4.撤销修改
$ git checkout --file//撤销对工作区的修改.
在保存到暂存区之后,则不能使用git checkout回到add之前的版本。
总之就是回到最近一次git add或git commit 之后的状态。
7.删除文件
git rm file//此时删除了工作区的文件,可用git reset+git reflog进行撤销。
5.远程仓库
在用户主目录下,命令行输入:
$ssh-keygen -t rsa -C "youremail"//这会生成一个公钥和一个私钥,私钥不可泄漏。
在github中ssh中设置这个公钥,就可以push本地仓库当远程仓库。每台电脑有一个ssh公钥就行了。
6.添加远程库
在GitHub中新建一个 repository,在本地仓库中运行:
$ git remote add origin git@github.com:GitHub账号/仓库的名字.git
//可以在github中查看地址写法。
//例如:git remote add origin git@github.com:dingding/name.git
//origin是远程库的名字,可以自己设置。
$ git push -u origin master
//-u作用是不仅会把本地的master内容推送到远程的master分支,还会把本地的master和远程的master分支关联起来,在以后推送时简化命令。
6.分支管理
每次提交,都会在git里进行记录,而这些记录共同构成了当前的那一条分支,即主分支(master分支),当你的提交次数越来越多,master分支的线也就越来越长。
HEAD
的作用就是指向当前分支。
master
是指向提交
当我们新创建一个分支dev
的时候,git将dev的指针指向和master相同的提交,并将HEAD指向dev,表示当前在dev指针分支上。这样我们就创建了一个dev分支。
注意
:此时,对工作区的修改只会反应在dev分支上。
我们创建一个git本地仓库,添加yes.txt文本文件。
在当前master分支对文本内容进行修改为yes+no
。并创建一个dev分支。
git switch -c dev
git add .
git commit -m "dev"
在dev分支下查看yes.txt
现在切换到master分支。
git switch master
查看yes.txt的内容。
master分支下的yes.txt的内容并没有改变。因为dev的提交点前进了一步,但是master的提交点并没有改变。如果想要两个分支下的内容都改变,则需要对分支进行合并。
git merge dev//将dev分支合并到当前分支。
合并之后就可以删除dev分支了。
git branch -d dev
部分命令:
1:git switch -c //git checkout -b//创建并切换分支
2:git switch//git checkout//切换分支
3:git branch//查看分支,当前分支前会有“*”显示
4:git merge // 合并指定分支到当前分支
5:git branch -d //删除分支
7.合并冲突
假如当你在master分支中修改了工作区的内容,并且提交到了仓库。然后又创建了一个dev仓库,并且也修改了工作区的内容并且完成了提交到仓库。此时,如果进行合并,就会出现“合并冲突”。
冲突后打开yes.txt文件:
解决冲突的方法就是手动的更改文件中的内容,将文件中的内容更改为我们想要的内容,然后再提交。
8分支管理
在合并通知时,默认是fast-forward模式,在这种模式下,删除分支后,会丢失分支信息。如果强制禁用fast-forward模式,git会在merge时生成一个新的commit,从而可以在分支历史上看出分支信息。git merge --no-ff -m "no-ff"//使用--no-ff的意义在于其某分支删除后可以在分支历史上看到分支信息
分支策略原则:master分支应该保证稳定,不能在master上干活。
9Bug分支
在git中,bug的修改通过临时分支实现。 假如你在dev分支工作时接到修复bug的任务,但是dev的任务还没完成,不能提交。这时请使用git stash命令保存当前dev分支的工作内容。git stash //保存当前分支的工作状态。
使用git stash list
可以查看这个stash中保存的状态。
在master中对bug进行修复时,创建修复bug的临时分支。
git switch master
git switch -c bug01
修复完成之后,回到master分支将bug01合并到master,
git merge --no-ff -m "bug submit" bug01
此时,bug在master分支中已经被修改,但是dev分支是早期在master分支中分出来的,那么dev分支也应该执行bug修复。git提供cherry-pick命令来复制特定的提交到当前分支。
git cherry-pick bugcommit的id// 这个id在bug提交的时候可以看到,请复制粘贴。
现在,dev分支的bug也被 “重蹈覆辙” 了。
最后,请恢复dev分支之前保存的状态。
git stash apply//恢复后,stash的内容仍然存在,使用git stash list可以查看。
git stash pop//恢复后,stash里的内容会被删除。
你也可以恢复到指定的stash
git stash apply stash@{0}
9.分支推送
当你从远程仓库克隆时,远程仓库的默认名称是origin,当然你也可以自己设置。
查看远程仓库的信息:
git remote或 git remote -v
git push origin master//将master分支推送到远程仓库origin。
push注意:master分支是主分支,应保持其与远程master同步。dev是开发分支,团队的成员都在上面工作,所以也必须保持同步。bug分支只用于本地修复bug,可以不用推送。