首页 新闻 会员 周边 捐助

git 托管asp.net mvc 项目

0
悬赏园豆:40 [已解决问题] 解决于 2015-01-29 22:46

大家好,请帮助一下:是这样的 我和另一个小伙伴进行aps.net mvc的项目开发,但是我们不在同一地点的,于是就选择了开源中国的 git代码托管,但是在这里 出现了一个问题不知道该怎么解决,就是对于master的代码,我和另一个小伙伴都进行了修改,他把最新的版本修改了并推上去了,这里我同时在本地对自己要编写的代码进行了编写,同时也准备push到远程,但是这里有一个问题了,我必须先git pull下来过后才能够进行操作,但是对于pull下来的东西,他不会像本地的版本一样在合并的时候提示哪些地方进行了修改,这里我该怎么解决问题呢?

凌落的主页 凌落 | 初学一级 | 园豆:180
提问于:2015-01-21 21:31
< >
分享
最佳答案
1

1.

git log

 

 - 查找你想看的commit,取hash

 

比如我这里gitlog之后会出现

commit 0623d5bfb3cbf8d3642e56c50482bd4ab60f2f7b
Author: -----
Date:   Wed Jan 21 12:23:09 2015 +0900

    simple makefile

commit a23e7a12fefbd48ff15dc32c069fc9a7a90d536c
Merge: ace4991 a27c601
Author: ----
Date:   Tue Jan 20 15:30:26 2015 +0900

    Merge branch 'master' of https://github.com/fasterthanlime/rock

commit a27c6017a3934369e485ba65e7d679dabb4b4f89
Merge: 99f91b3 b5c1584
Author: ----
Date:   Mon Jan 19 16:34:21 2015 +0100

    Merge pull request #858 from davidhesselbom/patch-1
    
    Update AstBuilder.ooc

 

我想查看第三个commit的diff,只要知道hash,然后

2.

git diff a27c6017

 

 

就能看到diff

 

diff --git a/Makefile b/Makefile
index 372ed0b..07dec27 100644
--- a/Makefile
+++ b/Makefile
@@ -37,19 +37,9 @@ prepare_bootstrap:
        $(OOC) -driver=make rock.use --outpath=c-source -o=../bin/c_rock -v -pg +-w
        @echo "Done!"
 
-boehmgc:
-       $(MAKE) boehmgc-clean
-       mkdir -p $(VENDOR_PREFIX)
-       mkdir -p vendor-build
-       (cd vendor-build && ../vendor/gc/configure --prefix=$(VENDOR_PREFIX) --disable-shared --enable-static && $(MAKE) && $(MAKE) install)
-       rm -rf vendor-build
-
-boehmgc-clean:
-       rm -rf vendor-prefix vendor-build
-
 # For c-source based rock releases, 'make bootstrap' will compile a version
 # of rock from the C sources in build/, then use that version to re-compile itself
-bootstrap: boehmgc 
+bootstrap:
 ifneq ($(IS_BOOTSTRAP),)
        @echo "Creating bin/ in case it does not exist."
        mkdir -p bin/
@@ -63,7 +53,7 @@ else
        @exit 1
 endif

 

 

补充: 当然,如果只有一个hash,默认会和master比较,如果你打算比较两个古老的commit,可以用

 

git diff hash1 hash2

 

 

比如:

 

