在windows下安装git软件,安装完之后打开git-bash
初始配置命令:
git config --global user.name "name"
git config --global user.email "email address"
这两条对使用git仓库的本机进行标识,因为我们可能在多台机器使用不同的git仓库。
创建仓库的命令:
mkdir learngit
cd learngit
git inial
git只能追踪文本文件的变化,无法追踪二进制文件的变化。所以我们使用git仓库来存储的程序,md文件等文本类文件,存储图片,doc等二进制文件是无法追踪具体内容的。
查看仓库的状态的命令:
git status
向仓库中添加提交文件命令:
git add file
git commit -m "本次提交的说明"
查看上次修改的地方:
git diff file
我们查看历史提交记录:
git log
我们将已经提交的版本回退到以前的版本的,如何去实现
git reset --hard HEAD^ ^是前一个版本,^^是前两个版本
回退到任意的版本使用
git reset --hard commitID
每次提交都会产生一个提交的commitid,是一个160bit的hash值,使用的是SHA-1 hash算法。
查看之前使用的命令,可以查看之前的commitID
git reflog
git管理的是修改的内容,因为暂存区的概念存在,如果你不将文件add到暂存区,commit的时候自然不会提交。
可以将修改的内容全部撤销,可以使用下面命令
git checkout -- filename
有三种场景:
如果你更改了工作区的内容,想要不要这部分内容,可以使用下面命令:
git checkout -- filename
当你修改了工作区的内容并且上传到暂存区,如何撤销这一个动作
git reset HEAD file 撤销掉缓存区的修改
git checkout -- file 将工作区的内容修改然进行撤销
如果你已经进行了commit 的话只能进行版本的回退了
删除文件的操作的话 可以使用
git rm file
git commit
关于将你自己的本地库推送到远程的github库
创建SSH KEY
ssh-keygen -t rsa -C "youremail@example.com" 在你的用户主目录下生成RSA公私钥
要关联一个远程库
git remote add origin git@github.com:username/repo-name.git
第一次推送master分支所有内容
git push -u origin master
以后推送到远程库可以使用如下命令
git push origin master
从远程同步一个库到本地使用的命令
git clone git@github.com:crazyjiang/gitskills.git
git 分支的创建与合并,分支的创建与切换,分支的合并与删除
git查看分支
git branch
创建分支
git branch name
切换分支
git checkout < name >
创建+切换分支
git checkout -b < name >
合并某个分支到当前的分支:
git merge < name >
删除分支
git branch -d < name >
当分支合并的时候,如果分支与主分支存在冲突的话,首先解决冲突,再进行合并。
通常,如果合并分支的时候,如果可能,git会采用fast forward模式,在这种模式下, 删除分支后,会丢掉分支的信息。
git merge --no-ff -m "merge with no-ff" dev 表示禁用Fast forward
一种场景,当你手头的工作还没有完成,需要切换到另一份工作上,此时,你需要先把工作现场冻结一下,使用git stash, 然后切到另一个分支去工作,当你工作完之后,再git stash pop回到工作现场,还原之前的工作场景。
如果要丢弃一个尚未被合并的分支,可以通过下面的命令进行强制删除
git branch -D name
推送其它的分支的命令
git push origin dev 其实其它分支也未必需要进行推送
git 多人合作的问题
多人合作,涉及标签管理的问题,commitID跟标签有着紧密的关系,标签默认是对最新一次的commitID打上标签