学习笔记供自己以后回顾。
一、新建版本库(仓库repository)
1.在合适的地方创建一个空目录
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
2.通过git init 把这个目录变成git可以管理的仓库.git是git来跟踪管理版本库的
3.使用“git add 文件名”例如git add helloworld.txt, 将文件添加到仓库;使用“git commit”命令提交到仓库,例如git commit -m "wrote a helloworld file",-m参数后接的字符串为提交说明
二、版本控制
1.git status 命令查看仓库当前的状态,比如文件发生改变是否添加到仓库或提交到仓库
2.git diff 命令查看文件被修改具体的内容
3.git log命令查看最近到最远的提交日志,git log --pretty=oneline 一行显示日志,首行为版本号id
4.git reset --hard HEAD^ 回退到上一个版本,在git中用HEAD表示当前版本,上上个版本可以表示为HEAD^^,上100个版本写成HEAD~100;git rest --hard 版本号 即返回到指定版本号的版本
5.git reflog 记录每次输入的命令
6.git 有工作区,缓存区,工作区->add->缓存区->commit->分支(记录,master)
7.git checkout --文件名,例如git checkout --helloworld.txt 把helloworld.txt文件在工作区的修改全部撤销,即让文件回到最近一次git add 或 git commit的状态
8.git reset HEAD file 例如git reset HEAD helloworld.txt,将暂存区的修改撤销掉,git reset命令可以回退版本,也可以把暂时区的修改回退到工作区,即回退到第7点
9.git rm 用于删除一个文件,git checkout --file 命令可以实现在版本库中误删文件的“一键还原”
三、远程仓库
1.创建SSH Key。在用户主目录下查看.ssh目录是否存在,若存在查看id_rsa和id_rsa.pub是否存在,若存在跳过次步骤,否则打开shell(Windows打开git bash)创建SSH Key ,命令ssh-keygen -t rsa -C "email@example.com" 接邮件地址,使用默认值即可,一般不需要设密码。.ssh目录下的id_rsa是私钥,id_rsa.pub是公钥
2.登录github,打开“Account setttings”,“SSH Key”页面,然后点“Add SSH Key”,填上任意Title,在key框里粘贴id_rsa.pub文件的内容
3.github上新建一个仓库,例如名为learngit,将本地的仓库与GitHub仓库关联,在本地learngit仓库下运行命令git remote add origin git@github.com:lx/learngit.git,lx为GitHub用户名,origin为远程仓库名可以改成任意名字
4.本地仓库所有内容推送到远程库上,命令git push -u origin master,第一次推送加上-u参数不但会把本地的master分支推送到远程的master分支上,还会把本地的master分支和远程的master分支关联起来,以后推送只使用git push 命令即可
5.第一次使用git的clone或者push命令连接GitHub时会有个警告,这是因为git使用SSH连接,第一次连接会验证GitHub服务器的Key,需要确认Key的指纹信息是否真的来自GitHub服务器,一般输入yes即可
6.远程克隆,假设存在gitskills新库,命令git clone git@github.com:lx/gitskills.git
7.远程分支克隆 ,git chechout -b dev origin/dev 创建远程origin的dev分支到本地,git push origin dev push到远程仓库
8.指定本地dev分支与远程origin/dev分支的连接,git branch --set-upstream dev origin/dev
9.git pull 抓取分支
10. 在windows下操作github,首先使用 git config --global user.name "username"配置一个全球用户名,然后使用git config --global user.email "emailaddress@xx.com"配置一个全球email地址,再使用 ssh-keygen -t rsa -C "emailaddress@xx.com"创建key,使用ssh git@github.com测试连接,第一次出现一个警告
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
直接输入yes即可,因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器
四、分支管理
1.master为git主分支,HEAD指针指向了master。新建一个dev分支,git checkout -b dev,git checkout命令加上-b参数表示创建并切换,相当于git branch dev,git chechout dev两条命令,git checkout 命令表示切换分支。git branch命令查看当前分支.
2.git merge dev 表示将dev合并至当前分支
3.git branch -d dev 删除dev分支.
4.当Git无法自动合并是必须先解决冲突,然后再提交
5.git log --graph命令查看分支合并图
6.git默认会用 Fast forward模式,这种模式删除分支后会丢失掉分支信息,git merge --no--ff -m "merge with no-ff" dev表示禁用Fast forward模式,-m 带说明
7.分支策略,master分支仅用来发布新版本,在dev分支上工作,每个人都有自己的分支,完成后合并至dev分支
8.git stash 命令保存当前工作现场,git stash list查看stash内容
9.git stach apply 回复工作内容,git stash drop来删除stash,另一种git stash pop 恢复的同时删除stash内容
10.git branch -D <name> 强制删除一个未合并的分支
11. git remote 查看远程库的信息,git remote -v 显示详细的远程信息
五、标签管理
1.切换至打标签的分支上,输入命令 git tag v1.0,git tag 查看所有标签,git tag v0.9 6663439,可以指定一个commit id 打标签
2.git show v0.9 查看v0.9标签的详细信息
3. git tag -a v0.1 -m "vsersion 0.1 released" 6666034 -a指定标签名,-m指定说明文字
4.git tag -s v0.1 -m "version 0.1" 6666034 -s使用PGP签名标签
5.git tag -d v0.1 删除标签
6.git push origin v0.1 推送某个标签至远程,git push origin --tags 推送全部标签
7.删除远程标签,先git tag -d v0.1删除本地标签,再git push origin :refs/tags/v0.1删除远程标签
六、GitHub
1.在GitHub上可以任意Fork开元仓库,然后即可在自己的GitHub仓库pull到本地
七、码云
1.国内的Git托管服务——码云(gitee.com),五人以下团队免费
2.git remote add origin git@gitee.com:lx/learngit.git 关联远程库,如果报错用git remote -v命令查看是否远程库重名
3.其他的同GitHub一样
八、自定义Git
1.git config --global color.ui true 让git显示彩色
2.忽略特殊文件,在git工作区的根目录下创建一个.gitignore文件,把要忽略的文件名填进去,然后提交到Git
3.git add -f xx.txt 强制添加xx.txt文件至git
4.别名的设置,git config --global alias st status,将status设置st别名
学习连接地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000