以下是我学习git过程中记录的一些笔记,如果是初学者,我还是建议廖雪峰老师的网站,学习起来比较简单
install
我用的是ubuntu,所以以ubuntu为例,运行如下命令:
sudo apt install git
command
初始化
在你所需要git管理的文件夹下,运行如下命令
git init
实际运用过程中,这个我基本不用,因为我需要版本管理的文件我都会同步到github或者gitee上,所以我一般是在网上先建立代码仓库,然后clone下来,就在clone下来的这个文件夹里操作就可以了
身份说明
运行如下命令:
git config --global user.email "you@xxx.com"
git config --global user.name "you name"
提交文件
git add <file name>
git commit -m "提交说明"
这里我的个人理解是这样的,第一条命令,我们把修改过的文件提交到缓冲区,就好比我们把作业交到了课代表处,提交到这,我们如果还不满意,还能继续修改,再提交,第二条命令就是课代表把这个文件提交到老师处,并对这一次提交的东西做了一个说明,提交到这,你所修改的文件就被保存下来了,如果你后悔了,想回到之前的那个状态,一种是你手动改回去,然后重新交作业,另外一种就是借助时光机了。
仓库状态
git status
修改的具体内容
git diff
修改日志
git log
退回版本
git reset --hard HEAD^^
这就是上文中的时光机,我们可以通过这条命令退回到之前的状态下,这里HEAD是贷前版本的关键字,符号^有几个就代表回退几次,如果回退的版本比较久远,可以写成HEAD~x,用x来代表回退几次。
git reset --hard 版本号
我们在执行命令的这个终端还未关闭之前,可以这样退回,版本号不用写全,但是要让git能定位到唯一的版本位置
记录操作命令
git reflog
可以用来查找没有记住的版本号
撤销修改
git checkout -- <file name>
版本提交后不行,把这个文件撤销到最近的一个状态
从版本库删除文件
git rm <file name>
git commit -m "说明"
这个过程就相当于把交到课代表那儿的作业又拿了回来,这两条命令都要执行
ssh-key
ssh-keygen -t rsa -C "邮箱地址"
可以把这个密钥添加到代码托管平台,加入.ssh/id_rsa.pub这个文件的内容
关联远程仓库
git remote add <远程仓库名字> https://xxxxxx
git push -u <远程仓库名字> master
关联之后就可将本地的文件提交到远程仓库,就好比老师把你的作业放到了一个你存放作业的柜子里。但同上所说,实际运用中,我们都是先创建远程仓库,提交的时候git push就好了。
新分支
git checkout -b xxx
git branch xxx // 创建一个新的分支
git checkout xxx // 切换到分支xxx
以上第一条命令,就相当于二三行命令一起执行的效果,创建一个新的分支并切换。
合并分支
git merge xxx
git merge --no-ff -m "xxxxxxx" xxxx // 合并分支时禁用Fast forward
将指定的分支合并到当前分支中
删除指定的分支
git branch -d xxx
储存工作现场
git stash
查看远程仓库信息
git remote [-v]更详细
抓取代码
git pull // 把最新的提交抓取下来本地
// 如果报错,是本地分支和远程分支的链接关系未建立
git branch --set-upstream-to <branch name> origin/<origin name>
整理分支
git rebase // 将本地push的分支整理成直线
标签
git tag <tagname>
git tag -a <tagname> -m "xxx" //指定标签信息
git tag // 查看所有标签
git show <tag name> // 查看某个标签的说明
git push origin <tag name> // 推送一个本地标签
git push origin --tags // 推送全部从未推动的标签
git tag -d <tag name> // 删除一个本地标签
git push orgin :refs/tags/<tagname> // 删除远程标签
跳过提交
我们有一些敏感信息的文件不能提交的时候,我们可以在文件夹里新建一个.gitignore文件,把不用提交的文件的文件名写入,这样提交的时候就会自动跳过我们写入的文件。
目前我应该还比较小白,我用到的git的功能不多,git clone 一下代码,提交,还没有创建分支这些操作,熟能生巧,还是多多练习吧。