关闭

git使用方法记录

191人阅读 评论(0) 收藏 举报
分类:

从上到下的顺序,记录所进行的操作


git clone path

下载远程git仓库


修改文件
vi file

git status
修改文件后,还没有git add时,可以看到提示,有文件还没有被add

git diff
修改文件后,还没有git add时,查看不同

git add file

把文件添加到stage区


git diff
add后,就看不到不同了

当有一个文件误加入到了stage区,想要把这个文件从stage区去掉。

git reset head -- test/build.gradle

git commit -m "提交注释"

把修改进行提交了

(如果你不想先add,再进行commit的话,可以使用git commit -am "提交注释"。注意,在m前多了一个a。

    使用这个命令,可以直接把已经修改过的文件自动add,然后commit。新生成的文件不在范围内)


git push

把commit的内容,push到远程仓库上去


再修改文件
vi file

git add
把文件添加到stage区

git diff --cached
查看git add后,添加到stage区的文件,和上次一commit的文件的不同(没有commit记录的话,就看不到)。

注意,git add后,git diff就看不到不同了。


git diff head -- any-try/build.gradle

查看工作空间中的某个文件和本地仓库上的最新文件有什么不同

(也可用git difftool命令,这个是以图形化显示)


git diff head

查看工作空间中的所有文件和本地仓库上的最新文件有什么不同


git diff HEAD^ HEAD

比较了当最近的这次提交与上一次提交之间的差异


当别人修改了远程分支后,你想把远程分支的数据下载到本地分支(本地分支已存在)

注意:这里仅仅是下载到你的本地分支上,还没有合并到你的工作目录里。

git fetch origin/master


查看本地分支和远程分支的差异

git diff master origin/master


查看提交的文件

git log --name-status -2 --pretty=oneline

(--name-status显示新增、修改、删除的文件清单,-2 显示几个提交,--pretty=oneline代表美化显示)

https://git-scm.com/book/zh/v1/Git-%E5%9F%BA%E7%A1%80-%E6%9F%A5%E7%9C%8B%E6%8F%90%E4%BA%A4%E5%8E%86%E5%8F%B2


----------------------------------------------------

仓库名例如:origin/master,中的origin是什么意思?

它是一个代表“远程的”标记名称,后面是真正的仓库名称。

[origin/master]在git里被称作“远程分支”。origin是远程的标记名称,master被称为“分支”。

(“远程名称”是一个代码仓库别名,和本地目录或URL是一个含义,你可以通过"git remote"命令自由定义额外的“远程名称”。但“git clone”命令默认使用的是“origin”这个名称。)


使用Eclipse插件时,为什么没有缓存区(或叫暂存区,就是Stage区)的概念?

缓存区的目的就是让你选择,你要commit哪些代码。用Eclipse进行commit时,会出来一个对话框让你选你要commit哪些代码。这个对话框就是缓存区的概念。



如何在本地新建立一个工程,上传到远程仓库中?

先在远程仓库中建立一个分支,例如test(https://github.com/yourname/test.git)

然后,在本地建立文件夹和文件,最后上传:

mkdir my-project

cd my-project

git init
git add README.md
git commit -m "首次提交代码"
git remote add origin https://github.com/wteam-xq/testGit.git
git push -u origin master

(git push -u 代表push的同时会指定当前分支的upstream)

(什么是upstream:http://blog.angular.in/git-pushmo-ren-fen-zhi/)


git push和git fetch/ git merge的区别

在远程分支和本地分支没有冲突时,git push = git fetch + git merge

git fetch 是把远程分支上的内容取下来,放到本地分支上(并不放到工作区)。

git merge 是把本地分支上内容,合并到工作工作区(就是你实际看到代码的区域)

用git pull的话,会自动完成上面的步骤。


在远程分支和本地分支发生冲突时,git push = git fetch + git merge + git stash + git stash pop

在git fetch之后,如果代码有冲突的,做git merge的话,会报错:

error: Your local changes to the following files would be overwritten by merge: xxx/xxx/xxx.java
Please, commit your changes or stash them before you can merge.
Aborting

这时,需要使用git stash命令把代码暂时保存起来,这时工作区的代码会保存到栈上,然后本地工作区间的代码跟本地仓库代码会同步,

然后使用git merge命令,把本地分支上的代码更新到工作区(工作区的代码变成了本地分支的代码)

再用git stash pop把刚才保存的代码取出来,并合并到工作区上,这时代码出错了冲突:

Auto-merging XXX.gradle
CONFLICT (content): Merge conflict in XXX.gradle

再用编辑器,把文件内容修改一下,并保存,就完成了。

上面的并于冲突的过程,如果用git pull的话,系统会自动完成上面的步骤。

(参考:http://www.jianshu.com/p/898e766d22e1)


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:480472次
    • 积分:6471
    • 等级:
    • 排名:第3745名
    • 原创:125篇
    • 转载:345篇
    • 译文:0篇
    • 评论:64条
    最新评论