最近在学习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的情况下,能达到前面这样??
谢谢
xzhao
(xzhao)
2
使用"git checkout – ."命令就可以了。注意是两个减号,点号也不能忽略。
zzndb
(zzndb)
3
讲道理修改过没有如 git add xx
等操作,直接 git checkout .
是能撤销修改的,如果添加过修改通过 git reset --hard origin/HEAD
也是能恢复到远程状态的。
如果都没啥用,删掉重新 clone 下来确实暴力而方便
那么问题来了是底谁偷偷修改了代码?
这个我试过,真的没作用。。。
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 就这样。。。
我也不知道说动了。。。
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”)
都不起作用。。。
git diff 看看改什么了呢?
也许你用编辑器打开代码学习,关的时候自动保存,结果编辑设置问题导致空格和 tab 之类的跟上游不一样了?
最简单的方法:把文件都删掉,.git文件夹(一个隐藏文件夹)不要删,然后 git checkout .
就能恢复到原样。
产生修改的原因可能是编辑器有某些设定,比如windows换行变为unix换行、切换编码等等,打开文件之后就自动修正这些配置,就产生了修改,我猜的,不一定准。当然你可以 git diff
看看,比较一下。
@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 出来的还会不一样呢??
看来晚上回去,用 git diff 看看 到底哪里不一样了
我随便 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
不起作用,难道是为了系统安全?
我双系统,为了两边都能用,就把代码放在了ntfs格式的分区,然后再opensuse tw下操作就出问题了