git 操作
如果已存在项目
1、在git bash里 进入项目所在目录, git init //初始化
2、git config --globle user.name 'happy' //设置远程仓库
3、git config --globle user.email 'stone8386@sina.com' //设置远程仓库
4、用浏览器打开远端git 仓库, 比如 https://gitee.com/, 新建仓库,比如salary, 然后复制 克隆地址, 比如“https://gitee.com/happy76819/salary.git”
5、git remote add salary 'https://gitee.com/happy76819/salary.git' //设置远程仓库地址
6、git pull salary master //从远程仓库拉取文件和本地文件合并
7、git add -A //提交到本地临时库
8、git commit -m'first commit' //提交到本地仓库
9、git push --set-upstream salary master
10、 git push //上传到远程仓库
git status //当前状态
git reset HEAD <file> //把暂存区恢复到之前的状态 用本地仓库文件覆盖暂存区文件 git reset HEAD~2 回到前2个快照
git chechout --<file> //用暂存区的文件覆盖工作区的文件
git log //查看历史记录
git reset --mixed HEAD~ ([--mixed],默认添加该参数)
-移动HEAD的指向, 将其指向上一个快照
-将HEAD移动后指向的快照回滚到暂存区
git reset --soft HEAD~
移动HEAD指向,将其指向上一个快照, 不会把仓库文件覆盖到暂存区
git reset --hard HEAD~
移动HEAD的指向,将其指向上一个快照
将HEAD移动后 指向的快照回滚到暂存区
将暂存区的文件还原到工作目录
git reset {id} 直接回滚到指定快照 (git log 查看id)
git reset 版本快照 文件名/路径
比较工作区和暂存区
git diff
执行带 --amend 选项的commit 提交命令, git就会更正最近一次提交 不会产生新的快照
git commit --amend -m '新的说明'
删除文件
git rm <filename> //删除只是工作目录和暂存区域的文件, 也就是取消跟踪, 在下次提交时不纳入版本管理
git reset --soft HEAD~ 把仓库里的快照恢复到上一快照
重命名
git mv oldfilename newfilename
git 分支
创建分支
git branch 分支名称
git log --decorate
切换分支
git checkout 分支名
git log --decorate --online --graph --all
合并分支
git merge 分支名
git checkout -b 分支名 创建分支,并切换过去
删除分支
git branch -d 分支名
Git忽略规则(.gitignore配置)不生效原因和解决
第一种方法:
.gitignore中已经标明忽略的文件目录下的文件,git push的时候还会出现在push的目录中,或者用git status查看状态,想要忽略的文件还是显示被追踪状态。
原因是因为在git忽略目录中,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的,
这时候我们就应该先把本地缓存删除,然后再进行git的提交,这样就不会出现忽略的文件了。
解决方法: git清除本地缓存(改变成未track状态),然后再提交:
[root@kevin ~]
# git rm -r --cached .
[root@kevin ~]
# git add .
[root@kevin ~]
# git commit -m 'update .gitignore'
[root@kevin ~]
# git push -u origin master
需要特别注意的是:
1).gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
2)想要.gitignore起作用,必须要在这些文件不在暂存区中才可以,.gitignore文件只是忽略没有被staged(cached)文件,
对于已经被staged文件,加入ignore文件时一定要先从staged移除,才可以忽略。
第二种方法:(推荐)
在每个clone下来的仓库中手动设置不要检查特定文件的更改情况。
[root@kevin ~]
# git update-index --assume-unchanged PATH //在PATH处输入要忽略的文件