git 指令大全

来源:互联网 发布:淘宝货架 编辑:程序博客网 时间:2024/06/06 03:29

给初学者的帮助
-----------------------------------------------------------------------------------------------------------------------------

前提:假如我们的公司使用git来管理代码,且我们有权限访问,那么我们可以clone  master  主分支,如:


                 git clone  ssh://git@192.168.133.15:1046/company/projectName.git


每个人开发的时候,不能直接在master上修改提交代码,因为如果代码有错误,可能会被自己或者其他人更新到外网上
所以我们会建立自己开发用的分支,最后合并到master分支上去。

例如:
    dev分支作为开发功能时用
    bugfix 修改bug时使用
    ……等等,git 切换分支都是用的当前一套代码,所以速度很快,可以按照自己的需求,创建相应分支
    
/** ========================================================================================================================*/
/** ==常用命令==*/
/** ========================================================================================================================*/

命令1: git checkout -b 分支名称  以当前分支为基础,创建分支
        例如:    git checkout -b dev   (所有人都可以创建一个私有的分支,也可以创建一个公有的开发分支,
                          公有分支其作用是:供所有人使用的预发布版本,保证程序可以正常运行,然后才会提交到master上去)
                git checkout -b mydev   (创建仅自己开发使用的分支,可以只放在本地,其他人不需要改动该分支上的代码)
                我们现在的分支就变成了mydev,如果想回到dev分支上去,使用
                git checkout dev ,这样就切换到了dev分支,如果mydev分支中我们修改了a.html文件,但是还没提交,那么我们切换到dev分支时,
                所做的修改依然存在,除非我们mydev上修改了文件,并且执行过git commit 提交,那么a.html切换到dev分支上时就看不到a.html,
                因为在dev分支中,我们没有创建过a.html。这时候我们需要用到命令6.
                
命令2:git pull 获取远程分支上的包含其他人提交的最新代码。一般我们在修改代码前,都需要先执行一下git pull命令,保证工作区的文件是最新的

命令3:git status 显示修改过的文件。
            例如:如果修改了文件a.html,b.html两个文件,可以在根目录下执行 git status ,就会列出所有修改过的文件

命令3:git add  将修改过的文件加入到暂存区。(暂存区的作用见命令4)
            例如:如果修改了文件a.html,b.html两个文件,可以在当前目录下执行 git add d:\g1\a.html(绝对路径),就只把a文件加到缓存区
            也可以在当前目录下执行git add . 这样把两个修改过的文件都加入了缓存区
            
命令4:git commit 提交文件(git中提交文件只提交加入到缓存区里面的文件)
            例如:git commit -m 'a.html',就把刚才加入缓存区的a.html提交到本地代码库里,这里的 -m 是写注释的意思
                 命令3和命令4 ,根据自己的需求,可以并成一条命令写:git commit -am '添加a.html'
命令5:git push 把提交到本地仓库中的代码,推送到远程仓库中,其他人便可以通过使用git pull 获取到这些更新

命令6: git merge 合并分支,例如当前分支是mydev,git merge dev  把当前分支和dev分支文件合并

命令7:git checkout -- 文件名称  从当前分支的暂存区下载文件,覆盖本地工作区的文件,可以用来撤销对文件做的修改。如果该文件已经被修改过,
            执行了git add,但是没git commit提交,则该文件会被最后一次git add的文件覆盖;如果没有执行过git add,就会被原版本文件覆盖
            (注意,本地暂存区,即 如果修改的文件执行过git add命令,不管有没有git commit,git checkout出来的文件就是git add命令执行之后的代码),
命令8:git commit --amend 重复上一次提交命令,也是改写上一次提交,并且不会新增一条更新日志。主要作用是防止提交的日志冗余重复
            **但是如果你已经push过了,那么其历史最后一次,永远也不能修改了。
            例如:
                1、在提交文件时,用git commit -am '提交新模版',执行之后,才发现注释写错了,应该是旧模版,那就用到这个命令:git commit --amend,
                然后,可以编辑注释 “提交旧模版”,保存,退出,;新的注释就覆盖了刚才的注释
                2、提交了a.html和b.html之后,发现漏掉了一个c.html。这时候可以git add c.html加到暂存区,然后git commit --amend,就把暂存区里的文件提交了
                    
命令9: git branch -d  分支名称  删除分支

