git使用方法记录

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


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


在 Git 中 Checkout 历史版本

git checkout -b name-of-new-branch commit_id


将某个文件的历史版本 checkout 到工作区("> </new/name/of/the/file>" 部分是新文件名,可以省略)

git show <sha1-of-a-commit>:</path/to/your/file> > </new/name/of/the/file>


切换到远程分支

git branch -a,列出所有分支名称如下:
remotes/origin/dev
remotes/origin/release


git checkout -b dev origin/dev,作用是checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支


如何修改本地分支的 tracking(在 pull 时,不指定分支就直接从 tracking 分支上 pull)

1,查看本地分支的 tracking

git branch -vv # 查看分支的 tracking

显示:4.0.0.cp      66a1de8 [origin/release-4.0.0-incubating: ahead 13] 增加注释

2,修改本地分支的 tracking

git branch --set-upstream 4.0.0.cp remotes/origin/4.0.0.cp

显示:

The --set-upstream flag is deprecated and will be removed. Consider using --track or --set-upstream-to

Branch 4.0.0.cp set up to track remote branch 4.0.0.cp from origin.

3,再次查看分支 tracking

* 4.0.0.cp      66a1de8 [origin/4.0.0.cp: ahead 1, behind 2] 增加注释


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

仓库名例如: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

git 取消修改,恢复版本 命令大全:http://blog.csdn.net/cankingapp/article/details/18312117

在 Git 中 Checkout 历史版本:https://liam0205.me/2015/04/29/git-checkout-history-version/



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值