git命令学习
安装:https://git-scm.com/downloads
配置:
1.git config --global user.name ""
git config --global user.email ""
2.基础命令:
mkdir name 新建文件夹
touch name 新建文件
cd name 进入目录
cd ../ 返回上一级目录
pwd 查看当前目录路径
git init 当前目录变为git可管理的仓库
cat readme.txt 查看文件内容
git命令:
git add fileName1 fileName2 工作区文件添加到暂存区
git commit -m "注释" 暂存区文件添加至本地仓库
git status 查看工作区文件状态
版本控制:
查看历史记录:
git log
git log --pretty=oneline
版本回退:
git reset --hard HEAD^
git reset --hard commit_id head指向版本号
git reflog 记录每一次的命令
管理修改
git diff 查看工作区文件修改
git diff HEAD -- readme.txt 查看工作区和版本库里 最新版本的区别
撤销修改:
git checkout -- readme.txt 撤销工作区的修改,将文件回到最近以此add或者commit的状态
1.工作区修改未添加到暂存区:撤销修改,工作区文件回到和版本库里的状态一致;
2.工作区文件已添加到暂存区:又做了修改,则将文件恢复到add暂存区的状态
修改已提交到暂存区,撤销暂存区的修改
git reset HEAD -- filename 撤销暂存区的修改,回退到工作区,
git checkout -- filename 工作区文件回退到未修改状态
远程仓库配置:
1.创建ssh key:
$ ssh-keygen -t rsa -C "965045557@qq.com" 创建公钥
码云公钥配置,远程仓库识别计算机身份;公司电脑和家里个人电脑ssh都进行配置,就可以全部识别身份
2.远程仓库新建仓库
本地仓库运行
关联远程仓库  git remote add origin git@github.com:michaelliao/learngit.git
第一次推送内容到远程仓库时 需要携带 -u 参数
正常开发新建仓库操作:
远程仓库新建项目仓库;
本地运行git clone https:// 克隆仓库到本地
git clone
分支管理:
创建分支 git branch dev
切换分支 git checkout dev
创建并切换分支 git checkout -b dev
查看本地分支 git branch
bug修复:
情景:.master分支有bug需要修复,本地工作尚未完成;
1.本地运行 git stash 保存本地工作
2.切换到master分支: git checkout master
3.master分支上处理bug,git add filename; git commit -m '';
4.切换到开发分支:git branch dev
5.开发分支上 复制 master分支的修改到dev分支; git cherry-pick issue_id
6.git stash pop 恢复保存的现场;实现master分支修改同步到dev,并且 继续dev分支的开发工作;
开发新的功能,最好是新建一个分支,完成后再合并分支,删除新建分支
如果新分支建立完毕,开发结束,不需要此次开发的功能了,并且需要删除该分支。但是分支尚未 commit
则 git branch -D feature-vulcan 强行删除分支
多人协作:
向远程仓库推送分支:
git push origin master :master分支应时刻保持同步
git push origin dev: 开发分支,需要同事能够看到自己的代码,也需要时刻同步
git clone 默认只 克隆 master 分支
git checkout -b dev origin/dev
就可以在dev分支上进行修改,然后push到dev分支;
git push origin dev
如果在clone 代码到本地 => push 代码到远程 的期间,dev分支有改动,则需要:
git pull
设置本地dev分支 与 远程 origin/dev 的链接:
git branch --set-upstream-to=origin/dev dev
因此,多人协作的工作模式通常是这样:
- 
首先,可以试图用
git push origin <branch-name>推送自己的修改; - 
如果推送失败,则因为远程分支比你的本地更新,需要先用
git pull试图合并; - 
如果合并有冲突,则解决冲突,并在本地提交;
 - 
没有冲突或者解决掉冲突后,再用
git push origin <branch-name>推送就能成功! 
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。
小结
- 
查看远程库信息,使用
git remote -v; - 
本地新建的分支如果不推送到远程,对其他人就是不可见的;
 - 
从本地推送分支,使用
git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交; - 
在本地创建和远程分支对应的分支,使用
git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致; - 
建立本地分支和远程分支的关联,使用
git branch --set-upstream branch-name origin/branch-name; - 
从远程抓取分支,使用
git pull,如果有冲突,要先处理冲突。 
默认的,从远程仓库clone 仅克隆 master分支;
如果要在dev分支上进行开发,则:
git checkout -b dev origin/dev
开发结束就可以push到dev分支:
git push origin dev
如果远程仓库的dev分支有新的提交,应为有冲突,本地push会报错;
通过 git pull remote dev 把远程dev分支拉取到本地,在本地合并;
拉取过程报错,因为远程的dev 分支和本地的dev分支没有建立联系;
git branch --set-upstream-to=origin/dev dev
git pull
手动解决冲突,在 add ---------------commit -------------push 提交远程仓库
git stash 保存现场
git stash list 查看保存现场记录
git cherry-pick commit_id 提交_id的修改复制到当前分支
git stash pop 恢复保存的现场,并删除stash记录
git stash apply stash@{n} 恢复指定的现场
git stash drop 删除保存的现场
1.git add 文件名 ---------------------- 工作区文件提交到暂存区
2.git commit -m "注释" -------------- 暂存区内容提交到本地仓库
3.git status ---------------------------- 查看工作区 或 暂存区 文件状态, 列出改动过的文件
4.git log --------------------------------- 查看提交记录
git log --pretty=oneline
git reflog
git branch
git branch dev
git checkout dev
git checkout -b dev
git reset --hard HEAD^
git reset --hard HEAD commit_id
git reset --hard HEAD~5
                    
                
                
            
        
浙公网安备 33010602011771号