赞
踩
最开始先推荐两个神级网站,一个帮助理解git底层逻辑,一个是你走投无路的解药。
推荐多玩几遍 git 游戏,理解一下 git 的底层逻辑。
如果你真的把版本控制弄的一团糟,https://ohshitgit.com/ 是你的解药。
clone
pull
git add
git commit
publish
push
查看版本:git -v
创建仓库
本地新建
先新建一个空文件夹作为仓库;
在空文件夹里右键打开Git命令行;
在当前文件夹构建仓库(初始化):git init
与客户端创建的区别:客户端会在构建完毕后自动提交一个.gitattributes
文件,所以文件夹内有一次提交后留下的内容;命令行构建的仓库是一个真空仓库,只有一个目录结构,没有任何文件。
远程克隆
在仓库外一层文件夹右键打开Git命令行:
克隆指令:git clone 远程仓库地址
也可以clone远程仓库后自己重新命名,不使用远程仓库的名字:git clone 远程仓库地址 本地仓库重命名
仓库配置:git config 配置名称 配置值
还可以使用全局配置,即整个git软件的所有仓库进行配置:git config --global 配置名称 配置值
相当于是在更改一个全局配置文件:.gitconfig
查看暂存区状态:git status
如果有新文件会显示有未追踪文件:
把文件增加到暂存区进行比对:git add 文件名
文件名可以用通配符来表示同类型的所有文件,eg:git add *.java
这个时候再查看暂存区状态会发现显示暂存了一份文件:
把文件从暂存区删除,相当于撤回存入暂存区的操作:git rm -- cached 文件名
这个时候暂存区状态就回到刚创建后的状态了:
把文件从暂存区提交到仓库:git commit -m 提交说明
这里-m
表示消息的意思,后面跟着的是对这次提交的说明。
里面会显示版本号和文件状态的码,其中前3位表示文件类型(100表示为普通文件类型)后3位表示文件权限。
提交完后,我们再来查看暂存区状态,发现没有任何内容了。
查看历史提交(只能查看当前HEAD指针所在版本及之前的版本):git log
还可以增加附加格式来使得可读性更强:git log --oneline
注意:修改和删除操作的时候依然需要先把删除的文件移入暂存区,再进行比对。因为修改或删除本质上并没有失去之前的文件,只不过文件状态引用文件内容的版本号变化 或者 取消对文件内容的引用。所以都要先进行add操作,再进行commit。
在我们不小心误删除的文件的情况下,可以采取命令将存储区域中的文件恢复到工作区,默认恢复的版本是当前最近提交的那一次版本。
恢复文件命令:git restore 文件名
但是如果把删除的操作已经提交过了,
这个时候继续用恢复文件的命令就不好使了,因为默认恢复的版本是当前最近提交的那一次版本,那一次版本中已经没有a.txt文件了!
这个时候就需要把当前版本库重置到之前一次提交去;或者使用撤回指定提交版本的命令。
将当前版本库重置到之前某一次提交:git reset --hard 提交版本号
这样就把当前库所有文件都重置到之前提交版本时的状态了。
但是这个时候发现我们不能看到全部版本信息了,因为git log
只能查看当前HEAD指针所在版本及之前的版本。
查看所有文件提交版本信息(包括被删除的):git reflog -v
撤回指定提交版本:git revert 需要被撤回的提交版本号
创建新分支:git branch 分支名称
注意:必须有过提交操作,才能创建分支,不然空项目没有办法创建分支。底层原因是因为没有任何提交操作,master文件
还没有创建,HEAD索引指向的master为空。
查看所有分支:git branch -v
其中*
表示当前所处分支
切换分支:git checkout 要切换的分支
创建分支并切换:git checkout -b 分支名称
当然创建分支和切换分支两个命令可以合二为一
删除分支:git branch -d 分支名称
合并其他分支到当前分支(需先切换到当前分支):git merge 其他分支名称
这个时候没有冲突就会合并成功,如果有冲突的话,则会显示出来
这个时候我们打开冲突文件,冲突文件的文件内容就会显示比对操作
我们需要靠自己判断一下,更正我们最后需要的结果后保存就行!
然后我们把修改后我们需要的最后结果的文件,当做全新的文件做一次提交就解决冲突了。
git log
命令也可以后跟版本号查看某一次提交的之前全部历史:git log 版本号
给某一提交版本加标签:git tag 标签名称 提交版本号
因为版本号太长了,如果需要经常是用这个提交的版本号,就会很麻烦。所以需要给当前提交版本增加标签,可以理解成起一个别名,以后使用的时候直接使用别名来定位到指定版本号。
查看全部标签:git tag
删除标签:git tag -d 标签名
加了标签后,查看 某一次提交的之前全部历史 所使用的提交版本号就可以用别名替代了:
注意:① 标签不能重复!② 任何需要版本号的地方都可以使用对应标签来代替!
有对应远程仓库的本地仓库,在config文件里有一栏配置remote,配置了远程仓库的地址,并且起了一个别名(origin),可以用别名来代替那一串url。
下面的操作本质都是再修改 config文件 里的 remote配置项:
git remote add origin 远程仓库url
git remote remove
git remote rename 新名字
下面的操作是关于本地与远程仓库的互动:
本地推送到远程仓库:git push 别名(origin)
注意:首先必须要在本地提交完毕,才能往远程仓库推送!
如果配置的是SSH的url,则需要安全认证功能,生成安全证书:ssh-keygen -t rsa -C远程仓库sshurl
我们找到生成的.ssh
安全认证文件夹,里面有id_rsa.pub
文件,包含了我们安全认证的内容。我们复制这个文件里的公钥,添加到GitHub中
远程仓库有变动,把变动拉取到本地:git pull 别名(origin)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。