Git 用法小结
来源:互联网 发布:ps素材软件 编辑:程序博客网 时间:2024/04/29 06:06
Git是一个开源的代码管理的强大工具,能很好的实现处理团队协作开发时的代码管理功能。
下面将有关git的常用操作做一个总结:
1)合并两次commit的提交纪录流程:
第一步: git rebase -i HEAD~2 //2就代表当前git log中最顶端的两次commit
第二步:弹出vi的编辑窗口,看到两行已pick开头的message,此时需将合并的commit message之前的pick改为squash或简写s,则合并后的commit msg为此时保留的pick之后的那一行。编辑完后命令行执行:wq
第三步:弹出commit msg的编辑窗口,把不要的msg行删掉,执行:wq保存退出。此时执行git log可以看到本地已经合并了。
第四步:push的远端服务器。执行git push -f,同步到远端git服务器。
注意:如果执行完第一步之后,弹出的vi编辑界面不正常(比如无法执行命令行),则可以执行git config --global core.editor /usr/bin/vim,则可以畅快的编辑了。
2)git 查看某一次提交的修改了哪些文件:
git log --oneline --stat (除了log信息,还包含修改文件的明细)
git log --oneline (依次显示commit的log信息,仅一行)
3)git回退服务器提交:
git reset --hard <commit_id>
git push origin HEAD --force
4) git 修改commit信息
对于修改最近一次提交的情况:
git commit --amend即可弹出vi修改编辑界面,修改完成:wq退出即可,如果代码已经push的origin,就要推到远端,如果分支对应,则执行
git push -f
对于修改中间某一次的信息,比如倒数第三次:
git rebase -i HEAD~3,之后会出来三行
这个命令出来之后,会出来三行东东:
pick:*******
pick:*******
pick:*******
将需要修改的行的pick改为edit或e,然后wq保存退出,此时git log会发现刚修改为edit的commit已变为最新的提交,
之后执行git commit --amend ,就跟上一种情况一样了。修改完成还要把顺序理顺过来,执行:
git rebase --continue ,如果已经push到远端,则还需执行git push -f
5)git 撤销某次提交(只回退某次commit,而本地代码不会改动)
git reset --soft commit-id
6)重命名本地分支:
git branch -m oldbranchname newbranchname
7)删除远程分支:
git push origin :old-local-branch-name
或者git branch -r -d origin/branch_name
如果在删除之后使用git banch -a命令依然可以看到远程分支,则可执行git remote show origin查看分支状态:
kongbo@baal:/workspace/kongbo/release/light-vinci-en$ git remote show origin
* remote origin
Fetch URL: /workspace/vinci/vinci-light.git/
Push URL: /workspace/vinci/vinci-light.git/
HEAD branch: master
Remote branches:
factory tracked
master tracked
normal tracked
normal_international tracked
refs/remotes/origin/normal_test stale (use 'git remote prune' to remove)
Local branches configured for 'git pull':
master merges with remote master
normal_international merges with remote normal_international
Local refs configured for 'git push':
master pushes to master (local out of date)
normal_international pushes to normal_international (up to date)
可以看到红色标注的分支是不存在的,需要执行提示命令清除掉相关记录
执行
kongbo@baal:/workspace/kongbo/release/light-vinci-en$ git remote prune origin
Pruning origin
URL: /workspace/vinci/vinci-light.git/
* [pruned] origin/normal_test
可以看到,该分支记录在远端被彻底清除。
8)本地分支推送到远程:
git push origin new-local-branch-name: new-local-branch-name
9)git推送代码遇到权限问题,日志如下:
kongbo@baal:/workspace/kongbo/release/vinci-light$ git push
Counting objects: 33, done.
Delta compression using up to 24 threads.
Compressing objects: 100% (29/29), done.
Writing objects: 100% (33/33), 22.06 KiB | 0 bytes/s, done.
Total 33 (delta 11), reused 0 (delta 0)
remote: error: insufficient permission for adding an object to repository database ./objects
remote: fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
To /workspace/vinci/vinci-light.git/
! [remote rejected] normal_international -> normal_international (unpacker error)
error: failed to push some refs to '/workspace/vinci/vinci-light.git/'
遇到这种问题需要登录到服务器端git仓储的根目录,具体到上述的问题就是/workspace/vinci/vinci-light.git/
然后执行如下操作:
ssh登录服务器
cd/workspace/vinci/vinci-light.git/
sudo chmod -R g+ws *
sudo chgrp -R mygroup *
git config core.sharedRepository true
通常在执行完红字标示的命令就可以在local端推送了。
针对该问题的原因分析可参考http://www.91r.net/ask/6494913.html这篇文章。
10)查看某个文件的改动记录:
git log --pretty=oneline file
- git用法小结
- git基本用法小结
- Git 用法小结
- git 用法小结1
- git 用法小结2
- git用法小结--建立远程仓库
- git用法小结(1)--建立远程仓库
- git用法小结(1)--建立远程仓库
- git用法小结--建立远程仓库
- git用法小结(1)--建立远程仓库
- git用法小结(1)--建立远程仓库
- git用法小结(1)--建立远程仓库
- git用法小结(1)--建立远程仓库
- git小结
- git 小结
- git 小结
- git 小结
- git小结
- javascript学习笔记之Call()和Apply()
- 我的娱乐网站记录
- Android开发学习总结(一)——搭建最新版本的Android开发环境
- 对焦技术
- Cisco 计划任务Kron
- Git 用法小结
- Matlab sym 与 syms的区别
- url编码和解码
- zookeeper(二) API开发
- JQuery获取checkBox是否选中
- C#利用Windows自带gdi32.dll实现抓取屏幕功能实例
- __attribute__ 你知多少?
- 用户账号的归档和反归档(示例代码说明)
- JAVA 内存划分和GC