INSERT$ git diff 06708026c5bb597e7393d228b03df1fba5728800 a072525591facc740659e25c8e0280f54b6f805f
diff --git a/source/rock/middle/algo/typeAnalysis.ooc b/source/rock/middle/algo/typeAnalysis.ooc
index 1387cec..1d862fe 100644
--- a/source/rock/middle/algo/typeAnalysis.ooc
+++ b/source/rock/middle/algo/typeAnalysis.ooc
@@ -129,7 +129,7 @@ findCommonRoot: func(type1, type2: Type) -> Type {
 
     if(distance1 == -1 || distance2 == -1) return null
 
-    // Pointer vs class type -> Pointer
+    // Pointer vs clas type -> Pointer
     if(btype1 instanceOf?(BaseType) && btype1 isPointer() && btype2 getRef() && btype2 getRef() instanceOf?(ClassDecl)) {
         return _createSugarWith(btype1, type1)
     } else if(btype2 instanceOf?(BaseType) && btype2 isPointer() && btype1 getRef() && btype1 getRef() instanceOf?(ClassDecl)) {
;

 

再次更新:

 

如果是一个远程repo的fork, 你需要一些技巧:

 

git remote add upstream remoteseveraddress
git fetch upstream
git diff master upstream/master 

 

如果是一个远程repo的clone,那么可以直接:

 

git diff master origin/master
收获园豆:20
akisann | 菜鸟二级 |园豆:341 | 2015-01-21 22:32

您好?但是这样在我本地修改了,是远程的冲突啊,我push上去的时候他提示我必须先来下来啊然后再push,您说的这情况是直接在本地两个已经提交的版本之间的比较啊

凌落 | 园豆:180 (初学一级) | 2015-01-21 22:47

@凌落: 明白问题了…… 已经更新到了回答的最后面。

akisann | 园豆:341 (菜鸟二级) | 2015-01-21 22:59

@akisann: 我试试哈,亲

凌落 | 园豆:180 (初学一级) | 2015-01-21 23:02

@akisann: 相当感谢,目前的问题差不多了,明天继续看看,这个问题已经暂且解决了一些了,谢谢亲

凌落 | 园豆:180 (初学一级) | 2015-01-21 23:13

那么问题又来了,我在命令行里面输入 git diff master origin/master过后 在命令行里面就无法正常输入 例如 git add 文件等命令 ,老是在提醒我End 而无法输入了,这个时候该怎么办?谢谢

凌落 | 园豆:180 (初学一级) | 2015-01-25 22:40

@凌落: 按q退出……

跟more的操作是一样的啊

akisann | 园豆:341 (菜鸟二级) | 2015-01-26 06:22

@akisann: 还想问一个问题?就是 屏蔽某些不必要的文件 。git 。gitignore 这个 gitignore是文件夹还是文件?就是我进行此操作的时候吧 不晓得该怎么创建也就不知道下一步该怎么弄了

凌落 | 园豆:180 (初学一级) | 2015-01-29 22:47

@凌落: 在工程的根目录下创建.gitignore文件,然后按行把你想屏蔽的文件(夹)名写进去就行了

akisann | 园豆:341 (菜鸟二级) | 2015-01-30 08:01
其他回答(3)
0

在git log中应该可以看到哪些地方进行了修改

收获园豆:20
dudu | 园豆:30778 (高人七级) | 2015-01-21 22:08

但是在具体的 controller.cs里面看不到呢,他只是提示了那些文件被修改了,但是没指明具体的修改地方,如果是在本地的就能够发现的啊

支持(0) 反对(0) 凌落 | 园豆:180 (初学一级) | 2015-01-21 22:10

@凌落: 试试Show changes as unified diff

支持(0) 反对(0) dudu | 园豆:30778 (高人七级) | 2015-01-21 22:16

@dudu: git bash命令 不能输入样啊?

支持(0) 反对(0) 凌落 | 园豆:180 (初学一级) | 2015-01-21 22:23

@dudu:我的git是不是 vs里面的插件,是单独安装的呢,

支持(0) 反对(0) 凌落 | 园豆:180 (初学一级) | 2015-01-21 22:24

@凌落: 我这个用的不是VS插件,是TortoiseGit

支持(0) 反对(0) dudu | 园豆:30778 (高人七级) | 2015-01-21 22:36

@dudu: 乌龟和GIT?两个插件都用了?

支持(0) 反对(0) 凌落 | 园豆:180 (初学一级) | 2015-01-21 22:37

@dudu: 但是那个show changes as unified diff是在哪里使用啊?

支持(0) 反对(0) 凌落 | 园豆:180 (初学一级) | 2015-01-21 22:38

@凌落: 在git log中选择相应的文件,然后点击鼠标右键

支持(0) 反对(0) dudu | 园豆:30778 (高人七级) | 2015-01-21 22:42

@dudu: 不行啊,在命令行使用的时候呢

支持(0) 反对(0) 凌落 | 园豆:180 (初学一级) | 2015-01-21 22:45

@dudu: 介个:我指的是远程的pull下来,然后再在本地进行合并之前看不到到底具体是那个地方被修改,他只是提到某某文件被修改了呢

支持(0) 反对(0) 凌落 | 园豆:180 (初学一级) | 2015-01-21 22:54

@凌落: 试试这里的方法:compare local git branch with remote branch?

支持(0) 反对(0) dudu | 园豆:30778 (高人七级) | 2015-01-21 23:03

@dudu: 那么问题又来了,我如何看新增的文件?,刚才这个解答的比较可以的

支持(0) 反对(0) 凌落 | 园豆:180 (初学一级) | 2015-01-21 23:09

@凌落: 试试 git diff --cached --name-only --diff-filter=A 

详见:git ls-files: howto identify new files (added, not committed)?

支持(0) 反对(0) dudu | 园豆:30778 (高人七级) | 2015-01-21 23:20
0

使用SourceTree这种简单的git gui工具吧。。

幻天芒 | 园豆:37207 (高人七级) | 2015-01-22 12:40
0

用Git Extensions和Git Source Control Provider这两个工具的话,会很方便。安装看:http://www.cnblogs.com/zhongxinWang/

凡一二三 | 园豆:85 (初学一级) | 2015-01-22 16:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册