转载

Git操作小记

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

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 分支
  • Git 分支 - 远程分支

查看信息

# 查看分支合并状况 $ 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] 
  • git如何删除远程仓库的某次错误提交

保持主分支同步更新

多人协作时, 首先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分支上 

参考链接

  • Fork A Repo
  • Syncing a fork
正文到此结束
Loading...