git常用命令总结
http://www.oschina.net/question/31384_157479
---------------------------
一、本地操作
1、文件添加到暂存区
git add *.txt test.java
git add . 添加所有修改过的文件到暂存区,包括未跟踪文件,忽略文件不包含
2、比较工作目录和暂存区快照之间的差异,也就是修改之后没有add的内容:
git diff
3、查看repository的状态
git status
4、比较上一次提交的快照和暂存区中文件的差别,两个命令效果一样:
git diff --staged(1.6以上版本可用),git diff –cached
5、忽略某些文件,建立名字为.gitignore的文件,将需要忽略的文件添加进去即可。
6、提交更新
git commit –m “描述内容”
7、跳过暂存区直接提交,加上-a参数
git commit –a –m “跳过暂存区提交”
8、删除仓库中的某个文件
8.1、直接删除文件
使用 git rm xxx.txt ,之后再进行commit即可删除。
8.2、强制删除add到暂存区的文件,使用参数-f
git rm –f xxx.txt
9、将某些文件从跟踪列表中移除,需要递归的话,使用 \
git rm --cached xxx.txt
git rm --cached \*.class 将当前目录及其子目录中的以class结尾的文件从跟踪列表移除。
git rm --cached -r 文件名 递归移除
9、重命名文件
git mv delete.txt add.txt
10、查看log
git log –p -2
-p 选项展开显示每次提交的内容差异
-<n> 仅显示最近的若干条提交
--stat 仅显示简要的增改行数统计
--pretty 自己制定日志显示格式
=oneline 将每个提交放在一行显示
= format
--graph开头多出一些 ASCII 字符串表示的简单图形,形象地展示了每个提交所在的分支及其分化衍合情况
11、提交完了才发现漏掉了几个文件没有加,或者提交信息写错了
git commit --amend
12、取消已暂存的文件
git reset HEAD xxx.txt
13、取消对工作区文件的修改,--是转义的意思,比如有个文件叫master,如果不加--就切换到master分支上了,加了代表--后的一定是文件。主要是撤销工作区文件的修改,提交到暂存区后不会回滚到工作区。比如文件内容是 aaa,版本库也是 aaa。现在修改为 aaabbb,使用该命令相当于把aaabbb修改为aaa,前提是没有将文件提交到暂存区(add)或版本库(commit).相当于手工把aaa后的bbb删除了,只留下aaa。
git checkout -- xxx.txt
14、版本回退
通过上面10中可以看到每次提交的 id号。
git reset --hard id
二、远程仓库相关
1、从指定远程库下载项目
git clone URL
查看关联远程仓库信息
git remote 或者 git remote –v
2、 添加一个新的远程仓库
git remote add [shortname] [url]
git remote add csb URL
3、 从远程仓库抓取数据(远程仓库中有的而本地没有的数据)
git fetch [remote-name] 不会执行merge命令
git pull [remote-name] 会自动执行merge命令
4、 推送数据到远程仓库
git push [remote-name] [branch-name] 或
git push -u [remote-name] [branch-name]
5、 查看远程仓库信息
git remote show [remote-name]
6、 远程仓库的重命名
git remote rename [old-nane] [new-name]
7、 删除远程仓库
git remote rm [remote-name]
8、 创建一个含有附注的标签(annotated)
git tag –a v1.0 –m “my first annotated tag”
git show [标签名] 显示标签的版本信息
9、 创建一个含有签署的标签(signed)
git tag –s v1.1 –m “my first signed tag”
10、创建一个轻量标签(lightweight)
git tag v1.2
11、验证标签
git tag –v [tag-name]
12、后期加注标签
git log –pretty=oneline
git tag –a [tag-name] [校验和]
13、标签推送到远程仓库
git push origin [tag-name]
git push origin --tags 将所有标签推送
三、常见问题
①fork后修改本地代码,并提交后,解决冲突
当我们fork了别人的工程之后。我们在本地修改了该工程,并且提交到了远程仓库。当我们想要将别人的工程合并到我们的工程上的时候。如果出现了合并不成功,提示有冲突的时候。
1、首先将别人的工程的远程仓库添加到我们本地的分支。
git remote add [别名] [别人工程的URL]
git remote -v 查看我的的远端分支情况
$ git remote -v eagleapp URL
2、在master上直接合并添加了的分支。
git fetch eagleapp
git merge eagleapp/master
3、之后就会出现冲突提示,我们就手动去解决冲突。
4、解决后,将冲突文件提交到远程仓库。
git add filename
git commit -m "xxxx"
git push -u origin
5、在将别人的工程合并到我们的工程上就行。
②如何删除远程仓库文件
Git 删除远程仓库文件
一种是 git rm --cached "文件路径",不删除物理文件,仅将该文件从跟踪列表中删除;
一种是 git rm --f "文件路径",不仅将该文件从跟踪列表中删除,还会将物理文件删除(不会回收到垃圾桶)
执行上面其中一步,如果没有和远程仓库关联,需要先:
git remote add 别名(会作为下一步的远程仓库名) url
之后:
git push -u 远程仓库名 分支名
例如:
git rm --cached -r 文件名
git commit -m "123"
git push -u oringin master