命令10: git rm -f 从当前的工作空间中和暂存区中删除文件。需要执行git commit 之后才能真正提交到仓库中删除
            git rm -fr 文件夹名 , 删除文件夹
            git rm -f 文件名 , 删除文件
            git rm --cached 仅删除暂存区中的文件

命令11:git clean 删除文件( 清除未跟踪的文件),这个命令多用于处理未加入版本库中的文件或目录,比如清理一些缓存文件或者还没有git add 的新建的文件。
            git clean -dn  这个命令可以看看有哪此文件和目录会被删
            git clean -f 只会删文件,不会删目录,
            git clean -df 可帮你搞定一切
            
命令12:git reset 回滚版本,此次之后的修改都会被退回到暂存区
            (1)git reset --hard 去撤销这次修改(注意,这是将工作区和暂存区的文件回滚,如果有新增的未提交的文件,将无法找回),所用于解决无用冲突
                或者处理干净自己的工作区,根据需求不用在这个老版本上开发的话,需要执行 git pull 命令,将自己的工作区保持最新版本
                git reset --hard HEAD~2 回退到历史倒数第二个版本
                git reset –-hard origin/master    将本地的状态回退到和远程的一样
            (2) 回退所有内容到上一个版本   
                git reset HEAD^   默认--mixed,这个模式的效果是,工作区中文件的修改都会被保留,不会被标记成"Changes to be committed",但是会打出什么还未被更新的报告。
            (3) 回退a.py这个文件的版本到上一个版本   
                git reset HEAD^ a.py   
            (4) 向前回退到第3个版本   
                git reset -–soft HEAD~3  暂存去和工作区都不改变 。这个模式的效果是,执行完毕后,自从<commit>以来的所有改变都会显示在git status的"Changes to be committed"中
            
命令13:git stash 储藏 (有未完成的工作,然后需要转到其他功能或者需求开发上时用到)
        ‘储藏”可以获取你工作目录的中间状态——也就是你修改过的被追踪的文件和暂存的变更,就是两种文件可以被储藏:一种git add 添加到暂存区但还没git commit的文件,一种是修改了的已经在版本里的文件
        (*切记,如果有还没有加入到版本里的文件,不要用git stash, 这样文件会丢失)
        git stash list 查看储藏列表
        
        git stash apply 应用上一个储藏,对文件的变更被重新应用,但是被暂存的文件没有重新被暂存
        git stash apply --index 被暂存的变更也恢复
        
        git stash apply stash@{0} 恢复到某一个版本:stash@{0}是储藏列表的id

命令14:git reflog //查看一下reset之前的那个ref叫什么,例如是HEAD@{0}:
        git reset --hard HEAD@{0}    



命令15:git fetch:
        git fetch origin branch1
        设定当前分支的 FETCH_HEAD' 为远程服务器的branch1分支`.

        注意: 在这种情况下, 不会在本地创建本地远程分支, 这是因为:

        这个操作是git pull origin branch1的第一步, 而对应的pull操作,并不会在本地创建新的branch.

        一个附加效果是:

        这个命令可以用来测试远程主机的远程分支branch1是否存在, 如果存在, 返回0, 如果不存在, 返回128, 抛出一个异常.

        git fetch origin branch1:branch2
        只要明白了上面的含义, 这个就很简单了,

        首先执行上面的fetch操作
        使用远程branch1分支在本地创建branch2(但不会切换到该分支),
        如果本地不存在branch2分支, 则会自动创建一个新的branch2分支,
        如果本地存在branch2分支, 并且是`fast forward', 则自动合并两个分支, 否则, 会阻止以上操作.
        git fetch origin :branch2
        等价于: git fetch origin master:branch2

命令15:git tag:
        

进阶-回滚:

恢复已修改未暂存状态:
    git reset

    文件被git add 加入到了暂存区,还未git commit
    可以删除撤销暂存区文件git reset HEAD <file>...
    这样文件就回到了之前已修改未暂存的状态。

    如果你觉得你合并后的状态是一团乱麻,想把当前的修改都放弃,你可以用下面的命令回到合并之前的状态:
    git reset --hard HEAD

    或者你已经把合并后的代码提交,但还是想把它们撒销:

    git reset --hard ORIG_HEAD
本地修改撤销:
git checkout -- benchmarks.rb        
-------------------------------------------------------------------------------------------------------------------------------------------------        
--------------------------------------------------------------------------------------------------------------------------------------------------

git diff 文件对比,git log 查看提交日志,还是用视图工具比较方便,

----未完待续
0 0
原创粉丝点击