- 安装git
- 初始化仓库
- 提交相关
- 撤销相关
- 远程推送
- 分支相关
- 其他
- 遇到的错误
- github的克隆上传
此文章只是对命令的一个统计,起备忘和复习git只是的作用,不建议从没接触过git的同学通过它来学习git。
git中的术语解释:
- repository:仓库也叫版本库
- stage:暂存区,add后会存到暂存区,commit后提交到版本库
linux下安装git
第一种方法:yum install git-core 安装的版本比较老
第二种方法:(我是linux centos)
卸载老版本
yum remove git
安装依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc
yum instalgcc perl-ExtUtils-MakeMaker
执行安装
wget https://github.com/git/git/archive/v2.2.1.tar.gz tar -zxvf v2.2.1
cd git-2.2.1
make configure ./configure --prefix=/usr/local/git --with-iconv=/usr/local/libiconv
make
make install
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
source /etc/bashrc
初始化一个仓库
先新建一个文件夹 mkdir test
进入该文件夹执行git init命令,就能初始化仓库了
提交相关
添加文件到仓库
git add <file>
提交代码
git commit -m "说明"
记录提交历史
git log
记录着操作命令,也就是命令历史
git reflog
把工作区的内容添加到暂存区
git add <文件>
把暂存区的内容提交到当前分支
git commit -m "提交说明"
将现有工作区的隐藏起来
git stash
恢复隐藏的工作区
git stash pop
查看隐藏的工作区的内容
git stash list
指定恢复哪一个隐藏的工作区内容
git stash apply stash@{0}
提交时忽略指定文件
在当前仓库目录下新建.gitignore文件,在其中写要忽略的文件名即可
撤销相关
将工作区的修改撤销掉
git checkout -- a.txt (注意:--很重要,如果没有--,这个命令就变成了切换分支)
这个撤销会有两种效果
第一种是修改后没有放到暂存区,那么撤销后会回到和版本库一样的状态
第二种是修改后放入了暂存区,又做了修改,那么撤销后会回到和暂存区一样的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
将暂存区的修改撤销掉
git reset HEAD file
代码回退 (提交一次就有一个版本,HEAD表示当前版本,HEAD^表示上一个版本,HEAD~10表示前第100个版本)
git reset --hard HEAD^ //回退到上一个版本
代码回退之后还可以前进,只要知道前一个版本的版本号
git reset --hard 3628164 //版本号不用写全,前几位即可
如果删除了文件
想让版本库里的文件也删掉
第一步:git rm -- a.txt
第二步:git commit -m ""
想让工作区删除的文件恢复
git checkout -- a.txt
远程库推送相关
关联远程库
git remote add origin git@github.com:mmcLine/firstGit.git
第一次推送信息
git push -u origin master
不是第一次推送信息
git push origin master
查看远程库的信息
git remote
git remote -v 更详细的信息
推送远程仓库有冲突的处理
git push origin dev 发现失败,有冲突
git pull 把最新的提交抓下来(git pull如果失败运行 git branch --set-upstream dev origin/dev 再git pull)
在合并,如果有冲突就手动解决后在提交
分支相关
创建分支
git branch <name>
创建并切换分支
git checkout -b dev
查看当前分支
git branch
把dev分支合并到master上
git merge dev
删除分支
git branch -d dev
有冲突的时候先手动解决冲突在提交
查看提交的分支表
git log --graph
禁用Fast forward的合并,禁用后每次都会有新的提交
git merge --no-ff -m "merge with no-ff" dev
强行删除分支
git branch -D <name>
其他:
设置git操作命令的别名
git config --global alias.st status //将git status 设置别名为git st
要删除别名的设置
配置文件在.git里面的config里面,或者对应用户的家目录里的.gitconfig删除别名就在文件里删除别名就好了
二,遇到的错误
- 添加远程配置时出现fatal: 远程 origin 已经存在。提示
处理方法:git remote rm origin
- 从github克隆时报这个错误while accessing https://github.com/mmcLine/gitskills.git/info/refs
git的版本太低了,我之前是yum安装了,我卸载了用源码安装就好了
三,github相关操作
- 从github下载代码
git clone git://github.com/mmcLine/firstGit.git
备注:也可使用git clone https://github.com/mmcLine/firstGit.git的格式
mmcLine和firstGit分别对应图中的这两个参数,修改成自己的就行了
2,推送代码到github
修改了代码之后:
git add test.txt
git commit -m "test"
git push -u origin master 若是第一次推送使用此命令
git push origin master 否则使用此推送命令