Git总结

作者: 圆土豆 | 来源:发表于2017-05-25 11:59 被阅读0次

    Git

    在上家公司时使用git管理代码,当时使用的稀里糊涂,有些地方不是太明白。现在这家公司把代码移到git上管理了,有必要很明白的弄清楚一些命令的含义。现在把资料整理出来,供以后忘记时使用。有需要的人也可以看看。欢迎大家提意见。

    1、新建代码库

    在当前目录新建一个Git代码库

    • git init

    新建一个目录,将其初始化为Git代码库

    • git init [project-name]

    下载一个项目和它整个代码历史

    • git clone [url]

    clone下来的repo以url最后一个斜线后面的名称命名文件夹,也可以指定名字

    • git clone [url] [repo-name]

    2、配置Git

    显示当前的Git配置

    • git config --list

    设置提交代码时的用户信息

    • git config [--global] user.name "[name]"
    • git config [--global] user.email "[email address]"

    3、分支

    本地分支

    查看本地分支列表

    • git branch

    删除本地分支

    删除本地merge了的分支

    • git branch -d [branch-name]

    删除分支(不管有没有merge)

    • git branch -D [branch-name]

    重命名本地分支

    • git branch -m [old-name] [new-name]

    远程分支

    查看远程分支

    • git branch -r

    查看所有分支

    • git branch -va

    删除远程分支

    • git push --delete origin [branch-name]

    或者

    • git push origin :[branch-name]

    或者

    • git branch -dr [remote-branch]

    新建一个分支,但依然停留在当前分支

    • git branch [branch-name]

    切换到指定分支,并更新工作区

    • git checkout [branch-name]

    新建一个分支,并切换到该分支

    • git checkout -b [branch-name]

    新建一个分支,与指定的远程分支建立追踪关系

    • git branch -- track [local-branch] [remote-branch]

    建立追踪关系,在现有分支与制定远程分支之间

    • git branch --set-upstream [local-branch] [remote-branch]

    4、远程同步

    下载远程仓库的所有变动

    • git fetch [remote-repo]

    显示所有远程仓库

    • git remote -v

    显示某个远程仓库的信息

    • git remote show [remote-repo]

    增加一个新的远程仓库,并命名

    • git remote add [shortname] [url]

    取回远程主机某个分支的更新,再与本地指定的分支合并,如果远程分支与当前分支合并,则冒号后面的部分可以省略

    • git pull [remote-repo] [remote-branch-name]:[local-branch-name]

    上传本地指定分支的更新到远程仓库

    • git push [remote-repo] [local-branch]:[remote-branch]

    强行推送当前分支到远程仓库,即使有冲突

    • git push [remote-repo] --force

    推送所有分支到远程仓库

    • git push [remote-repo] --all

    每个git branch可以有个对应的upstream。假设你有两个upstream,分别叫server1和server2,本地master branch的upstream是server1上的master,那么当你不带参数直接输入git pull或者git push时,默认是对server1进行pull/push。如果你成功运行"git push -u server2 master",那么除了本地branch会被push到server2之外,还会把server2设置成upstream。

    • git push -u [remote-repo] [branch]

    5、本地提交

    提交暂存区到仓库区

    • git commit -m "message"

    提交暂存区的指定文件到�仓库区

    • git commit [file1] [file2] ... -m "message"

    提交工作区自上次commit之后的变化,直接到仓库区

    • git commit -a

    提交时显示所有diff信息

    • git commit -v

    使用一次新的commit,代替上一次提交;如果代码没有任何新的变化,则用来改写上一次的提交信息,只产生一次提交

    • git commit --amend -m "message"

    重做上一次commit,并包括指定文件的新变化

    • git commit --amend [file1] [file2] ...

    讲其他分支的指定commit应用在当前分支上

    • git cherry-pick [commit id]

    6、查看信息

    显示有变更的文件

    • git status

    显示当前分支的版本历史

    • git log

    显示指定文件的每一次diff

    • git log -p [file]

    显示暂存区和工作区的差异

    • git diff

    显示暂存区和上一个commit之间的差异

    • git diff --cached [file]

    显示工作区与当前分支最新commit之间的差异

    • git diff HEAD

    显示两次提交之间的差异

    • git diff [first-branch]...[second-branch]

    显示某次提交的元数据和内容变化

    • git show [commit-id]

    显示某次提交时,某个文件的内容

    • git show [commit]:[filename]

    撤销

    恢复暂存区中指定文件的内容到工作区中

    • git checkout [file]

    恢复某个commit的指定文件内容到暂存区和工作区

    • git checkout [commit] [file]

    撤销没有add的文件的修改(危险,本地改动会被撤销)
    $ git checkout -- [file]

    恢复暂存区的所有文件内容到工作区

    • git checkout .

    重置暂存区的指定文件(撤销add过的指定文件到工作区)

    • git reset [file]

    重置暂存区与工作区,与上一次commit保持一致(丢掉add的文件)

    • --soft - 缓存区和工作目录都不会被改变,回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
    • --mixed - 默认选项。缓存区和你指定的提交同步,但工作目录不受影响,此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
    • --hard - 缓存区和工作目录都同步到你指定的任务,彻底回退到某个版本,本地的源码也会变为上一个版本的内容

    例如 git reset --hard

    重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变

    如果要将撤销推送到远程仓库,再执行git push [] [] --force

    • git reset [commit]

    新建一个commit,用来撤销指定commit,后者的所有变化都将被前者抵消,并且应用到当前分支

    • git revert [commit]

    暂时将未提交的变化添加到stash

    • git stash

    恢复stash中第一条的改动到工作区,并将其在stash list中移除

    • git stash pop

    恢复stash中指定id的改动到工作区(并不在stash中删除)

    • git stash apply [stash@{id}]

    删除stash

    • git stash drop [stash@{id}]

    相关文章

      网友评论

          本文标题:Git总结

          本文链接:https://www.haomeiwen.com/subject/hdiaxxtx.html