检测电脑是否存在ssh:
ls -al ~/.ssh
生成ssh:
ssh-keygen -t rsa -C "your_email@example.com"
git常用的命令:
分支:
查看本地分支:git branch / git branch -v
查看远程分支:git branch -a
查看当前详细分支信息(可看到当前分支与对应的远程追踪分支): git branch -vv
创建分支:git branch <name>
提交该分支到远程仓库:git push origin dev
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name> (合并之后没有冲突的话记得push一遍)
删除分支:git branch -d <name>
强制删除未合并的分支:git branch -D <name>;
创建远程origin的dev分支到本地:git checkout -b dev origin/dev(创建之后还需要进行链接)
建立本地分支和远程分支的关联,使用git branch --set-upstream-to=origin/master master;
取消对远端master的跟踪: git branch --unset-upstream master
本地仓库:
删除工作区的文件:rm <dom_name>
删除版本库中的文件:git rm <dom_name>
提交版本库:git commit -m "描述";
查看库中所有的文件: git ls-files;
查看库中所有的文件夹: dir
增加本地仓库的文件夹: git add 文件夹名
远程仓库:
本地库提交到远程git仓库:git push -u origin master(本地分支名):
拉取远程库的文件到本地库: git pull origin master;
关联远程git库:
git init
git remote add origin git@github.com:GitHub账号/learngit.git:关联远程git库;
提交
git add .
git commit -m '初始化项目'
git push -u origin master
取消本地目录下关联的远程库:git remote remove origin
修改远程仓库地址:git remote rm origin >git remote add origin [url]
查看你当前项目的远程git地址:git remote -v;
查看远程的所有分支列表:git branch -a
删除远程仓库的文件夹:
删除target文件夹 :$ git rm -r --cached target
提交,添加操作说明 :$ git commit -m '删除了target'
将本次更改更新到github项目上去 :$ git push -u origin master
创建流程:
查看版本库的地址:pwd
使用git在本地创建一个项目的过程
$ makdir ~/hello //创建一个项目hello
$ cd ~/hello //打开这个项目
$ git init //初始化
$ touch README
$ git add README //更新README文件
$ git commit -m 'first commit' //提交更新,并注释信息“first commit”
$ git remote add origin git@github.com:gitName/hello-world.git //连接远程github项目
$ git push -u origin master //将本地项目更新到github项目上去
版本控制:
撤销操作:
撤销工作区(未add之前的修改)修改:git checkout -- readme.txt
撤销工作区所有的修改:git checkout . ;
把add之后的文件退回工作区,保留修改(单个文件):git reset HEAD readme.txt;
把add之后的文件退回工作区,保留修改(多个文件):git reset HEAD .;
把commit之后的文件退回暂存区,保留修改(重新提交):git commit --amend;
把pull之后的版本退回pull之前当前分支所在的commit位置,保留commit的文件:
通过git reflog master 查看master分支的历史变动记录,找到commit时的id,
通过git reset --hard <id> 来进行恢复;git reset --hard master@{1}
版本操作:
回退到历史版本;git reset --hard HEAD^ 所以写成HEAD~100。
指定回到未来的某个版本:git reset --hard 3628164
没有commit并被 git reset --hard 清掉的本地改动是无法通过git恢复的
储藏操作:
“储藏”当前工作现场:git stash;
如果想要应用其中一个更旧的储藏,可以通过名字指定它,像这样:git stash apply stash@{2}
。 》
如果不指定一个储藏,Git 认为指定的是最近的储藏:git stash apply
;
查看“储藏”的工作区:git stash list;
删除“储藏”的工作区(删除最近那一次):git stash drop;
恢复“储藏”的工作区并删除stash中的内容:git stash pop; 恢复指点的stash:git stash apply stash@{n};
标签:
建立标签:git tag 《name》;
查看所有标签:git tag;
查找所有历史的commit id:git log --pretty=oneline --abbrev-commit
给对应commit打标签:git tag <name> commit_id;
查看标签信息:git show <tagname>
创建带有说明的标签,用-a指定标签名,-m指定说明文字:$ git tag -a v0.1 -m "version 0.1 released" 3628164
删除本地标签:git tag -d tag_name;
推送指定标签到远程:git push origin tag_name;
推送所有标签到远程:git push origin --tags;
删除远程标签:git push origin :refs/tags/tag_neme;
变基:
普通变基的指令是这样的: git rebase master
移植分支的指令是这样的:git rebase master --onto 另一分支名
继续变基指令:
git rebase --continue
在rebase过程中出现报错,需要解决完冲突后
add到暂存区之后再继续变基操作;
注意:
1.创建分支的时候工作区必须是干净的;(“储藏”当前工作现场,从而得到干净工作区创建分支解决bug)
2.如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name(git branch --set-upstream-to=origin/master master)。
3.在GitHub上配置了对应电脑的SSHkey后,对应电脑上的git才能推送到远程仓库;
4.本地库可以关联多个远程库,但是每个远程库的名称必须不一致;
5.在多人协助开发时,每个开发人员在推送自己的最新版本时,都需要确保当前版本是最新的,所以就需要先获取最新版本,也就是说需要从服务器拉取最新版本到本地。需要使用 git pull命令;然后再次使用 git push 命令推送至服务器。
6.其中Updated upstream 和=====之间的内容就是pull下来的内容,====和stashed changes之间的内容就是本地修改的内容。