问个关于git的问题

#1

最近在学习golang,然后在github上学习了几个库,由于自己只是git clone下来使用,所以clone下来的代码自己没有改过,只是使用。
但是遇到个问题,举个栗子,https://github.com/dengsgo/fileboy.git
我 git clone https://github.com/dengsgo/fileboy.git 后,我不会改他的代码,以后经常使用 git pull拉下最新的,但是有时候我用git pull 拉下来后,提示“已经是最新的”,但是使用 git status 却输出 “
git status
位于分支 master
您的分支与上游分支 ‘origin/master’ 一致。

尚未暂存以备提交的变更:
(使用 “git add <文件>…” 更新要提交的内容)
(使用 “git checkout – <文件>…” 丢弃工作区的改动)

    修改:     .gitignore
    修改:     CHANGELOG.md
    修改:     LICENSE
    修改:     README.md
    修改:     build-darwin.bat
    修改:     build-linux.bat
    修改:     build-windows.bat
    修改:     fileboy.go
    修改:     filegirl.go
    修改:     notifer.go
    修改:     raw.go
    修改:     taskman.go
    修改:     util.go

修改尚未加入提交(使用 “git add” 和/或 “git commit -a”)

我的工作区是没动过的,只要跟github上一样就好,使用它提示的“使用 “git checkout – <文件>…” 丢弃工作区的改动”,不起作用,网上搜了,使用 git reset --hard orgin/master 后,在使用 git status 还是上面的提示。
然后我把本地的全删了,再次执行 git clone后,使用 git status ,输出是 “
位于分支 master
您的分支与上游分支 ‘origin/master’ 一致。

无文件要提交,干净的工作区

求问,如何在不删除库,重新git clone的情况下,能达到前面这样??
谢谢

openSUSE-Gossip-20190408-20190731
#2

使用"git checkout – ."命令就可以了。注意是两个减号,点号也不能忽略。

#3

讲道理修改过没有如 git add xx 等操作,直接 git checkout . 是能撤销修改的,如果添加过修改通过 git reset --hard origin/HEAD 也是能恢复到远程状态的。

如果都没啥用,删掉重新 clone 下来确实暴力而方便


那么问题来了是底谁偷偷修改了代码? :joy:
#4

这个我试过,真的没作用。。。

xyz@xyz-pc:~/localdisk/go/src/github.com/robfig/cron> git pull
已经是最新的。
xyz@xyz-pc:~/localdisk/go/src/github.com/robfig/cron> git status
位于分支 master
您的分支与上游分支 ‘origin/master’ 一致。

尚未暂存以备提交的变更:
(使用 “git add <文件>…” 更新要提交的内容)
(使用 “git checkout – <文件>…” 丢弃工作区的改动)

    修改:     .gitignore
    修改:     .travis.yml
    修改:     LICENSE
    修改:     README.md
    修改:     constantdelay.go
    修改:     constantdelay_test.go
    修改:     cron.go
    修改:     cron_test.go
    修改:     doc.go
    修改:     go.mod
    修改:     parser.go
    修改:     parser_test.go
    修改:     spec.go
    修改:     spec_test.go

修改尚未加入提交(使用 “git add” 和/或 “git commit -a”)
xyz@xyz-pc:~/localdisk/go/src/github.com/robfig/cron> git checkout – .
xyz@xyz-pc:~/localdisk/go/src/github.com/robfig/cron> git status
位于分支 master
您的分支与上游分支 ‘origin/master’ 一致。

尚未暂存以备提交的变更:
(使用 “git add <文件>…” 更新要提交的内容)
(使用 “git checkout – <文件>…” 丢弃工作区的改动)

    修改:     .gitignore
    修改:     .travis.yml
    修改:     LICENSE
    修改:     README.md
    修改:     constantdelay.go
    修改:     constantdelay_test.go
    修改:     cron.go
    修改:     cron_test.go
    修改:     doc.go
    修改:     go.mod
    修改:     parser.go
    修改:     parser_test.go
    修改:     spec.go
    修改:     spec_test.go

修改尚未加入提交(使用 “git add” 和/或 “git commit -a”)

真的,我clone下来的代码 没改过,再git pull 就这样。。。

#5

我也不知道说动了。。。
xyz@xyz-pc:~/localdisk/go/src/github.com/robfig/cron> git pull
已经是最新的。
xyz@xyz-pc:~/localdisk/go/src/github.com/robfig/cron> git status
位于分支 master
您的分支与上游分支 ‘origin/master’ 一致。

尚未暂存以备提交的变更:
(使用 “git add <文件>…” 更新要提交的内容)
(使用 “git checkout – <文件>…” 丢弃工作区的改动)

    修改:     .gitignore
    修改:     .travis.yml
    修改:     LICENSE
    修改:     README.md
    修改:     constantdelay.go
    修改:     constantdelay_test.go
    修改:     cron.go
    修改:     cron_test.go
    修改:     doc.go
    修改:     go.mod
    修改:     parser.go
    修改:     parser_test.go
    修改:     spec.go
    修改:     spec_test.go

