git-本地操作
一、新建git仓库
方式一:git init
这种方式建立一个裸仓
例如我们在d盘新建一个文件夹,然后输入git bash命令
git init practiceOne 我们新建了一个空仓
cd practiceOne/.git/ 进入git配置目录
ls我们可以看到该目录下相关的git配置文件
方式二:git clone XXXX
这种方式通过拷贝一个远程仓库来新建一个本地git仓库。
二、git基本命令
2.1 git add:将文件添加到暂存区里头
例如:
git add fileA 【多个文件中间空格隔开】 git add -A 【把整个工作区里头的文件提交到暂存区】
git add . 和上一个命令一样作用
2.2 git commit:将暂存区里头的文件提交到历史记录区【也就是远程终端】
例如:
git commit -m "commit fileA"
2.3 git status:查看三个区的历史状态
2.4 git rm:删除工作区里头的文件
例如:
git rm fileA
删除缓存区里头的文件:
git rm --cached fileA
2.5 git reset:还原删除的文件
例如:
git reset HEAD fileA
2.6 git mv:重命名或者移动文件
例如:
git mv fileA fileB 【将工作区和暂存区里头的fileA文件重命名为fileB】
2.7 gitignore 这些文件将不被提交
*.[oa] //以o或者a结尾的文件不会被提交 !test.pyc //之前如果被忽略,现在要重新提交则在前面加! \!test.pyc //本身如果是!开头的文件,那就要在前面加个\ foo/或者src/ //以/结尾的代表匹配某个目录。 **/res //匹配所有res目录
三、Git 本地分支与合并
3.1 git branch 新建一个分支
例如:
git branch feature
或者也可以通过
git checkout -b feature命令,创建分支并且切换到这个分支。
删除一个分支:
git branch -D feature
3.2 git tag 给新的分支标记
当一个文件修改多次的时候需要给这个文件打上tag:
例如:
通过以下命令可以查看分支以及相关的提交记录
git log --oneline --decorate --graph --all
我们要给7ee67a0打上一个V0的版本tag,这个时候就可以输入两种命令:
git tag "V0" 7ee67a0 //创建tag
git tag -a "another" 7ee67a0 //创建副注tag
然后再查看下引用可以看到已经打上了tag了。
区别在于git tag -a "another" -m "another tag"
多了副注信息。
3.3 git checkout 切换分支
git checkout feature 切换到feature分支
git checkout --track feature --新建一个远程跟踪且切换分支
3.4 git stash
当不同分支都修改同一个文件,已经提交到缓存区但是没有提交历史记录区,也就是执行了git add 没有执行git commit操作,这个时候使用checkout就会报冲突,要先提交修改的部分。
这个时候可以通过git stash命令保存不同发分支文件。
例如:现在feature分支修改master里头的的一个master.txt文件并添加到缓存区,切换回master分支的时候,
这时会提示有内容修改,要么提交要么缓存一下。
这个时候执行stash命令然后再切换回master分支,这时候就不报错了。
git stash save -a "stash1"
查看master分支下的master.txt文件还是原来master分支的。
这个时候查看分支情况:
stash是unracked 状态,说明在修改的内容只是暂时存在stash里头没有存在暂存区。
通过git stash drop --index stash@{0}来丢弃刚才的暂存内容。查看分支:
切换回feature分支,通过git stash list 可以查看有哪些stash。
通过git stash pop --index stash@{0}或者git stash pop stash{0}恢复进度
git stash apply[--index] [<stash>] 不删除已恢复的进度,其他同git stash pop git stash drop[<stash>] 删除某一个进度,默认删除最新进度 git stash clear删除所有进度 git stash branch <branchname> <stash>基于进度创建分支
3.5 git merge 合并分支
git merge合并分支,可以合并由分支衍生出来的分支,
git merge --abort取消分支合并。
四、查看与历史比对
4.1 git log 查看日志信息
例如:
git log --oneline --decorate --graph --all 可以查看历史分支,提交信息
4.2 git show 显示是git 对象信息
例如:
git show master | --format=%T master^2【表示master底下的第二个副提交】等等。
4.3 git diff 输出工作区与暂存区之间的差异
也可以有其他组合
例如:
git diff --color-words
git diff --word-diff 等等
4.4 git diff --cached 查看暂存区与历史记录去的差异
五、撤销修改
5.1 git checkout 除了创建|切换分支,还可以恢复分支
例如:
git checkout -- XXX文件
或者可以从某一个历史提交里头恢复文件
git checkout XXX记录 -- XXX要覆盖的文件
5.2 git reset 撤销之前的修改
例如:
git reset HEAD
如果该分支是在HEAD指向的分支上,则可以用:git reset XXX文件名
git reset xxx记录 -- xxx要覆盖的文件,可以将暂存区恢复到xxx记录。
5.3 git clean
例如:
git clean -n
接着输入git clean -f就可以去掉不需要的文件了。
git clean -n默认不去清除ignore里头的文件。
若要清除,可输入:git clean -X -f
5.4 git revert 产生一个新的提交覆盖之前的提交
常见问题:
1、Not a valid object name: 'master'.错误
想新建立一个分支时出现这错误。要先commit一次才会真正建立master分支,此时就可以新建立分支了。