安装
sudo apt-get install git
创建仓库
方法1:
mkdir mygit
cd mygit
git init
方法2:
在服务器创建仓库,并克隆到本地
git clone xxxx/mygit.git
cd mygit
文件的基本操作
-
提交代码
git status git add . git commit -m "message"
将add和commit合并:
git commit -a -m "message"
需要注意的是,这里add的只是已经建立过跟踪的文件,对于新增的文件尚未建立跟踪关系,这里不会进行add。
修改提交信息:git commit --amend # 修改commit信息
如果只有这一条命令,则是修改距离最近提交的信息
-
查看历史记录
git log
-
回退历史版本
git reset git reset --hard HEAD^ # 回退到上一版本
git的版本号是用SHA1计算出来的一个16进制数, 在git中,用HEAD表示当前版本,上一个版本是HEAD^, 上上个版本是HEAD^^, 查看历史版本
git reflog
根据版本号回退版本
git reset --hard 3f30f0e
回退版本但却想保留全部修改信息:
git reset --soft <回退版本号>
-
工作区和暂存区处理文件
工作区就是本地一个文件夹,暂存区是本地和服务器的中介,可以理解为本地的一个.git文件目录,暂存文件修改日志,方便用于回退版本
git add操作就是用于将需要提交的文件添加到暂存区,git commit就是将暂存区的所有内容提交到服务器当前分支
-
查看工作区和暂存区的最新版本的区别:
git diff HEAD -- <filename>
-
撤销修改, 让这个文件回到最近一次
git commit
或git add
时的状态。git checkout -- <filename>
-
从暂存区删除文件
git rm <filename>
-
删错恢复, 用暂存区的文件替代工作区的
git checkout -- <filename>
-
分支管理
每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master
分支。HEAD
严格来说不是指向提交,而是指向master
,master
才是指向提交的,所以,HEAD
指向的就是当前分支。
-
创建分支
git branch <name>
-
切换分支
git checkout <name> git checkout -b <name> # 表示创建新的分支并切换到分支内
-
查看分支
git branch # 查看当前分支 git branch -a # 显示所有分支,*表示自己所在的分支
-
合并分支
git merge <name>
-
删除分支
git branch -d <name>
-
解决分支合并冲突
-
两个分支修改的是同一个文件, 必须手动解决冲突
git status # 查看冲突的文件 cat <filename> # 查看冲突文件的内容并进行修改 git add <filename>
git log --graph --pretty=oneline --abbrev-commit # 分支合并情况、分支合并图
-
-
分支策略
master分支是最稳定的,只能用于发布新版本,平时不能在上面进行开发,要在新建的分支上进行开发,比如dev,这时dev是不稳定的,到产品1.0发布时,将dev分支和master分支合并,在master分支上发布1.0版本。
-
查看远程库的信息
git remote git remote -v
-
推送分支
git push origin master
-
抓取分支
git pull
如果git pull报错:没有指定本地分支与远程分支的链接,我们就要手动设置一下
git branch --set-upstream-to=origin/<远程分支名> 本地分支名
-
创建本地分支并建立与主分支的跟踪关系
git chenckout -b <本地分支名> git branch --set-upstream-to=<远程主机名>/<远程分支名> <本地分支名>
-
查看跟踪关系
git branch -vv
-
push 的时候建立追踪关系
git push -u <远程主机名> <本地分支名> # -u参数建立了远程主机名和本地分支名的关系
-