安装完成后
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
进入文件夹
$ cd learngit
$ git init
$ git add readme.txt
$ git commit -m "add 3 files."
工作区和暂存区
版本回退
$ git reset --hard HEAD^
$ git reset --hard 1094a
Git提供了一个命令git reflog用来记录你的每一次命令:
$ git reflog
$ git status
用 git diff HEAD -- readme.txt 命令可以查看工作区和版本库里面最新版本的区别:
撤销修改
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令
删除文件
$ git rm test.txt$
git commit -m "remove test.txt"
码云 https://gitee.com/**********/yizhong
GitHub https://github.com/11*****76/
添加远程库
git remote add origin https://gitee.com/**********/yizhong.git
git push -u origin master
从远程库克隆
$ git clone git@github.com:michaelliao/gitskills.git
分支管理
创建与合并分支
我们创建dev分支,然后切换到dev分支:
$ git checkout -b dev b参数表示创建并切换 相当于以下两条命令:
$ git branch dev
$ git checkout dev
用git branch命令查看当前分支:git branch命令会列出所有分支,当前分支前面会标一个*号。
$ git branch
//切换分支
$ git checkout master
我们把dev分支的工作成果合并到master分支上:
$ git merge dev
合并完成后,就可以放心地删除dev分支了:
$ git branch -d dev
删除后,查看branch,就只剩下master分支了:
$ git branch
解决冲突
切换到master分支:
$ git switch master
$ git merge feature1
必须手动解决冲突后再提交。git status也可以告诉我们冲突的文件:
分支管理策略
通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
下面我们实战一下--no-ff方式的git merge:
$ git merge --no-ff -m "merge with no-ff" dev 请注意--no-ff参数,表示禁用Fast forward:
$ git log --graph --pretty=oneline --abbrev-commit
Bug分支
https://www.liaoxuefeng.com/wiki/896043488029600/900388704535136
Feature分支
$ git switch -c feature-vulcan
$ git add vulcan.py
$ git status
准备合并
$ git switch dev
接到上级命令,因经费不足,新功能必须取消! 虽然白干了,但是这个包含机密资料的分支还是必须就地销毁:
$ git branch -d feature-vulcan
$ git branch -D feature-vulcan //如果要强行删除,需要使用大写的-D参数。
多人协作
$ git remote -v
推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:
$ git push origin master
如果要推送其他分支,比如dev,就改成:
$ git push origin dev