文章目录
- 打开
git gui
,新建一个仓库Create new repository - 打开git bash,右键可以更改字体大小,利用
git init
初始化一个仓库 - 在仓库工作目录下新建文件readme.txt,利用notepad++编译器,记事本,word不行
- 添加文件到仓库
git add readme.txt
:把文件添加到暂存区git commit -m "文件说明"
:暂存区覆盖当前分支master
- 添加文件夹及其里面的文件
git add 文件夹/
- 修改文件后,查看文件状态:
git status
- 或者
git diff 文件
—显示具体修改内容
- 修改后要再次提交
git add 文件
git commit -m "说明"
- 查看修改历史记录:
git log
利用git log --pretty=oneline
简化显示,也可以用git GUI查看历史版本 - 版本回退
git reset --hard HEAD^
回退上一个版本,利用^
个数控制回退几个版本 - 回退之后,如果未关电脑,想再回退到之前的最新版本:
git reset --hard 版本号
如果关掉电脑,不知道版本号,利用git reflog
查看 ,该命令记录了每一条命令及其作用的版本号 - 修改commit注释:
定位到某一版本后:git commit --amend
,在编辑器中直接修改 - 丢弃当前的修改:没有add到暂存区:
git checjkout -- 文件
add到了暂存区:先git reset HEAD 文件
,再git checjkout -- 文件
- 删除文件
git rm -f test.txt
强制删除,但是不能恢复,不建议- 先用文件管理器删除(版本库中还有)
- 利用
git rm test.txt
git commit -m "说明"
(确认不需要,彻底删除,版本库中也没了)
- 在本地仓库删除文件夹
$ git rm -r 我的文件夹/
此处-r表示递归所有子目录,如果你要删除的,是空的文件夹,此处可以不用带上-r。
然后利用git commit -m ""
提交修改注释
14. 版本库中还有时,恢复删除的文件(文件夹):
首先git reset HEAD <file>
然后 git checkout <file>
即可恢复误删文件,然后再add、commit
15. 删除仓库中文件但保留本地
这里以删除 .setting 文件夹为案例
git rm -r --cached .setting #--cached不会把本地的.setting删除
git commit -m 'delete .setting dir'
git push -u origin master
- 分支管理(Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。)
git checkout -b array
创建并移到该分支,用git branch
命令查看当前分支- 切换回master分支:
git checkout master
- 将分支合并到master:
git merge 分支名称
- 删除已合并分支:
git branch -d dev
- 当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
用git log --graph
或者git log --graph --pretty=oneline
命令可以看到分支合并图。 - 合并分支时,加上
--no-ff
参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
eg:git merge --no-ff -m "merge with no-ff" dev
- 分支策略
- master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
- 干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。所以,团队合作的分支看起来就像这样:
- Bug分支,当前工作区暂存
git stash
刚才的工作现场存到哪去了?用git stash list
命令看看
恢复:一是用git stash apply
恢复,但是恢复后,stash内容并不删除,你需要用git stash drop
来删除;
另一种方式是用git stash pop
,恢复的同时把stash内容也删了;
可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:
git stash apply stash@{0}
- 添加远程库
- 关联github远程库
git remote add origin git@server-name:path/repo-name.git
eg:git remote add origin git@github.com:wangjinju/learngit.git
关联后:用命令git push -u origin master
第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master
推送最新修改; - 从远程库克隆
git clone git@github.com:wangjinju/code_for_interview.git
要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。
Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。