初始化 Git 仓库进入要作为为仓库的目录中,使用 git init
命令。
添加文件到Git仓库,分两步:
- 使用命令
git add <file>
,注意,可反复多次使用,添加多个需要提交的文件; - 使用命令
git commit -m <提交说明>
,完成。
可以用 git status
查看工作区状态
如果通过 git status
查看到文件被修改过,可以用 git diff
查看修改内容
git log
可以查看提交历史,git log --pretty=oneline
可以查看简略的提交历史
tingshuo@LAPTOP-KIJFOIBO:~/learngit$ git log --pretty=oneline
234aac68f318a8373a546a976725252e1635ad28 (HEAD -> master) 添加 GPL
94443bff3384487b97e4d0af54aec88130f543c8 添加了 distrbuted
a08cd779d1bc1da4e70625f5543482037eab708e 添加了两行内容
其中前面的一长串是版本号
,版本号后面的是提交说明
。
知道了版本号我们就使用git reset --hard 版本号
命令,可以回滚至任意版本,
tingshuo@LAPTOP-KIJFOIBO:~/learngit$ git reset --hard 234aac
HEAD is now at 234aac6 添加 GPL
HEAD
指的是当前版本,
还可以用 gitreflog
查看历史命令。
GIT 的名词解释:
-
工作区(Working Directory)
就是我们在电脑中正常的目录。 -
版本库(Repository)
image
工作区有一个隐藏目录.git
,这就Git的版本库。
其中版本库中的stage
是暂存区,还有分支master
git add
命令其实是把修改的文件添加导暂存区;
git commit
命令把暂存区的所有内容提交到当期分支;
git add
命令其实就是把工作区文件的修改放到暂存区(Stage),然后,执行git commit
命令暂存区的所有修改提交到分支。
Git跟踪并管理的是修改,而非文件,每次修改,如果不用git add
到暂存区。那么使用 commit 提交时就不会把修改添加到分支 master
中
如果你修改了文件,想放弃修改时,可以使用放弃工作区修改命令:git checkout -- 文件名
如果你不但改了,还提交到了 暂存区时,想要放弃修改,你需要执行两个命令,首先要放弃暂存区修改git reset HEAD 文件名
,然后放弃工作区修改:git checkout -- 文件名
git checkout
命令的作用其实是:用版本库里的版本替换工作区的版本。
git rm 文件名
从工作区删除文件,并将删除修改提交到暂存区,其后可以用 git commit -m "提交说明"
将修改提交到仓库。
如果是用文件管理器或者Liunx命令误删了,可以用 git checkout -- 文件名
从远程仓库恢复
远程仓库
创建 SSH Key 命令(Linux在Shell中输入 Windows 在 Git Bash 中输入):
ssh-keygen -t rsa -C "xxx@xxx.com"
用自己的邮箱, 一路按回车使用默认值就可以了,会在用户家目录下生成 .ssh
目录,目录下有 id_rsa
(密钥),id_rsa.pub
(公钥),连个文件。
登录 Gitee 在个人设置中的SSH设置添加公钥,名字随便命名,将刚刚生成的 id_rsa.pub
里的文本内容输入保存即可。
添加一个远程仓库 git remote <远程仓库名> <远程仓库地址>
, 如 git remote add gitee git@gitee.com:tingshuo123/learngit.git
, 远程仓库可以有多个,名字不相同即可。
提交到远程仓库git push gitee master
如果提交时发生以下错误:
是文件冲突了,可以先拉下来合并
git pull origin master
再上传
git push gitee master
这样会保留冲突的文件。
也可以用强制推送,只是这样会舍弃远程仓库的冲突文件
git push origin master -f
分支
创建分支并切换到分支:git checkout -b dev
,git checkout
加参数 -b
表示创建。相当于下面两个命令:
创建分支:git branch 分支名
切换分支:git checkout 分支名
查看分支:git branch
,前面带*
号的表示当前分支
合并分支:git merage 分支名
,将指定分支合并到当前分支。
删除分支:git branch -d 分支名
如果Git无法自动合并分支时,看可以手动解决冲突再提交,解决冲突就是把Git合并失败的文件手动编辑成我们需要的内容,然后提交。
查看分支合并图:git log --graph --pretty=oneline --abbrev-commit
分支策略
在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master
分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev
分支上,也就是说,dev
分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev
分支合并到master
上,在master
分支发布1.0版本;
你和你的小伙伴们每个人都在dev
分支上干活,每个人都有自己的分支,时不时地往dev
分支上合并就可以了。
所以团队合作分支因该是这样的:
分支图储存当前工作区:git stash
查看储存的工作区:git stash list
恢复储存的工作区:git stash apply
删除工作区:git stash drop
恢复同时删除工作区:git stash pop
如果有多个,恢复指定工作区
网友评论