标签:
由于之前做个web项目去转盘网(http://www.quzhuanpan.com), 和几个朋友一起做的,考虑到代码托管,团队协作,所以深入研究了下git,下面是一些git常用的命令,分享给大家,希望大家喜欢。
1. 建立空的版本库 (管理员使用,普通用户忽略)
git --bare init
或者 :
mkdir -p src.git
cd src.git
git --bare init --shared
2. 整理源代码 (管理员使用,普通用户忽略)
(1) 删除源代码里的编译生成的文件和文件夹
(2) 删除源代码里的.git文件夹和.gitignore文件
find . -type d -name ".git"|xargs rm -rf
find . -type f -name ".gitignore"|xargs rm -rf
find . -type f -name ".gitattributes"|xargs rm -rf
在一个目录下面递归查找包含指定字符串的文件
grep ‘string‘ . -r --color
3. 配置git (重要,每个用户都需要使用)
git config --global color.ui true 使git 能还显示颜色
git config --global user.name "nick.wang" 设置git 用户名
git config --global user.email wangwei@wldtech.com 设置git 邮箱
4. 查看历史 (重要,每个用户经常使用)
git log --name-status
显示每次修改的LOG和修改的文件列表
git log --graph
显示版本图
5. 查看差异
git diff
显示工作空间与暂存区的差异
git diff --cached
git diff --staged
显示暂存区与git库的差异
6. 忽略已跟踪的文件
已经跟踪的文件,再用.gitignore忽略会不起作用,此时可以用下面的命令:
git update-index --assume-unchanged FILE_NAME
撤销该操作使用下面的命令:
git update-index --no-assume-unchanged FILE_NAME
7. 合并最近的两次提交
git commit --amend -m "XXXX"
将本次提交一上一次提交合并为一次提交
8. 远程操作
git remote -v 显示远程版本库
git remote add NAME URL添加远程版本库
例如: git remote add mt6575-ics2 wangwei@192.168.1.238:~/repo/lily5-ics2.git
如果要将本地版本库中的分支branch_A推送到mt6575-ics2上的远程分支branch_B上
可以:
git push mt6575-ics2 branch_A:branch_B
如果要将mt6575-ics2所有分支拉到本地来
可以:
git fetch mt6575-ics2
再将工作空间切换到mt6575-ics2的branch_B
git checkout --track mt6575-ics2/branch_B
如果B代码库是从A代码库clone而来,那么A库的名字自动为: origin
可以:git pull orgin master, 或者git push orgin master
将本地分支推送到远程分支
git push origin local_branch_name:remote_branch_name
显示远程分支:
git branch -r
显示所有分支(包含远程分支和本地分支)
git branch -a
获取远程分支:
git checkout -b 本地分支名 远程分支名
或者
git checkout --track origin/R8625QSOSKQLY_3020
以上两条命令效果差不多
9. 分支操作
显示本地分支
git branch
从当前位置创建分支
git branch <branch_name>
从指定位置创建分支
git branch <branch_name> <commit_id>
将已经创建的分支重命名
git branch -m <old_branch_name> <new_branch_name>
显示远程分支
git branch -r
显示本地分支和远程分支
git branch -a
将远程版本库的分支branch_a取到本地,同自动创建一个名字为branch_a的本地分支
git checkout --track origin/branch_a
注意: origin可以换成其它远程版本库的别名
例如:
假如用户在8705c的版本库中工作,又给8703c的远程版本库取了别名:
git remote add 8703C public@192.168.1.40:~/repo/8703c-ap.git
那么,可以在8705c的版本库中通过别名8703C去获取8703c的任何分支
git fetch 8703C //同步8703c到8705c的版本库
git branch -a //显示8703c和8705c的所有分支信息
git chekcout --track 8703C/branch_a
//将8703c的远程分支拉到8705c的本地版本库,
//并自动创建同名的本地分支,再切换到此分支
10. 打标签
git tag -a MOBA-MSM8x25Q-3050-AP-V0.0 -m "xxx"
git tag -s v1.x -m "xxx"
11. 版本回退
git reset --hard commit_id 彻底回退到指定版本,包括版本库和工作空间
git checkout commit_id
12. 保存工作状态
git stash "the comment of current working state" //将工作空间的修改保存,然后将工作空间的代码恢复到最新一次提交的状态
git stash apply //恢复到上面的状态
也可以多次缓存,系统会将缓存保存在队列中,用下面的命令可以看到已经保存的缓存列表
git stash list
使用任意一个缓存可以用下面的命令
git stash apply stash@{1} //1可以根据需要改成其它数字
13. 将服务器上的版本库回退
git reset --hard <commit_id>
git push origin HEAD --force
14. 从codeaurora上下载AP代码的命令:
repo init -u git://codeaurora.org/platform/manifest.git -b release -m LNX.LA.3.2.1.4-00610-8x26.0.xml --repo-url=git://codeaurora.org/tools/repo.git
15. patch相关操作
将当前分支与指定分支比较,将不同的提交生成patch
git format-patch -M <local branch name>
切换到目标分支后,应用某个patch
git am XXXX.patch
同一个分支上可以提取任意两次提交之间的patch
git format-patch <commit_id old>..<commit_id new>
注意:<commit_id old>代表离当前较久远的一次提交,<commit_id new>代表离当前时间较近的一次提交,两次提交之间用两个.连接。
git是个十分方便的工具,合理利用,事倍功半。
另外有兴趣的朋友也可以看看我们的gif在线制作工具:http://sosogif.com/make_online.jsp
标签:
原文地址:http://www.cnblogs.com/hardmore/p/5451998.html