常用Git操作

——————–git——————– 1、简介     1、Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。[1]  Git的读音为/gɪt/。     2、Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。[2]  Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。     2、特点     1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。       2、在自己的机器上根据不同的开发目的,创建分支,修改代码。       3、在单机上自己创建的分支上提交代码。       4、在单机上合并分支。       5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。       6、生成补丁(patch),把补丁发送给主开发者。       7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。       8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。   ——————–git与SVN的对比——————– 1、git是分布式的,SVN不是。     2、git把内容按元数据方式存储,而SVN是按文件。     3、git分支和SVN的分支不同。     4、git的内容完整性要优于SVN。     ——————–git原理分析——————– 1、git主要分为     1、工作区:Workspace       2、暂存区:Index       3、本地仓库:Repository       4、远程仓库:Remote     2、部分操作     1、git add:工作区提交到暂存区。       2、git commit:暂存区提交到本地仓库。       3、git push:本地仓库提交到远程仓库。       4、git fetch:远程仓库提取到本地仓库。       5、git checkout:本地仓库提取到工作区。       6、git pull:远程仓库提取到工作区。     ——————–git常用命令——————– 1、新建代码仓库     1、git init:在当前目录新建一个Git代码库。       2、git init [project-name]:新建一个目录,将其初始化为Git代码库。       3、git clone [url]:下载一个项目和它的整个代码历史。     2、配置     1、Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。       2、git config –list:显示当前的Git配置。       3、git config -e [–global]:编辑Git配置文件。       4、设置提交代码时的用户信息:         1、git config [–global] user.name “[name]”           2、git config [–global] user.email “[email address]”     3、增加/删除文件     1、git add [file1] [file2] —:添加指定文件到缓存区。       2、git add [dir]:添加指定目录到暂存区,包括子目录。       3、git add:添加当前目录的所有文件到暂存区。       4、git rm [file1] [file2] —:删除工作区文件,并且将这次删除放入暂存区。       5、git mv [file-original] [file-renamed]:改名文件,并且将这个改名放入暂存区。   4、代码提交     1、git commit -m [message]:提交暂存区到仓库区。       2、git commit [file1] [file2] — -m [message]:提交暂存区的指定文件到仓库区。       3、git commit -a:提交工作区自上次commit,替代上一次提交。         4、git commit –amend -m [message]:使用一次新的commit,替代上一次提交。         注:如果代码没有任何新变化,则用来改写上一次commit的提交信息。       5、git commit -amend [file1] [file2] —:重做上一次commit,并包括指定文件的新变化。     5、分支     1、git branch:列出所有本地分支       2、git branch -r:列出所有远程分支       3、git branch -a:列出所有本地分支和远程分支       4、git branch [branch-name]:新建一个分支,但依然停留在当前分支       5、git checkout -b [branch]:新建一个分支,并切换到该分支       6、git branch [branch] [commit]:新建一个分支,指向指定commit       7、git push origin [branch]:新建一个远程分支,本地新建然后推送       8、git branch –track [branck] [remote-branch]:新建一个分支,与指定的远程分支建立追踪关系       9、git checkout [branch-name]:切换到指定分支,并更新工作区       10、git checkout -:切换到上一个分支       11、git branch –set-upstream-to [remote-branch]:建立追踪关系,设置当前分支与指定的远程分支之间关联       12、git merge [branch]:合并指定分支到当前分支       13、git cherry-pick [commit]:选择一个commit,合并进当前分支       14、git branch -d [branch-name]:     删除分支       15、删除远程分支         1、git push origin –detele [branch-name]           2、git branch -dr [remote/branch]     6、标签     1、git tag:列出所有tag。       2、git tag [tag]:新建一个tag在当前commit。       3、git tag [tag] [commit]:新建一个tag在指定commit。       4、git tag -d [tag]:删除本地tag。       5、git push origin :refs/tags/[tagName]:删除远程tag。       6、git show [tag]:查看tag信息。       7、git push [remote] [tag]:提交指定tag。       8、git push [remote] –tags:提交所有tag。       9、git checkout -b [branch] [tag]新建一个分支,指向某个tag。     7、查看信息     1、git status:显示有变更的文件。       2、git log:显示当前分支的版本历史。       3、git log –stat:显示commit历史,以及每次commit发送变更的文件。       4、git log -S [keyword]:搜索提交历史,根据关键词。       5、git log [tag] HEAD –pretty=format:%s:显示某个commit之后的所有变动,每个commit占据一行。       6、git log [tag] HEAD –grep feature:显示某个commit之后的所有变动,其“提交说明”必须符合搜索条件。       7、显示某个文件的版本历史,包括文件夹名         1、git log –follow [file]           2、git whatchanged [file]       8、git log -p [file]:显示指定文件相关的每一次diff。       9、git log -5 –pretty –oneline:显示过去5次提交。       10、git shortlog -sn:显示所有提交过的用户,按提交次数排序。       11、git blame [file]:显示指定文件是什么人在什么时间修改过       12、git diff:显示暂存区和工作区的差异。       13、git diff –cached [file]:显示暂存区和上一个commit的差异。       14、git diff HEAD:显示工作区与当前分支最新commit之间的差异。       15、git diff [first-branch] …[second-branch]:显示两次提交之间的差异。       16、git show [commit]:显示某次提交的元数据和内容变化。       17、git show –name-only [commit]:显示某次提交发生变化的文件。       18、git show [commit]:[filename]:显示某次提交时,某个文件的内容。       19、git reflog:显示当前分支的最近几次提交     8、远程同步     1、git fetch [remote]:下载远程仓库的所有变动。       2、git remote -v:显示所有远程仓库。       3、git remote show [remote]:显示某个远程仓库的信息。       4、git remote add [shortname] [url]:增加一个新的远程仓库,并命名。       5、git push [remote] [branch]:上传本地指定分支到远程仓库。       6、git push [remote] –force:强行推送当前分支到远程仓库,即使有冲突。       7、git push [remote] –all:推送所有分支到远程仓库。     9、撤销     1、git checkout [file]:回复暂存区的指定文件到工作区。       2、git checkout [commit] [file]:恢复某个commit的指定文件到暂存区和工作区。       3、git checkout:恢复暂存区的所有文件到工作区。       4、git reset [file]:重置暂存区的指定文件,与上一次commit保持一致,但工作区不变。       5、git reset –hard:重置暂存区与工作区,与上一次commit保持一致。       6、重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变。       7、git reset –keep [commit]:重置当前HEAD为指定commit,但保持暂存区和工作区不变。       8、git revert [commit]:新建一个commit,用来撤销指定commit;后者的所有变化都将被前者抵消,并且应用到当前分支。       9、暂时将未提交的变化移除,稍后再移入:         1、git stash           2、git stash pop     10、其他     1、git archive:生成一个可供发布的压缩包       2、rm .git:删除项目的git管理     ——————–github操作说明——————– 1、登录github注册对应的账号     https://github.com     2、创建一个项目:     New repository     3、clone项目:     $ git clone https://(url)     4、第一次使用需配置用户名和邮箱:     $ git config –global user.name “”     $ git config –global user.email “”   5、测试操作     $ git add test.py     $ git commit -m “init test.py”     $ git push origin master     注:最后需要输入对应的账号和密码   6、ssh配置:     1、Settings –> SSH and GPG keys:可以为项目配置身份密钥,这样不必每次推送都输入账号和密码       2、ubuntu下生成当前电脑ssh秘钥       3、ssh -keygen         1、id_rsa是私钥,自己保管好         2、id_rsa.pub是公钥,上传至github       4、将公钥上传至github作为ssh keys       5、修改项目的配置文件ssh方式,编辑项目里的.git/config文件         [core]             repositoryformatversion = 0             filemode = true             bare = false             logallrefupdates = true         [remote “origin”]             #url = https://github.com/(url)             url = git@github.com:(url)             fetch = +refs/heads/*:refs/remotes/origin/*         [branch “master”]             remote = origin             merge =refs/heads/master     ——————–GitHub简介——————– 1、GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub。 2、GitHub 于 2008 年 4 月 10 日正式上线,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。目前,其注册用户已经超过350万,托管版本数量也是非常之多,其中不乏知名开源项目 Ruby on Rails、jQuery 等

点赞