Git 使用小记
前言
以前也写过一篇关于 Git 日常命令,这里重新记录一遍。
添加多个仓库
添加多个仓库,可以通过不同的名称区分。
git remote add [名称] [仓库]
例子:
git remote add origin https://github.com/yourname/project.git
# 添加上游仓库
git remote add upstrem https://github.com/yourname/project2.git
完美修改提交
完美修改上次提交的代码,做一次更完美的commit,可以这样:
git reset commitId
,(注:不要带--hard
, 默认是--soft
)到上个版本git stash
,暂存修改git push --force
, 强制push
, 远程的最新的一次commit
被删除git stash pop
,释放暂存的修改,开始修改代码git add . -> git commit -m "massage" -> git push
简单总结一下,其实就是--soft
、--mixed
以及--hard
是三个恢复等级。
如果使用--soft
就仅仅将头指针恢复,已经add
的缓存以及工作空间的所有东西都不变。
如果使用--mixed
,就将头恢复掉,已经add
的缓存也会丢失掉,工作空间的代码什么的是不变的。
如果使用--hard
,那么一切就全都恢复了,头变,aad
的缓存消失,代码什么的也恢复到以前状态。
暂存功能
上面用到 git stash
命令,是用于暂存本地的修改,常用于切换分支时,保存当前本地改动。
# 将修改内容入栈
git stash
# 显示栈列表
git stash list
# 将栈中的 stash@{2} 取出
git stash apply stash@{2}
# 将最近入栈的取出
git stash pop
# 删除指定的栈
git stash drop stash@{0}
# 修改创建一个分支
git stash branch testchanges
强制拉取更新
# 放弃本地修改,强制拉取更新
git fetch --all
git reset --hard origin/master
git pull
# 指令是下载远程仓库最新内容,不做合并
git fetch
# 指令把HEAD指向master最新版本
git reset
更换仓库地址
git remote set-url origin gitURL
git remote rm origin
git push --set-upstream origin master
删除远程分支
git push [远程名] :[分支名]
重新修改日志
git commit --amend
git add 还原
# 这样文件退出暂存区,但是修改保留
git reset --mixed
git commit 还原
git reset --soft HEAD^
git reset --mixed
取消某次合并
git merge --abort #如果Git版本 >= 1.7.4
git reset --merge #如果Git版本 >= 1.6.1
打标签
git tag [标签名称]
git push origin --tags
查看全部分支
git branch -a
忽略对已入库文件的修改
# 忽略
git update-index --assume-unchanged FILENAME
# 恢复
git update-index --no-assume-unchanged FILENAME
添加多个远程仓库后,切换成主分支master
git remote add origin REMOTEGIT1
git remote add upstream REMOTEGIT2
git branch --set-branch-to=upstream/master master
更换远程仓库,解决本地跟远程的仓库,分支之间的链接关系
报错如下:
git remote add origin REMOTEGIT1
git remote rm origin
git remote add origin REMOTEGIT2
git branch --set-upstream master origin/master
git gc 垃圾回收
Git会收集所有松散对象并将它们存入 packfile,合并这些 packfile 进一个大的 packfile,然后将不被任何 commit 引用并且已存在一段时间 (数月) 的对象删除
后记
持续补充。。。