zoukankan      html  css  js  c++  java
  • git基本命令,Git的skil-map,git配置http/https/socks5代理,,,,,,,,,,,,,,,,,,,,,,

    1. 检出、克隆库:
    git clone git://git.openwrt.org/openwrt.git
    
    2. git查看某个文件的修改历史
    git log --pretty=oneline 文件名
    列出文件的所有改动历史,注意,这里着眼于具体的一个文件,而不是git库,如果是库,那改动可多了去了~
    
    3. 查看具体的某次的改动的修改
    git show 356f6def9d3fb7f3b9032ff5aa4b9110d4cca87e
    每一行最前面的那一长串数字就是每次提交形成的哈希值
     
    
    
    
    Git常用命令
    查看、添加、提交、删除、找回,重置修改文件
    git help <command> # 显示command的help
    git show # 显示某次提交的内容 git show $id
    git co -- <file> # 抛弃工作区修改
    git co . # 抛弃工作区修改
    git add <file> # 将工作文件修改提交到本地暂存区
    git add . # 将所有修改过的工作文件提交暂存区
    git rm <file> # 从版本库中删除文件
    git rm <file> --cached # 从版本库中删除文件,但不删除文件
    git reset <file> # 从暂存区恢复到工作文件
    git reset -- . # 从暂存区恢复到工作文件
    git reset --hard # 恢复最近一次提交过的状态,即放弃上次提交后的所有本次修改
    git ci <file> git ci . git ci -a # 将git add, git rm和git ci等操作都合并在一起做                                    git ci -am "some comments"
    git ci --amend # 修改最后一次提交记录
    git revert <$id> # 恢复某次提交的状态,恢复动作本身也创建次提交对象
    git revert HEAD # 恢复最后一次提交的状态
    
    查看文件diff
    git diff <file> # 比较当前文件和暂存区文件差异 git diff
    git diff <$id1> <$id2> # 比较两次提交之间的差异
    git diff <branch1>..<branch2> # 在两个分支之间比较
    git diff --staged # 比较暂存区和版本库差异
    git diff --cached # 比较暂存区和版本库差异
    git diff --stat # 仅仅比较统计信息
    
    查看提交记录
    git log git log <file> # 查看该文件每次提交记录
    git log -p <file> # 查看每次详细修改内容的diff
    git log -p -2 # 查看最近两次详细修改内容的diff
    git log --stat #查看提交统计信息
    
    tig
    Mac上可以使用tig代替diff和log,brew install tig
    
    Git 本地分支管理
    查看、切换、创建和删除分支
    git br -r # 查看远程分支
    git br <new_branch> # 创建新的分支
    git br -v # 查看各个分支最后提交信息
    git br --merged # 查看已经被合并到当前分支的分支
    git br --no-merged # 查看尚未被合并到当前分支的分支
    git co <branch> # 切换到某个分支
    git co -b <new_branch> # 创建新的分支,并且切换过去
    git co -b <new_branch> <branch> # 基于branch创建新的new_branch
    git co $id # 把某次历史提交记录checkout出来,但无分支信息,切换到其他分支会自动删除
    git co $id -b <new_branch> # 把某次历史提交记录checkout出来,创建成一个分支
    git br -d <branch> # 删除某个分支
    git br -D <branch> # 强制删除某个分支 (未被合并的分支被删除的时候需要强制)
    
     分支合并和rebase
    
    git merge <branch> # 将branch分支合并到当前分支
    git merge origin/master --no-ff # 不要Fast-Foward合并,这样可以生成merge提交
    git rebase master <branch> # 将master rebase到branch,相当于: git co <branch> && git rebase master && git co master && git merge <branch>
    
     Git补丁管理(方便在多台机器上开发同步时用)
    git diff > ../sync.patch # 生成补丁
    git apply ../sync.patch # 打补丁
    git apply --check ../sync.patch #测试补丁能否成功
    
     Git暂存管理
    git stash # 暂存
    git stash list # 列所有stash
    git stash apply # 恢复暂存的内容
    git stash drop # 删除暂存区
    
    Git远程分支管理
    git pull # 抓取远程仓库所有分支更新并合并到本地
    git pull --no-ff # 抓取远程仓库所有分支更新并合并到本地,不要快进合并
    git fetch origin # 抓取远程仓库更新
    git merge origin/master # 将远程主分支合并到本地当前分支
    git co --track origin/branch # 跟踪某个远程分支创建相应的本地分支
    git co -b <local_branch> origin/<remote_branch> # 基于远程分支创建本地分支,功能同上
    git push # push所有分支
    git push origin master # 将本地主分支推到远程主分支
    git push -u origin master # 将本地主分支推到远程(如无远程主分支则创建,用于初始化远程仓库)
    git push origin <local_branch> # 创建远程分支, origin是远程仓库名
    git push origin <local_branch>:<remote_branch> # 创建远程分支
    git push origin :<remote_branch> #先删除本地分支(git br -d <branch>),然后再push删除远程分支
    
    Git远程仓库管理
    
    GitHub
    git remote -v # 查看远程服务器地址和仓库名称
    git remote show origin # 查看远程服务器仓库状态
    git remote add origin git@ github:robbin/robbin_site.git # 添加远程仓库地址
    git remote set-url origin git@ github.com:robbin/robbin_site.git # 设置远程仓库地址(用于修改远程仓库地址) git remote rm <repository> # 删除远程仓库
    
    创建远程仓库
    git clone --bare robbin_site robbin_site.git # 用带版本的项目创建纯版本仓库
    scp -r my_project.git git@ git.csdn.net:~ # 将纯仓库上传到服务器上
    mkdir robbin_site.git && cd robbin_site.git && git --bare init # 在服务器创建纯仓库
    git remote add origin git@ github.com:robbin/robbin_site.git # 设置远程仓库地址
    git push -u origin master # 客户端首次提交
    git push -u origin develop # 首次将本地develop分支提交到远程develop分支,并且track
    git remote set-head origin master # 设置远程仓库的HEAD指向master分支
    
    也可以命令设置跟踪远程库和本地库
    git branch --set-upstream master origin/master
    git branch --set-upstream develop origin/develop
    
    
    其它:
    git搭建
    windows搭建git:http://v.qq.com/page/v/k/s/v0115ak5aks.html
    windows中使用git:http://v.qq.com/page/u/8/i/u0115yt2q8i.html
    在vs中使用svn:http://v.qq.com/cover/6/6hwkm72fnkmh6hi.html?vid=k0116vxw2dr
    svn搭建:http://v.qq.com/cover/6/6hwkm72fnkmh6hi.html?vid=k0116vxw2dr
    下载: https://launchpadlibrarian.net/172450987/gcc-linaro-4.8-2014.04.tar.xz
    
    
    首先 github上的项目是开源的,别人都可以看到,所以你懂的。。。。
    说重点:
    1.创建一个新的repository:
    先在github上创建并写好相关名字,描述。
    $cd ~/project        //到project目录
    $git init                     //初始化
    $git add .                   //把所有文件加入到索引(不想把所有文件加入,可以用gitignore或add 具体文件)
    $git commit -m "add some function"              //必须填写更新日志( -m “更新日志”也可)
    $git remote add origin https://username@github.com:username/projectname.git //先创建github网站账户,增加到remote
    $git push -u origin master    //push到github上
    
    2.更新项目(新加了文件):
    $cd ~/project
    $git add .                  //这样可以自动判断新加了哪些文件,或者手动加入文件名字
    $git commit              //提交到本地仓库
    $git push origin master    //不是新创建的,不用再add 到remote上了
    
    3.更新项目(没新加文件,只有删除或者修改文件):
    $cd ~/project
    $git commit -a          //记录删除或修改了哪些文件
    $git push origin master  //提交到github
    
    4.忽略一些文件,比如*.o等:
    $cd ~/project
    $vim .gitignore     //把文件类型加入到.gitignore中,保存
    然后就可以git add . 能自动过滤这种文件
    
    5.clone代码到本地:
    $git clone git@github.com:username/project.git
    假如本地已经存在了代码,而仓库里有更新,把更改的合并到本地的项目:
    $git fetch origin    //获取远程更新
    $git merge origin/master //把更新的内容合并到本地分支
    
    6.撤销
    $git reset
    
    7.删除
    $git rm  * // 不是用rm
    
    git rm –cached ooxx   ,Git只删除仓库中的代码,而保留本地代码

    git config core.autocrlf true,忽略^M。

    brew install git-gui安装gitk。
    Git放弃本地修改:已经使用了git add缓存了代码使git reset HEAD filepathname,未使用git add缓存代码时git checkout -- filepathname。

    //------------------------------常见错误----------------------------------- 1.$ git remote add origin git@github.com:WadeLeng/hello-world.git 错误提示:fatal: remote origin already exists. 解决办法:$ git remote rm origin 然后在执行:$ git remote add origin git@github.com:WadeLeng/hello-world.git 就不会报错误了 2. $ git push origin master 错误提示:error:failed to push som refs to 解决办法:$ git pull origin master //先把远程服务器github上面的文件拉先来,再push 上去。

      3.error: The requested URL returned error: 403 Forbidden while accessing https://github.com/wangz/future.git/info/refs  解决方案:

    vim .git/config

    修改url = https://github.com/wangz/example.git  

    为: url = https://wangz@github.com/wangz/example.git  

    再次git push,弹出框输入密码,即可提交

    本人遇到的还有一个错误就是,工程传进github 了可是里头缺少文件,
    解决方法 $git add .    (注意一点  。  )表示添加所有文件,
     gitconfig配置文件
             Git有一个工具被称为git config,它允许你获得和设置配置变量;这些变量可以控制Git的外观和操作的各个方面。这些变量可以被存储在三个不同的位置: 
              1./etc/gitconfig 文件:包含了适用于系统所有用户和所有库的值。如果你传递参数选项’--system’ 给 git config,它将明确的读和写这个文件。 
              2.~/.gitconfig 文件 :具体到你的用户。你可以通过传递--global 选项使Git 读或写这个特定的文件。
             3.位于git目录的config文件 (也就是 .git/config) :无论你当前在用的库是什么,特定指向该单一的库。每个级别重写前一个级别的值。因此,在.git/config中的值覆盖了在/etc/gitconfig中的同一个值。
            在Windows系统中,Git在$HOME目录中查找.gitconfig文件(对大多数人来说,位于C:Documents and Settings$USER下)。它也会查找/etc/gitconfig,尽管它是相对于Msys 根目录的。这可能是你在Windows中运行安装程序时决定安装Git的任何地方。
            配置相关信息:
        

      2.1 当你安装Git后首先要做的事情是设置你的用户名称和e-mail地址。这是非常重要的,因为每次Git提交都会使用该信息。它被永远的嵌入到了你的提交中:   $ git config --global user.name "John Doe"   $ git config --global user.email johndoe@example.com 2.2 你的编辑器(Your Editor)   现在,你的标识已经设置,你可以配置你的缺省文本编辑器,Git在需要你输入一些消息时会使用该文本编辑器。缺省情况下,Git使用你的系统的缺省编辑器,这通常可能是vi 或者 vim。如果你想使用一个不同的文本编辑器,例如Emacs,你可以做如下操作:   $ git config --global core.editor emacs
    2.3 检查你的设置(Checking Your Settings)   如果你想检查你的设置,你可以使用 git config --list 命令来列出Git可以在该处找到的所有的设置:   $ git config --list 你也可以查看Git认为的一个特定的关键字目前的值,使用如下命令 git config {key}:   $ git config user.name 2.4 获取帮助(Getting help)   如果当你在使用Git时需要帮助,有三种方法可以获得任何git命令的手册页(manpage)帮助信息:   $ git help <verb>   $ git <verb> --help   $ man git-<verb>   例如,你可以运行如下命令获取对config命令的手册页帮助:   $ git help config
    Git
    /Github使用方法小记 今天把人间网的桌面客户端renjian-deck正式开源了,之前对javas­cript的了解其实非常的不够的,所以这一次的代码写的也是乱七八糟重用性及其低下,虽然我无数次的想把代码重新整理一下,不过还是糊里糊涂一时冲动的在他们还是乱七八糟的时候开源了。因为之前是基于git­hub上的一个开源项目,所以硬着头皮也放到git­hub上,虽然没有使用的经验,不过磨机磨机还是搞定了。 以下是具体步骤,就当是自己做个笔记了,高手请绕道吧。 1、下载安装桌面端git。 Win­dows请至:http://​code.​google.​com/​p/​msysgit/​ 安装的时候最好还是允许在shell嵌入git的命令,相对还是比较方便的。 OSX可以在xcode中安装com­mand line tools,或者brew install git 2、git的初始设置 git config --global user.name "Your Real Name" git config --global user.email you@email.address
    3
    、建立仓库 在git bash里找到你的项目目录。(或直接用shell右键里的git bash here) git init 这样在你的项目目录下就会有一个.git的隐藏目录(类似于.svn) 。 4、初始化项目 git add . 留心后面的一个 “.” , 这是添加所有文件的情况,如果愿意,你也可以添加特定的几个文件,比如git add readme.​txt等等。 之后就可以做我们的first com­mit到仓库里了。 git commit -m 'first commit' -m 参数以及后面的字串是添加说明。 5、 注册git­hub账号 下面就是与git­hub有关的操作了。 首先到http://​github.​com/​%E6%B3%A8%E5%86%8C%E8%B4%A6%E5%8F%B7%E3%80%82%E6%B3%A8%E5%86%8C%E4%B9%8B%E5%90%8E%E5%8F%AF%E4%BB%A5%E7%9C%8B%E5%88%B0%E8%BF%99%E6%A0%B7%E7%9A%84%E7%95%8C%E9%9D%A2%E3%80%82%E9%80%89%E6%8B%A9%E7%AC%AC%E4%B8%80%E9%A1%B9%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E9%A1%B9%E7%9B%AE%E3%80%82 表单需要填写 Pro­ject Name(项目名称) De­scrip­tion(描述) Homepage URL(主页URL,一般就以项目名称命名好了) 6、创建SSH密匙 这步工作应该是最麻烦的吧。回到桌面,打开git bash,输入以下命令。1 ssh-keygen -C 'your@email.address' -t rsa 确认使用默认路径,然后输入两次你要是用的密码就行(一般直接敲几个回车不使用密码)。 7、提交密匙
    现在又要回到git­hub的页面上,在右上方工具栏里找到Ac­count Set­tings。在这个页面上有一个SSH Pub­lic Keys标签,选择Add an­other pub­lic key。Title随便取,Key是一段东西。 找到刚才创建密匙的那个目录下(默认是C:Documents and Settings你的windows用户名.ssh,OSX是
    ~/.ssh)找到id_rsa.pub文件,把它打开可以看到一堆文字,拷贝下来黏贴到git­hub页面key的空白处。然后Apply,就好了。 可以使用以下命令测试连接 ssh -v git@github.com 会要求输入你刚才设置的密码,如果成功的话可以看到这样的ERROR(orz,起码证明连接是成功了)1 ERROR: Hi Arthraim! You've successfully authenticated, but GitHub does not provide shell access

    8、上传代码 最后就是上传你的代码了~ bash切换到你的项目目录下,输入以下命令。 git remote add origin git@github.com:你的github用户名/你的github项目名.git git push origin master hehe,现在再去http://github.com/你的github用户名/你的github项目 就可以看到你的项目了~ Good luck 当然这是从无到有,如果你有一个git的repo,想添加到git­hub上,那就直接使用第8步的命令就可以了(不要忘记密匙的相关工作)。话说很多初学者应该会和我一样,在初期搞不清git和git­hub的关系,git是和CVS,SVN并列的一个概念,而git­hub是和Google Code, source­forge并列的一个概念,这样说就明白了吧。所以,git的学习的话,参见这里。 BTW:Git­hub的社区感很好,体验很不错,怪不得有这么多人在git­hub上乐此不疲的交流代码。   

    git配置http代理:git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
    取消代理:git config --global --unset http.proxy/https.proxy
    检查代理: git config --global --get http.proxy/https.proxy

    git配置sock5代理,例如ip为127.0.0.1, 端口为1080, 打开终端,运行以下命令:
    git config --global http.proxy 'socks5://127.0.0.1:1080'
    git config --global https.proxy 'socks5://127.0.0.1:1080'
    查看配置:cat ~/.gitconfig

    # Git
    
    ## 分布式世界
    
    
    ### 1. 版本控制之道
    
    - 版本库
        - 集中式(CVS、SVN)
        - 分布式(git)
    - 工作目录树
        - 断面视图
        - 工作拷贝
        	- 1、初始化(init).git目录
        	- 2、克隆(clone)
    - 代码修改与文件同步
    - 跟踪项目、目录和文件
    - 使用标签跟踪里程碑
    - 使用分支来跟踪并行演进
    - 合并
    - 锁机制
    
    ### 2. 安装与设置
    
    - 安装
        - Linux
        - Mac:sudo port install git-core +svn +doc
        - Windows
            - Cygwin
            - MSys
    - 设置 git config
        - 提   交  者:git config --global user.name "Jamsonwoo"
        - 邮件地址:git config --global user.email "Jamsonwoo@126.com"
        - 查看:git config --global --list
        - 颜色:git config --global color.ui "auto" (auto/always/false)(注:MSys建议用always)
    - GUI
        - Tcl/TK:git gui(备注:工作目录树)
        - gitk --all(备注:工作目录树)
        - GitX (Mac)
    - 内置帮助
        - git help <command>
        - git-doc
    
    ### 3. Hello Git
    
    - 创建版本库:git int
    - 修改代码
        - 1、添加索引:git add index.html
        - 2、提交记录:git commit -m "add in hello git HTML"  (备注:提交留言至少应该体现出进行本次修改的原因。先用一句简单的话来概括该提交;然后用几句话全面解释。)
        - 3、查看日志
            - git log <-1>(扩展:SHA-1哈希码)
            - git log --pretty=oneline
    - 视图状态:git status (备注:存放代码)
    	- 1、工作目录树  
    	- 2、索引(暂存区)  
    	- 3、版本库
    - 分支
        - 1、创建分支:git branch 新分支名称 父分支名称  
            git branch RB_1.0 master
        - 2、提交修改:git commit -a(-a:提交全部修改过的文件)
        - 3、切换分支:git checkout 分支名称  
            git checkout RB_1.0
    - 处理发布
        - 1、打标签:git tag 标签名称 打标签的点  
            git tag 1.0 RB_1.0
        - 2、变基命令:git rebase 分支名称(合并到主分支)  
            git rebase RB_1.0
        - 3、删除分支:git branch -d 分支名称  
            git branch -d RB_1.0
        - 4、创建归档:git archive --format=输出格式 --prefix=包内容 需要归档的标签名称 | gzip > 压缩结果重定向  
        	- git archive --format=tar --prefix=mysite-1.0/ 1.0 | gzip > mysite-1.0.tar.gz  
        	- git archive --format=zip --prefix=mysite-1.0/ 1.0 > mysite-1.0.zip
    - 克隆远程版本库:git clone 远程版本库的位置 存放该版本库的本地目录  
        git clone git://github.com/tswicegood/mysit.git mysite-remote
    
    
    ## Git用法
    
    
    ### 1. 添加与提交
    
    - 添加文件到暂存区
        - 1、启动交互命令提示符:git add -i
        - 2、直接进入补丁模式:git add -p
    - 提交修改
        - 1、跟踪空目录:git不单独记录和跟踪目录,解决:在空目录里添加一个句点开头的空文件
        - 2、git commit 的提交留言编辑器 -v  
        	- 如果输入不带-m参数的git commit命令,Git将启动编辑器来编辑提交留言。为启动编辑器,Git会按照一下顺序查找编辑器的设置:
    		- 1、环境变量 GIT_EDITOR 的值。
    		- 2、Git 的设置 core.editor 的值。
    		- 3、环境变量 VISUAL 的值。
    		- 4、环境变量 EDITOR 的值。
    		- 5、如果上述值均为空,Git 会尝试启动 vi 编辑器。        
    - 提交三法  
        - 备注 a、提交暂存后的修改(先暂存后提交)  
        - 备注 b、提交工作目录树中的所有修改(把修改直接提交)  
        - 备注 c、提交工作目录树中执行的修改(把修改直接提交)
        - 1、添加到暂存区
            - 1、git add 文件
            - 2、git commit -m "留言"
        - 2、提交所有修改到版本库:git commit  -m "留言" -a
        - 3、指定提交文件(列表):git commit -m "留言" 文件  
            Git别名:  
            git commit 简写为:git ci  
            git config --global alias.ci "commit"
    - 查看修改内容
        - 1、查看当前状态:git status  
            Changes to be committed.    待提交变更   
            Changed but not updated.    未更新到索引的变更
        - 2、查看文件改动:git diff
            - a、git diff 无参 工作目录树 VS 暂存区
            - b、git diff --cached  暂存区 VS 版本库
            - b、git diff HEAD  工作目录树(暂存+未暂存) VS 版本库
    - 管理文件
        - 1、文件重命名与移动:git mv 原文件名称 新文件名称
        - 2、复制文件:无git cp命令,无需复制
        - 3、忽略文件:
            - a、版本级:文件加入.gitignore文件中,支持通配符*
            - b、本地级:.git/info/exclude
    
    ### 2. 分支
    
    - 什么叫分支
        - 分支重命名:git branch -m   分支原名称   新名称  
            git branch -m master mymaster
        - 显示本地版本库所有本地分支名称:git branch
        - 创建分支:1、试验性更改  2、增加新功能  3、Bug修复
    - 创建新分支
        - 创建分支:git branch   新分支名称  
            git branch newBranchName
        - 检出分支:git checkout 分支名称  
            git checkout newBranchName
        - 创建并检出:git checkout -b  新分支名称  新分支源分支  
            git checkout -b newBranchName2 master
    - 合并分支
        - 合并(merge)方法
            - 1、直接合并:把两条分支上的历史轨迹合并,交汇到一起
            - 2、压合合并:一条分支上若干提交条目压合成一个提交条目,提交到另一条分支的末梢
            - 3、拣选合并:拣选另一条分支上的某个提交条目的改动带到当前分支上
        - 直接合并
            - git merge 分支名称  
                git checkout alternate  
                git add about.html  
                git commit -m "add about page"  
                git checkout master  
                git merge alternate
        - 压合合并
            - git merge --squash 分支名称  
                git checkout -b contact master  
                git add contact.html  
                git commit -m "add contact file"  
                git commit -m "add contact file 2" -a  
                git checkout master  
                git merge --squash contact  
                git status  
                git commit -m "add contact page" -m "has primary and secondary email"
        - 拣选合并
            - git cherry-pick 提交名称  
                git checkout contact  
                git commit -m "add contact 3" -a  
                [contact 6dbaf82]......  
                git checkout master  
                git cherry-pick 6dbaf82  /  git cherry-pick -n 6dbaf82
    - 冲突处理
        - git merge  
            git checkout -b about master  
            编辑about.html  
            git add about.html  
            git commit -m "add about.html "  
            git branch about2 about  
            编辑about.html  
            git commit -m "add about.html 1" -a  
            git checkout about2  
            编辑about.html  
            git commit -m "add about.html 2" -a  
            git checkout about      
            git merge about2     
            git mergetool    
            git commit
        - 处理冲突软件(kdiff3):git config --global merge.tool kdiff3
        - git mergetool
    - 删除分支
        - git branch -d 分支名称  (成功合并到当前分支时)  
            git branch -d about2
        - git branch -D 分支名称 (强制删除)
    - 分支重命名
        - git branch -m 原分支名称  新分支名称 (不允许重名)  
            git branch -m contact abc
        - git branch -M 原分支名称  新分支名称 (强制覆盖)  
            git branch -m master contact
    
    ### 3. 查询历史记录
    
    - 查看日志
        - git log
            - j 向下浏览;k 向上浏览;q 退出
            - 提交名称、提交人、提交日期、提交留言
        - git log -p (显示版本之间的代码差异)
        - git log -1(数字表示提交日志条数)
        - git log 7b1558c (指定提交名称缩写[前7位])
    - 指定查找范围
        - git log --since/before="英文格式日期"
            - git log --since="5 hours" (最近5小时内)
            - git log --before="2012-8.20" -1 (20120820之前的最后一条)
        - git log 最老版本..最新版本
            - git log 18f822e..0bb3dfb
            - 注:日志结果不包括最老,包括最新
            - git log 18f822e..HEAD  /  git log 18f822e..
        - git log 标签名称
            - git log --pretty=format:"%h %s" 1.0..HEAD
            - git log --pretty=oneline 1.0..HEAD
        - ^:回溯一个版本
            - git log 18f822e^^
            - 注:1、windows系统下,^需要添加双引号 git log “18f822e^^”。
            - 注:2、当遇到某个节点(通常是版本合并后的节点)有并列的多个父节点时,“^1”代表第一个父节点,“^2”代表第二个,以此类推。而“^”是“^1”的简写。
        - *~N:回溯N个版本
            - git log -1 HEAD^^^  /  git log -1 HEAD^~2  /  git log -1 HEAD~1^  /  git log -1 HEAD~3
            - git log -1 HEAD~10..HEAD
    - 查看版本间差异
        - git diff 版本名称(与当前工作目录树的差异)
            - git diff 18f822e
        - git diff --stat 1.0(数据统计)
    - 查明提交者
        - git blame 文件名(特定代码块历史)
            - git blame hello.html
            - 注:1、格式:提交名称  初始文件名(提交人   提交时间  行号)   代码行
            - 注:2、^脱字号开头表示版本库中第一个递交
        - git blame -L <开始>,<结束> 文件名(特定代码行历史)
            - git blame -L 12,13 hello.html
            - git blame -L 12,+2 hello.html
            - git blame -L 12,-2 hello.html
        - git blame -L 正则表达式 文件名(特定代码行历史)
            - git blame -L "/</body>/",+2 hello.html
            - >git blame -L "/</body>/",-2 "4333289e^" -- index.html
    - 跟踪内容
        - 检查在同一个文件内移动或复制的代码行:git blame -M 文件名
        - 查看文件之间的复制:git blame -C -C 文件名
        - 查看显示代码的具体变动的历史记录:git log -C -C -1 -p
    - 撤销修改
        - 增补提交:git commit -C HEAD -a --amend
            - --amend:增补提交
            - -C:复用指定提交的提交留言
            - -c:打开编辑器,在已有提交留言基础上修改
        - 反转提交:git revert -n 提交名称
            - 参数:--no-edit
        - 复位:git reset 提交名称
            - 提交名称默认值:HEAD
            - 提交名称可用^和~修饰符
            - 参数--soft:暂存所有因复位带来的差异,但不提交它
            - 参数--hard:慎用,从版本库和工作目录树中同时删除提交
    - 重新改写历史记录
        - 重新排序提交:git rebase -i HEAD~3
        - 将多个提交压合成一个提交:git rebase -i 0bb3dfb^
        - 将一个提交分解成多个提交:git rebase --continue
    
    ### 4. 与远程版本库协作
    
    - 网络协议
        - SSH:用户名@服务器名/版本库路径  
            git@github.com/tswicegood/mysite-chp6.git
        - git:协议://服务器名/版本库路径  (使用9418端口、匿名、无须加密、只读)  
            git://github.com/tswicegood/mysite-chp6.git
        - HTTP/HTTPS:需架设WebDAV服务
        - 最快:git
        - 安全:SSH
        - 不受防火墙限制:HTTP(S)
    - 克隆远程版本库:git clone git://github.com/tswicegood/mysite-chp6.git
    - 版本库同步
        - 取来(fetch):git fetch
        - 查看远程分支:git branch -r
        - 取来合并:git pull 远程版本库名称 须要拖入的远程分支名
        - 远程分支名前缀origin/表示远程版本库上的分支名称,origin是默认远程版本库别名
    - 推入改动
        - 推入默认版本库origin:git push
        - 查看推入哪些提交:git push --dry-run
        - 推入指定版本库:git push <repository> <refspec>  
            git push origin mybranch:master
    - 添加新的远程版本库
        - 一次拖入:git pull git://ourcompany.com/dev-erin.git
        - 使用别名:git remote add 别名 路径
        - 查看远程版本库详细信息:git remote show <name>
        - 删除别名:git remote rm
    
    ### 5. 管理本地版本库
    
    - 使用标签标记里程碑
        - 标签只读、标签名不能包含空格
        - 查看已存在标签:git tag
        - 新建标签:git tag 标签名
        - git tag 标签名 提示名称/分支名称
    - 发布分支的处理
        - 发布分支通常以RB_为前缀并包含版本号,RB_1.3
        - git branch RB_1.0.1 1.0
    - 标签与分支的有效名称
        - 不能以“/”结尾
        - 不能以“.”开头
        - 不能使用特殊字符:空格~^:?*[控制符删除键
        - 不能出现“..”
    - 记录和跟踪多个项目
        - 多个项目共享一个版本库
        - 多项目多版本库
    - 使用Git子模块跟踪外部版本库
        - 添加新子模块
            - 查看该版本库的子模块:git submodule
            - 添加新子模块:git submodule add 源版本库 存储路径  
                git submodule add  git://github.com/tswicegood/hocus.git  hocus
            - 初始化子模块:git submodule init hocus
        - 克隆含子模块的版本库:git submodule update 子模块名  
            cd work  
            git clone magic new-magic  
            cd new-magic  
              
            git submodule   
            git submodule init hocus  
            git submodule update hocus
        - 改变子模块的版本
        - 使用子模块时要提防的错误
            - git add 确保结尾没有“”
            - submodule update 先检查提交
            - 添加新内容到本地自模块版本库,要检出正确分支
            - 修改提交,确保改动被送回远程版本库
    
    ### 6. 高级功能
    
    - 压缩版本库
        - git gc  整理版本库、优化Git内部存储历史记录
        - git gc <--aggressive>  重新计算增量存储单元
    - 到处版本库
        - 创建版本快照:git archive 格式类型 指定版本
        - git archive --format=<tar/zip> <--prefix=父目录> 转换格式  
            git archive --format=zip --prefix=mysite-release/ HEAD > mysite-release.zip     
            git archive --format=tar --prefix=mysite-release/ HEAD | gzip > mysite-release.tar.gz
    - 分支变基
        - git rebase --continue/--skip/--abort
        - git rebase --onto master contacts search
    - 重现隐藏的历史:git reflog
    - 二分查找
        - git bisect start
        - git bisect bad
        - git bisect good 1.0
        - git bisect reset
        - git bisect visualize
        - git bisect log
        - git bisect replay <文件>
        - git bisect run
    

      

    git init
    git add .  //指的是把所有文件 添加到本地repository
    git commit -m "test" //这里是添加commit的message
    git remote add origin git://git.openwrt.org/14.07/openwrt.git
    git push origin master  //origin指的是remote 远端地址, master 指的是你的分支。
    
    
    代码提交一般有五个步骤:
    1.查看目前代码的修改状态
    2.查看代码修改内容
    3.暂存需要提交的文件
    4.提交已暂存的文件
    5.同步到服务器
    
    1.     查看目前代码的修改状态
    提交代码之前,首先应该检查目前所做的修改,运行git status命令 
    a)        已暂存 (changes to be committed)
    new file //表示新建文件
    modified //表示修改文件
    deleted //表示删除文件
    
    b)       已修改 (changed but not updated)
    modified //表示修改文件
    deleted //表示删除文件
    另外,git 给出了可能需要的操作命令,git add/rm, gitcheckout --
    
    c)        未跟踪 (untracked files)
    
    
    2.     查看代码修改的内容
     git diff  <file>
    比较某文件与最近提交节点的差异。
    注意:如果该文件已暂存,那么应该使用git diff –cached<file>
    
     git diff <hashcode> <hashcode>  <file>
    比较某文件在提交节点a,节点b的差异。
    技巧:如果省略后面一个hashcode,则默认表示与上一提交节点比较。(也可以利用^运算符
    
    
    3.     暂存需要提交的文件
    如果是新建的文件
    则git add  <file>
    如果是修改的文件
     则git add  <file>
    如果是删除的文件
     则 git rm  <file>
    
    
    4.     提交已暂存的文件
    git commit
    注意注释填写规范。
    
    git commit --amend
    修改最近一次提交。有时候如果提交注释书写有误或者漏提文件,可以使用此命令。
    
    
    5.     同步到服务器
    同步到服务器前先需要将服务器代码同步到本地
    命令: git pull
    如果执行失败,就按照提示还原有冲突的文件,然后再次尝试同步。
    命令:git checkout -- <有冲突的文件路径>
    
    同步到服务器
    命令: git push origin  <本地分支名>
    如果执行失败,一般是没有将服务器代码同步到本地导致的,先执行上面的git pull命令。
  • 相关阅读:
    CSS
    人物
    CSS
    CSS
    概念- 工业4.0
    C#正则表达式
    六月定律
    c#中实现登陆窗口(无需隐藏)
    c#中关于String、string,Object、object,Int32、int
    一个快速找第k+1小的算法
  • 原文地址:https://www.cnblogs.com/timssd/p/4292418.html
Copyright © 2011-2022 走看看