Git版本控制
-
集中式和分布式版本控制
-
git分布式,svn集中式
-
查看版本
1
git --version
-
配置作者信息
全局设置
1
2git congig --global user.name "your name"
git congig --global user.email "your email"当前设置
1
2git congig user.name "your name"
git congig user.email "your email" -
git初始化,建立新仓库
1
git init
-
克隆远端项目到本地
1
git clone 项目网址
-
添加文件
1
git add 文件名
-
查看状态
1
git status
-
提交到仓库
1
git commit -m "test1" //提交并备注test1
-
修改后再查看状态会有显示修改的文件
-
添加所有文件
1
git addd .
-
忽略添加文件方法,新建.gitignore文件,编辑.gitignore文件写上忽略文件名,示范格式
1
2
3*.txt
!a.txt //忽略所有.txt文件,除了a.txt
/vendor/ 忽略vendor文件夹 -
git不跟踪空文件夹
-
移除并删除本地文件
1
git rm 文件名
-
只移除不删除本地文件
1
git rm --cached 文件名
-
查看仓库里有哪些文件
1
ls或git ls-files
-
仓库里的文件改名
1
git mv 当前文件名 修改的文件名
-
查看提交日志
1
git log
-
修改日志提交描述或者提交到上次版本并添加描述
1
git commit --amend
-
添加到暂存区未提交到仓库,从暂存区撤出
1
git rm --cached 文件名
-
提交到仓库,更改文件后添加到暂存区,从暂存区撤出
1
git reset HEAD 文件名
-
恢复到文件上次状态
1
git checkout -- 文件名
-
退回上一个版本
1
git reset --hard HEAD^
-
退回上两个版本
1
git reset --hard HEAD^^
-
退回上20个版本
1
git reset --hard HEAD~20
-
使用git log查看版本提交ID,退回到那个版本,输入退回ID
1
git reset --hard 52602b0b04b57b33310fa256707518b126d2648c //后面是查看到的ID
-
回退到某一个文件之后,又需要返回到最近更新的某个版本,使用git log查看不到提交信息,可以使用git reflog命令
1
2git reflog
git reset --har d2716ff6 -
设置命令快捷键方法,编辑~/.gitconfig文件,添加内容
1
2[alias]
快捷键 = 命令 -
查看分支
1
git branch
-
创建分支
1
git branch 分支名
-
切换分支
1
git checkout 分支名
-
创建并切换到分支
1
git checkout -b 分支名
-
合并到当前分支
1
git merge 分支名
-
删除分支
1
git branch -d 分支名
-
冲突问题:从主分支分出几个分支,文件几个个分支都改了,合并时,第一次合并不会有问题,后面分支再合并时就会冲突,并会修改冲突文件展示哪些有冲突,命令窗口会显示哪些文件有冲突,解决办法:找到冲突文件,修改好再重新添加提交
-
显示已合并的分支
1
git branch --merged
-
显示未合并的分支
1
git branch --no-merged
-
创建分支都是从当前所在分支提交点创建的,也就是复制一份当前分支的文件
-
未合并分支使用-d参数会提示未合并,删不掉,要强制删除
1
git branch -D 分支名
-
添加临时存储区
1
git stash
-
查看临时存储区
1
git stash list
-
从临时存储恢复
1
git stash apply
-
删除临时存储
1
git stash drop 临时存储区名
-
恢复并删除临时存储
1
git stash pop
-
文件已经提交过,目前修改好在暂存区未提交,要切换分支会提示未提交,可以添加临时存储区,之后就可以切换分支了,后面再回来时,可以从临时存储区直接恢复
-
添加标签,如v1.0
1
git tag v1.0
-
查看标签
1
git tag
-
生成zip发布压缩包
1
git archieve master --prefix='文件夹名' --forma=zip > 文件名.zip //将master分支的文件放在文件夹并打包成zip文件
-
从一个分支生成另一个分支,生成的分支改变并提交,而原分支未改变提交,在原分支合并生成的分支,只是将指针移到修改后的分支上,不会产生合并记录,如果两个分支都改变提交了,在合并时,会显示合并记录或者产生冲突,要想不产生合并记录,生成的分支要rebase(replace base),再合并
1
git rebase master
-
生成密钥
1
ssh-keygen -t rsa
生成密钥文件再用户目录的.ssh文件夹里面,将公钥复制添加到GitHub,就可以通过ssh,无需输入GitHub账号密码进入连接传输了
-
从远端克隆的项目自动与远程仓库关联,推送到远程仓库
1
git push
-
有时git与远端连接不上,可以删除~/.ssh/know_hosts文件里的内容
-
未克隆远程仓库,与远程仓库关联
1
git remote add origin 远程仓库地址 //origin是远程仓库别名
-
查看已关联的远程仓库
1
git remote -v
-
推送数据到远程仓库的master分支
1
git remote -u origin master
-
推送数据包括所有分支到远端
1
git push -all origin
-
显示所有分支包括远程分支
1
git branch -a
-
在本地创建远端没有的分支ask,推送到远端,提示fetal,运行
1
git push --set-upstream origin ask
-
直接克隆远端到本地发现只克隆了主分支,要获得其他分支到本地
1
git pull orgin ask:ask //克隆远端ask分支到本地的ask分支里,前面的ask分支是远端ask分支,后面是本地分支名,可以取不同名字
-
git push是将本地当前所在分支推送到远端
-
远端master更新了,本地其他分支也更新了,要合并本地分支到远端主分支并推送到远端,在主分支执行git pull更新到最新版本,再切换到要合并的分支,rebase,再合并再推送
-
删除远程分支
1
git push origin --delete ask