经常使用Git操做

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