git相关

--问题:git commit后默认进入vim窗口,编辑完注释后如何提交呢?也就是如何退出vim?git

  方法:先按ESC(退出编辑模式),而后输入 :wq! 就ok了,若是不想提交想取消了怎么办呢,输入:q!(退出,但不保存,至关于取消了)github

 

--git经常使用命令:vim

  git init  (初始化版本库)服务器

  git config --global user.name "..."  (配置全局用户信息,就是告诉git你是谁)svn

  git config --global user.email "..."  (配置全局用户信息,就是告诉git你是谁)url

  git add "fileName" (commit以前一个一个添加要提交的文件)spa

  git add .  (commit以前添加所有要提交的文件)rem

  git commit  (提交到仓库,会进入vim,参考最上面的问题)it

  git commit -m "..."  (不进入vim,直接输入本次注释并提交)io

  git commit -a -m "..."  (git add和commit的合并,但新建立的文件不行,仍是得用add命令添加)

  git log  (列出因此提交记录,最上面是最新的提交)

  git status  (当前仓库的状态,好比会列出修改了哪些文件)

git log -p   (列出log详细信息)
git log tag/commitID..tag/commitID    (查看指定版本区间的记录)
git log tag/commitID..    (查看指定版本以后的因此记录)
git log -since="2 weeks ago"   (显示最近2周以内的记录)
git log branch1..branch2    (显示在分支1不在分支2的记录)
git branch "newBranchName"    (建立分支)
git branch "newBranchName" "commit id or tagName"    (基于某个版本建立分支)
git checkout "toBranchName"   (切换分支)
git merge "branchName"    (合并分支)(在当前分支merge别人, merge本身至关于没merge,只要有关联能够跨主分支merge)
gitk   (图形界面展现log)
git branch -d "branchName"    (删除已经merge的分支)
git branch -D "name"    (不顾一切删除分支)
git clone "uri"   (克隆一个版本库到当前目录)
git clone "originUri" "destinationPath"    (克隆版本库到指定目录)
git push    (拉去更新,不写远程地址,适用于从远程克隆过来的版本库)
git push "remotePath"    (适用于母体或改变默认remote的拉去)

git show "commit id"/"branchName"/"HEAD"    (查询 某次提交/分支/当前分支头 的详情)
git show HEAD^    (查看head的父母的信息)
git show HEAD^^    (查看head的父母的父母的信息)
git show HEAD~4    (查看head上溯4代的信息)
git show HEAD^1    (由于merge可能会产生双父母,查看第一个父母,把1改为2就是查看第二个父母)
git tag "newName" "commit id"    (使用tag给某次提交起别名,而后就可使用别名来进行一些操做,如:查看详情,基于该版本建立分支等)

git tag -d <tagname> 删除本地tag

git push origin --delete tag <tagname> 删除远程tag

git push origin [tagname] 推送本地tag到远程

 

git reset HEAD <file>  (撤销add操做,将其还原到1阶段)

git checkout --<fle>  (撤销文件的修改,至关于svn revert)

git reset总结:

  git reset [枚举参数] [要恢复到的版本号]

  枚举参数:--hard:将working tree和index file都撤销到指定版本号

       --mixed:会撤销commit和index file,保留working tree

       --soft:只撤销commit,保留working tree和index file

使用reset配合log或者show来查看版本号,想看更详尽的操做记录可使用reflog(包含撤销步骤都显示出来了)

本地撤销到指定版本后,使用-f强制更新远程代码库:git push -f origin [branchName]

 

 

git grep "keyWord"    (在全部历史记录中搜索包含keyword的行)
git grep "keyWord" "tag or commit id"    (在指定版本中搜索包含keyword的行)

git remote -v  (查看远程仓库)

git remote add origin git@github.com:githubUserName/repoName  例如:git remote add origin git@github.com:dreamofei/RepoTest  (将本地新的git仓库于github上新建的远程仓库关联)

 

Git原理:

git维护的代码分红三部分,当前工做目录(记为1:working tree)->index file(记为2,add后的区域)->git仓库(记为3,commit后的区域),所以diff命令比较以下:

  git diff  (查看2到1的变化)

  git diff --cached  (查看3到2的变化)

  git diff HEAD  (查看3到1的变化) 

 

若是遇到本地显示的远程分支与远程服务器上的分支不符,使用git remote update --prune 进行分支列表刷新操做

建立远程分支:如今本地建立分支branch001,而后git push origin branch001,就在远程建立了branch001分支(直接使用下面的命令也能够,至关于提交,第一次会建立)

提交分支数据到远程服务器:git push origin <local_branch_name>:<remote_branch_name>,若是当前在要提交的分支下,能够直接git push

删除远程分支:git push origin :branch001

 

查看远程分支:git branch -r

建立对应远程分支的本地分支:好比远程有分支branch002,那么git branch branch002 origin/branch002,就在本地建立了一个与远程分支对应的本地分支了

查看本地分支所对应的远程分支:git branch -vv

将本地分支和远程分支创建默认push关联:git push --set-upstream origin 远程分支名

 

修改远程仓库地址:git remote set-url origin URL

将本地仓库和远程仓库进行关联:git remote add origin URL

 

基于历史提交建立分支:

 git checkout -b <branch name> <SHA1> 只checkout指定版本: git checkout <SHA1>

相关文章
相关标签/搜索