分享

Git操作小记

 codingparty 2015-12-28

本博客采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本博客文章必须也遵循 署名-非商业用途-保持一致 的创作共用协议.

Git操作清单

持续更新…

提交和删除

# 使用一次新的commit,替代上一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend -m [message]

# 重做上一次commit,并包括指定文件的新变化
$ git commit --amend ...

# 删除暂存文件, 不删除本地
$ git rm --cached filename

# 本地的dev分支推送的远程dev分支(远程没有则创建)
$ git push origin dev:dev 

# 从远程仓库抓取所有本地没有的内容
$ git fetch origin

# 推送, 本地的修改推送到远程remote中的branch分支上
$ git push (remote) (branch)

# 选择一个commit,合并进当前分支
$ git cherry-pick [commit]

分支

# 创建并切换分支
$ git checkout -b dev

# 合并分支
$ git merge dev

# 删除分支
$ git branch -d dev

# 删除远程分支
$ git push origin --delete <branchName>

# 查看各分支及追踪的远程分支
$ git branch -vv

# 强行删除未合并的分支
$ git branch -D feature-vulcan

# 查看详细的远程仓库信息
$ git remote show (remote-name)

# 创建并切换分支, 并与远程分支关联, 作用是git pull的时候会从远程remotename/branch分支拉取数据
$ git checkout -b [branch] [remotename]/[branch]

# 改变当前本地仓库追踪的远程分支
$ git branch -u origin/serverfix

# 删除远程名为serverfix分支
$ git push origin --delete serverfix

# 新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch]

# 建立追踪关系,在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch]

# 重命令远程分支(devel 分支重命名为 develop 分支)
# 1. 删除远程分支
$ git push --delete origin devel
# 2. 重命名本地峰值
$ git branch -m devel develop
# 3. 推送本地分支
$ git push origin develop

查看信息

# 查看分支合并状况
$ git log--graph --pretty=oneline --abbrev-commit

# 查看提交记录, 并能看到文件的修改
$ git log--stat

# 显示指定文件相关的每一次diff
$ git log-p [file]

# 显示指定文件是什么人在什么时间修改过
$ git blame [file]

# 显示暂存区和工作区的差异
$ git diff

# 显示暂存区和上一个commit的差异
$ git diff --cached []

# 显示工作区与当前分支最新commit之间的差异
$ git diff HEAD

# 显示两次提交之间的差异
$ git diff [first-branch]...[second-branch]

标签

# 新建一个tag在当前commit
$ git tag[tag]

# 新建一个tag在指定commit
$ git tag[tag] [commit]

# 提交指定tag
$ git push [remote] [tag]

# 提交所有tag
$ git push [remote] --tags

# 新建一个分支,指向某个tag
$ git checkout -b[branch] [tag]

# 删除远程标签
$ git push origin --deletetag<tagname>

# 获取远程的tag
$ git fetch origin tag<tagname>

撤销

# 版本回退 只需要添加commit版本号的前几位
git reset--hard 3628164

# 恢复暂存区的指定文件到工作区
$ git checkout [file]

# 恢复某个commit的指定文件到工作区
$ git checkout [commit] [file]

# 恢复上一个commit的所有文件到工作区
$ git checkout .

# 对某个文件进行版本回退
$ git resetcommit号 filename

# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
$ git reset[file]

# 重置暂存区与工作区,与上一次commit保持一致
$ git reset--hard

# 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
$ git reset[commit]

# 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
$ git reset--hard [commit]

# 重置当前HEAD为指定commit,但保持暂存区和工作区不变
$ git reset--keep [commit]

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

保持主分支同步更新

多人协作时, 首先fork后自己仓库, 然后clone到本地, 创建自己的分支

# fork该仓库git@github.com:tornadoweb/tornado.git
$ git clone git@github.com:Dinosaurliu/tornado.git
# 创建并切换到开发分支
$ git checkout -b dev

持续在dev分支开发新功能, 当在分支开发功能时可能原仓库推送了新的功能, 需要更新master主分支

# 切换到master主分支
$ git checkout master
# 增加新的远程仓库, 命名为upstream
$ git remote add upstream git@github.com:tornadoweb/tornado.git
# 查看当前的远程仓库
$ git remote -v

# 同步远程仓库的更新, 拉取upstream对应的远程仓库的更新, 并解决冲突, 注意fetch后会存储在upstream/master本地分支
$ git fetch upstream# git查找upstream对应服务器, 从中抓取本地没有的数据,并且更新本地数据库,移动 origin/master 指针指向新的、更新后的位置。
# 合并远程master分支
$ git merge upstream/master# 将最新的origin/master合并到本地master分支上

参考链接

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多