zoukankan      html  css  js  c++  java
  • Git使用笔记

    0、我常用的.gitconfig

    注意:是在终端里运行下面语句,而不是直接将下面内容直接写道.gitconfig文件里,使用 git config --list 可以查看 执行的结果

    git config --global user.name "你名字"
    git config --global user.email "你邮箱"

    git config --global core.editor vim git config --global alias.st status git config --global alias.co checkout git config --global alias.ci commit git config --global alias.br branch git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

    终端显示git分支:

    # Git branch in prompt.
    
    parse_git_branch() {
    
        git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* (.*)/ (1)/'
    
    }
    
    export PS1="u@h W[33[32m]$(parse_git_branch)[33[00m] $ "

    常用命令

    修改本地记录的远程仓库地址

    git remote set-url origin gitl@gitxxxxxx

    设置仓库的upstream

    git remote add upstream git@gitxxxxxx

    git pull upstream master

    git 中upstream和origin的区别

    https://blog.csdn.net/liuchaoxuan/article/details/80656145

    1、git init:初始化一个Git仓库。
            补充:
                git init --bare <仓库名字>建立一个空的数据库。
    2、添加文件到Git仓库,分两步:
            第一步,使用命令git add <filename>,注意,可反复多次使用,添加多个文件;
            第二部,使用命令git commit -m "提交说明",完成。
            补充:
                git add .:把当前工作区中的所有修改全部添加到暂存区中。
                git commit -a:直接将工作区中的修改添加到版本库中。(相当于先执行了git add,再执行git commit。)
                "git commit -a"对新添加的文件,删除文件等修改不起作用,要显示的执行git add/git rm命令
    3、git status:打印整个工作区的状态。
    4、git diff <filename>:查看修改内容。
            补充:
                git diff HEAD -- filename:查看工作区和本地版本库中最新版本的区别,有关filename的区别

                git diff "@{yesterday}":与昨天的版本库相比。

                git diff <commit-id> "@{2}":特定版本与倒数第二个版本相比。
    5、git log:查看系统中的历史commit提交记录
            如:git log 或git log --pretty=oneline
            其中pretty指定打印提交记录内容的格式,可选的值有:oneline,short,medium,full,fuller,email,raw和一些自定义的字符格式。
            补充:
                --graph可以看到分支合并图。
                --abbrev-commit打印简短commit-id。
    6、git reset --hard <commit_id>:将head的值设定为指定的commit_id,
            HEAD表示当前版本id,
            HEAD^表示上一个版本id,
            HEAD^^表示上上一个版本id,
            HEAD~100表示上上100个版本id,
            版本id也可以在git log命令中查看,commit就是。
            补充:
                git reset:恢复到之前的版本。
                --mixed 是git reset的默认选项,他的作用是重置索引内容,将其定位到指定的项目版本,而不改变你的工作树中的所有内容,只是提示你有哪些文件还没更新。
                --soft 选项即不触动索引的位置,也不改变工作数中的任何内容。该选项会保留你的工作树中的所有更新并使之处于待提交状态,相当于在 --mixed基础上加上git add。
                --hard 把整个目录还原到一个版本,包括所有文件。
    7、git reflog:记录你的每一次有关head的历史命令记录
    8、工作区(Working Directory):就是当前的工作目录。
          版本库(Repository):工作区下的隐藏目录.git。
          暂存区(stage):版本库中的index(或者是stage)文件。
          git add命令就是把文件修改添加到暂存区(stage)中;
          git commit命令就是把暂存区的所有内容提交到当前分支中。(如下图)


    9、git checkout -- <filename>:把工作区中对filename文件的修改撤销掉
            这里有两种情况:
                一种是修改后还没放到暂存区(即:还没有使用git add命令),现在撤销修改就是回到和版本库一模一样的状态;
                一种是已经添加到暂存区后,又作了修改,现在撤销修改就是回到添加到暂存区后的状态。
                总之,就是让这个文件回到最近一次git commit或git add时的状态
            补充:
                git checkout <name>:切换到相应的分支上。
    10、git reset HEAD <filename>:把暂存区中对filename的修改撤销掉(此步是把修改从暂存区撤销到工作区,要想撤销工作区的修改,要进一步的使用git checkout -- <filename>命令)
            如果修改已经提交到版本库中了,在没有把本地版本推送到远程的情况下可以使用git reset --hard <commit_id>命令进行版本回退了。
            (使用的默认选项:--mixed)
            补充:
                关于git reset详见第6条。
                关于第9条中的“git checkout -- <filename>”与第10条“git reset HEAD <filename>”的区别的说明:
                git checkout --<filename>针对的是撤销工作区的修改,如果此时暂存区有filename文件,就撤销为暂存区中的filename,如果暂存 区中没有filename文件,就恢复为本地版本库中的filename,此命令不更改暂存区和本地版本库。git reset HEAD -- <filename>命令针对的是撤销暂存区中的修改,是将暂存区中的内容恢复到工作区,相当于git add <filename>的逆操作一样。
    11、git rm <filename>:在暂存区记录下要删除文件filename,使用git commit命令提交删除申请,从版本库中删除文件。
    12、ssh-keygen -t rsa -C "youremail@example.com":使用自己的邮件在用户主目录下生成SSH key。(要在主目录下运行此命令)
            -t 指定加密方式,可以值有:rsa、dsa,默认为:dsa
            -C是添加注解comment,可以不是自己的邮件,也可以不要此项。
    13、git remote add origin git@github.com:<github用户名>/<仓库名>.git 将本地仓库与github上的仓库关联起来。
            origin为远程库的名字。
            此命令的前提是本地仓库和远程仓库都已经建立好了,命令的作用是将两者关联,并不新建什么!
    14、git push -u origin master:将本地库的所有内容推送到远程库上。(只有第一次推送的时候才加上-u)
    15、git config --global user.name "用户名":配置缺省的用户名。
    16、git config --global user.email "":配置缺省的email,最好和注册时使用一样的email。
                补充:配置文件在~/.gitconfig
    17、git clone git@github.com:<用户名>/<仓库名>.git:从远程库中克隆版本库到本地。
            补充:
                git clone . /some/new/directory:将当前目录下的版本库克隆到新的目录下。
                git clone git@github.com:<用户名>/<仓库名>.git /some_other_path/<仓库名> -o o
                “/some_other_path/<仓库名>”可以不写默认放到当前目录下的仓库名文件夹里,
                “-o o”重命名远程仓库的别名,默认是origin
    18、git branch:查看分支。
                补充:
                    git branch --set-upstream branch-name origin/branch-name:创建本机分支与远程分支的链接关系。
                    git branch --set-upstream-to=o/server_side_branch_name your_branch_name
    19、git branch <name>:创建分支name。
    20、git checkout <name>:切换到分支name。
                补充:
                    git checkout <commit-id>:这个操作将你带回过去,同时保存较新提交。(有点像进入了一个过去时间点,切把这个时间点当作一个新的分支;其实就 是新建了一个未命名的分支,使用git checkout -b来命名和保存)

                    git checkout "@{10 minutes age}":切换到十分钟前的版本(commit-id)

                    git checkout "@{5}":切换到倒数第5个commit-id。

    21、git checkout -b <name>:创建并切换到分支name。
                补充:
                    相当于git branch <name>和git checkout <name>两条命令的效果。
                    git checkout -b <name> origin/<name>创建远程origin的name分支到本地。
    22、git merge <name>:合并name分支到当前分支中。
                如果合并的时候产生了冲突,git会告诉我们在哪个文件上产生了冲突(git status也会告诉我们冲突的文件),必须手动解决冲突后在提交。
                补充:
                    git merge --no-ff -m "描述信息" branchname
                    --no-ff参数表示禁止使用Fast forward模式合并,应为本次合并要创建一个新的commit,所以要加入-m,将commit描写写进去。
    23、git branch -d <name>:删除分支name。
                补充:
                    git branch -D <name>:强行删除那么分支。当一个分支没有被合并过,但是想删除时就会用到这个命令。
                    git branch -m [<oldbranch>] <newbranch>:移动或重命名一个分支。
    24、git stash:把当前工作现场储藏到工作栈中(入栈操作)。
                补充:
                    暂存区和工作区中未被添加到本地版本库中的修改,并不属于某一个分支,当你切换一个分支后,使用git status查看发现这些未保持的修改还在,所以出现了git stash命令,来保持这些不想提交的修改。
                    现在你在br1分支中新建一个test文件,并且使用git add test命令将其添加到暂存区中,此时你切换到br2分支中,使用git status查看的结果和在br1分支中使用git status的结果一样,再br2分支中使用git commit -m "XXX"命令将暂存区中的内容提交到版本库中,test文件就属于br2了,切换到br1后你就找不到test文件的任何信息了。
    25、git stash list:查看储藏工作现场的栈里的内容。

    26、git stash apply stash@{n}:将工作栈中的第n个工作现场回复出来。

    27、git stash drop:删除工作栈中第一个工作现场。
    28、git stash pop:回复工作现场的同时把相应的内容从工作栈中删除。(出栈操作)。
    29、git remote:查看远程库信息。
                -v:查看远程库详细信息,其中fetch是抓取地址;push是推送地址。
    30、git pull:把别人最新的提交从远程上抓取下来。
                从服务器下载数据库,并跟自己的数据库合并。
                git fetch:从服务器下载数据库,并放到新的分支,不和自己的数据库合并。
                补充:
                    git pull /the/other/clone:从另一个克隆抓取更新。
                    git pull 相当与git fetch 和git merge orign/<branch>
    31、git tag <name> [commit-id]:在commit-id处创建一个标签,commit-id默认为HEAD。
                -a tagname -m "blablabla...":指定标签信息。
                -s tagname -m "blablabla..." :可以使用PGP签名标签。
    32、git tag:查看所有标签。
    33、git show <tagname>:查看标签详细信息。
    34、git tag -d <tagname>:删除本地标签。
    35、git push origin :refs/tags/tagname:删除一个远程标签。
    36、git push origin origin tagname:推送标签到远程。
    37、git push origin --tags:推送全部标签到远程。
    38、.gitignore文件:忽略特殊文件,https://github.com/github/gitignore
    39、git whatchanged:
    40、git mv:重命名文件或者文件夹。(git mv oldfile newfile)
    41、git revert <commit -id>:将还原特定哈希值的提交。(即撤销此步的提交)
    42、git cherry-pick <commit-id>:??
    43、git rebase -i HEAD~10:重新修改提交日记。
    44、git blame <file>:列出文件的修改历史记录。

    主要参考:廖雪峰blog

  • 相关阅读:
    第五章:Admin管理后台
    第五章:Admin管理后台
    第五章:Admin管理后台
    第五章:Admin管理后台
    第四章:Django表单
    第四章:Django表单
    第四章:Django表单
    第四章:Django表单
    第四章:Django表单
    第四章:Django表单
  • 原文地址:https://www.cnblogs.com/halu126/p/4667971.html
Copyright © 2011-2022 走看看