一、安装:
下载地址:Gitfor Windows
使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文
二、配置:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
注意:git config命令的–global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址
三、基本操作:
新建一个文件,假设名字为:learngit,在里面新建文件readme.txt(不要用微软自带的文本文件,可以用其他的代替)
初始化:git init
把文件添加到仓库:git add readme.txt
把文件提交到仓库:git commit -m "wrote a readme file"
引号里面的是提交的说明,方便从历史中找到修改的记录。
查看仓库当前的状态:git status
查看修改内容:git diff
显示从最近到最远的提交日志:git log
回退到上一个版本:git reset --hard HEAD^
查看内容:cat readme.txt
回退到最新版本:git reset --hard ***
***表示版本号,
记录你的每一次命令:git reflog
让这个文件回到最近一次git commit或git add时的状态:git checkout -- readme.txt
把暂存区的修改撤销掉:git reset HEAD readme.txt
删除文件:git rm test.txt
并且git commit -m "remove test.txt"
四、远程仓库:
注册GitHub账号
打开Git Bash创建SSH KEY:ssh-keygen -t rsa -C "xxx@xxx.com"
在用户目录下有个.ssh目录,里面有id_rsa和id_rsa.pub这两个文件,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
将id_rsa.pub里面的密钥复制到GitHub的SSH中,保存。
在GitHub新建一个仓库。
在本地本地的learngit仓库下运行命令:git remote add origin git@github.com:xxx/xxx.git
地址会在创建仓库完成后给出,复制即可。
下一步,把本地库的所有内容推送到远程库上:git push -u origin master
以后只要本地作了提交,就可以通过命令:git push origin master
把本地master分支的最新修改推送至GitHub。
从远程仓库克隆:git clone git@github.com:xxx/xxx.git
五、分支管理:
创建分支:git checkout -b dev
>-b参数表示创建并切换
相当于:git branch dev
和 git checkout dev
查看分支:git branch
>该命令会列出所有分支,当前分支前面会标一个*号
切换到master分支:git checkout master
把dev分支的工作成果合并到master分支上:git merge dev
删除dev分支:git branch -d dev
我们注意到切换分支使用git checkout ,而前面讲过的撤销修改则是git checkout --<file>,新版本的Git提供了新的git switch命令来切换分支:
创建并切换到dev分支:git switch -c dev
直接切换到已有的master分支:git switch master
如果我们修改了dev中的readme.txt又修改了master中的readme.txt,再次合并分支时会出现冲突导致不能正常合并,必须手动解决冲突。
修改:手动进入readme.txt文件,修改<<<<<<<,=======,>>>>>>>标记的内容,然后再添加到缓存,最后提交就可以了。合并完成就可以删除新建的分支!
查看详细的分支合并情况:git log --graph --pretty=oneline --abbrev-commit
通常合并分支时,如果可能Git会用Fast forward模式,但这种模式下删除分支后会丢掉分支信息。如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
合并分支:git merge --no-ff -m "merge with no-ff" dev
>注意–no-ff参数,表示禁用Fast forward
命令git tag <tagname>
用于新建一个标签,默认为HEAD,也可以指定一个commit id;
命令git tag -a <tagname> -m "blablabla..."
可以指定标签信息;
命令git tag
可以查看所有标签
命令git push origin <tagname>
可以推送一个本地标签;
命令git push origin --tags
可以推送全部未推送过的本地标签;
命令git tag -d <tagname>
可以删除一个本地标签;
命令git push origin :refs/tags/<tagname>
可以删除一个远程标签