修改尚未加入提交(使用 “git add” 和/或 “git commit -a”)
xyz@xyz-pc:~/localdisk/go/src/github.com/robfig/cron> git checkout – .
xyz@xyz-pc:~/localdisk/go/src/github.com/robfig/cron> git status
位于分支 master
您的分支与上游分支 ‘origin/master’ 一致。

尚未暂存以备提交的变更:
(使用 “git add <文件>…” 更新要提交的内容)
(使用 “git checkout – <文件>…” 丢弃工作区的改动)

    修改:     .gitignore
    修改:     .travis.yml
    修改:     LICENSE
    修改:     README.md
    修改:     constantdelay.go
    修改:     constantdelay_test.go
    修改:     cron.go
    修改:     cron_test.go
    修改:     doc.go
    修改:     go.mod
    修改:     parser.go
    修改:     parser_test.go
    修改:     spec.go
    修改:     spec_test.go

修改尚未加入提交(使用 “git add” 和/或 “git commit -a”)

xyz@xyz-pc:~/localdisk/go/src/github.com/robfig/cron> git reset --hard origin/master
HEAD 现在位于 61d93e0 Merge pull request #161 from liu-xuewen/master
xyz@xyz-pc:~/localdisk/go/src/github.com/robfig/cron> git status
位于分支 master
您的分支与上游分支 ‘origin/master’ 一致。

尚未暂存以备提交的变更:
(使用 “git add <文件>…” 更新要提交的内容)
(使用 “git checkout – <文件>…” 丢弃工作区的改动)

    修改:     .gitignore
    修改:     .travis.yml
    修改:     LICENSE
    修改:     README.md
    修改:     constantdelay.go
    修改:     constantdelay_test.go
    修改:     cron.go
    修改:     cron_test.go
    修改:     doc.go
    修改:     go.mod
    修改:     parser.go
    修改:     parser_test.go
    修改:     spec.go
    修改:     spec_test.go

修改尚未加入提交(使用 “git add” 和/或 “git commit -a”)

都不起作用。。。

#6

git diff 看看改什么了呢?

也许你用编辑器打开代码学习,关的时候自动保存,结果编辑设置问题导致空格和 tab 之类的跟上游不一样了?

#7

最简单的方法:把文件都删掉,.git文件夹(一个隐藏文件夹)不要删,然后 git checkout . 就能恢复到原样。

产生修改的原因可能是编辑器有某些设定,比如windows换行变为unix换行、切换编码等等,打开文件之后就自动修正这些配置,就产生了修改,我猜的,不一定准。当然你可以 git diff 看看,比较一下。

#8

@marguerite @chengguyun 谢谢你们的回复。
我工作区间里的代码,很少看(ide能直接把相应的api带出来),用编辑器打开看的情况比较少,并且不会去做修改(只是用人家的代码),kate编辑器也没自动保存。
我也试过把目录下除了.git文件夹外的全部删了,再重新 git checkout,然而也不好使,再使用git status查看,还是 位于分支 master
您的分支与上游分支 ‘origin/master’ 一致。

尚未暂存以备提交的变更:
(使用 “git add <文件>…” 更新要提交的内容)
(使用 “git checkout – <文件>…” 丢弃工作区的改动)

    修改:     .gitignore
    修改:     .travis.yml
    修改:     LICENSE
    修改:     README.md
    修改:     constantdelay.go
    修改:     constantdelay_test.go
    修改:     cron.go
    修改:     cron_test.go
    修改:     doc.go
    修改:     go.mod
    修改:     parser.go
    修改:     parser_test.go
    修改:     spec.go
    修改:     spec_test.go

修改尚未加入提交(使用 “git add” 和/或 “git commit -a”)

其实我也有点纳闷,用 git status 输出的前两行 不是提示 “位于分支 master
您的分支与上游分支 ‘origin/master’ 一致。”
那问什么 git checkout master 出来的还会不一样呢??:rofl:
看来晚上回去,用 git diff 看看 到底哪里不一样了

#9

我随便 git diff 一个文件看了下,内容没变化,提示 权限变了。。
diff --git a/write.go b/write.go
old mode 100644
new mode 100755
我代码是放在ntfs格式的盘里
毒娘找到了。。。
在项目目录下,执行
git config core.fileMode false
但是我再opensuse tw 下 设置全局变量
git config --global core.fileMode false
不起作用,难道是为了系统安全?

#10

NTFS出来挨打

#11

git出来挨打…怎么没实现好权限转换?

#12

我双系统,为了两边都能用,就把代码放在了ntfs格式的分区,然后再opensuse tw下操作就出问题了

#13

哦,那怎么想都是你的锅了(