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分支,此时就可以新建立分支了。

原文地址:https://www.cnblogs.com/shawWey/p/6699280.html