功能一 提交:1:git init # 初始化,表示即将对当前文件夹进行版本控制2:git status # 查看Git当前状态,如:那些文件被修改过、那些文件还未提交到版本库等。3:git add . # 添加当前目录下所有文件到版本库4:git commit -m "第一次提交" # 提交到版本库,并填写版本说明,以便以后回滚 5:git log # 查看版本库的日志功能二 版本回滚:1:git add # 增加2:git commit -m "..." # 增加到版本库3:git log # 查看版本库的日志4:git reset --hard # 切换到功能一1:git reflog # 查看所有的版本库2:git reset --hard # 切换到功能一突然有bug需要改
解决方案一 stash:1:git add # 增加2:git commit -m "..." # 增加到版本库 3:git log # 查看版本库的日志 # 继续开发,发现之前上线的代码需要修改,把现在的代码保存。1:git stash # 现在开发的代码,保存# 完成功能一,增加到版本库,提交,继续开发之前的功能,发生冲突手动解决冲突1:git stash pop # 将第一个记录从“某个地方”重新拿到工作区(可能有冲突,需手动解决)2:git add . # 增加到版本库3:git commit -m "..." # 增加到版本库,提交stash 用法:git stash # 将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态git stash list # 查看“某个地方”存储的所有记录git stash clear # 清空“某个地方”git stash pop # 将第一个记录从“某个地方”重新拿到工作区(可能有冲突)git stash apply # 编号,将指定编号记录从“某个地方”重新拿到工作区(可能有冲突) git stash drop # 编号 ,删除指定编号的记录 解决bag方法二:(分支)1:git branch dev # 创建dev分支 2:git branch -d dev # 删除分支 3:git checkout dev # 切换分支 4:git merge dev # 分支合并
修复Bug流程:git branch dev # 创建dev分支 git checkout dev # 切换分支# 写代码git add . # 增加到版本库git commit -m 'xxx' # 提交,不合并到master# 切换mastergit checkout master # 切换master git branch bug # 创建bug分支 git chekcout bug # 切换到bug分支# 修复bug git add . # 增加到版本库git commit -m '紧急修复bug' # 提交# 切换master分支git checkout master # 切换master git merge bug # 合并分支# 删除bug分支git branch -d bug # 删除bug分支 # 切换dev分支git checkout dev # 继续开发
git 全局配置
t config --global user.name "fenglepeng"
git config --global user.email "fenglepeng@163.com"
克隆一个新的仓库
git clone https://github.com/flepeng/flepeng.github.io.git
cd flepeng.github.io
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
Username for 'https://github.com': # 输入GitHub用户名
Password for 'https://flp@github.com': # 输入GitHub密码
将一个本地文件夹推送到仓库
cd existing_folder
git init
git remote add origin https://github.com/flepeng/flepeng.github.io.git
git add .
git commit -m "Initial commit"
git push -u origin master
将一个本地仓库重命名之后推送到新的仓库
cd existing_repo
git remote rename origin old-origin
git remote add origin https://github.com/flepeng/flepeng.github.io.git
git push -u origin --all
git push -u origin --tags
另一种拉取策略
另一种拉取策略:git init git remote add origin https://github.com/flp/test.gitgit fetch origin master git merge origin/master 提交远程代码git pull origin master git fetch origin master
强行push
# 如果本地和远程的库属于两个库,而你强行管理上之后,这时你无论 push 和 pull 都会报错
# ‘fatal: refusing to merge unrelated histories’此时需要
git pull origin master --allow-unrelated-histories
# 此时,两个库的文件会并存,之后就可以处理了,或者你可以使用
$ git push -u origin master -f
# 强制提交,但是会丢失远程的代码,慎用
分支(branch)操作相关命令
$ git branch # 查看本地分支
$ git branch -r # 查看远程分支
$ git branch [name] # 创建本地分支,注意新分支创建后不会自动切换为当前分支
$ git checkout [name] # 切换分支
$ git checkout -b [name] # 创建新分支并立即切换到新分支
$ git branch -d [name] # 删除分支,-d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
$ git merge [name] # 合并分支,将名称为[name]的分支与当前分支合并
$ git push origin [name] # 创建远程分支(本地分支push到远程)
$ git push origin :heads/[name] 或 $ git push origin :[name] # 删除远程分支$ git push -u origin dev # 加了参数-u后,以后即可直接用git push 代替git push origin master
$ git push origin # 将当前分支推送到origin主机的对应分支。
$ git push # 如果当前分支只有一个追踪分支,那么主机名都可以省略。
远程提交,不用输入用户名密码
# 第一步, --global 为所有的git 都设置使用下次输入的账号密码,不推荐使用此参数
git config --global credential.helper store# 第二步,执行这步会让你输入用户名密码,后面再执行这条命令就都不用在输入了
git pull
原理:会在 用户根目录下产生如下两个文件,.gitconfig (记录用户名信息)和 .git-credentials(用户名密码) 用以记录当前操作用户,文件内容就是公钥信息。
问题解析
error: failed to push some refs to 'https://github.com/xxxx.git'
问题展示:
解决办法:
1: 进行push前先将远程仓库pull到本地仓库
$ git pull origin master #git pull --rebase origin master
$ git push -u origin master2: 强制push本地仓库到远程 (这种情况不会进行merge, 强制push后远程文件可能会丢失 不建议使用此方法)
$ git push -u origin master -f3: 避开解决冲突, 将本地文件暂时提交到远程新建的分支中
$ git branch [name]
# 创建完branch后, 再进行push
$ git push -u origin [name]
error: src refspec master does not match any
问题解析:
引起该错误的原因是,目录中没有文件,空目录是不能提交上去的
解决方法
git add README
git commit -m 'first commit'
git push origin master
GIT刷新忽略文件.gitignore
# 1、重置所有缓存(注意后面有个.)
git rm -r --cached .# 2、重新添加(注意后面有个.)
git add .# 3、提交
git commit -m ".gitignore is now working"