版本的回溯
仓库的创建&添加和提交仓库
mkdir repository
cd repository
git init #1
git add --all
git commit -m "write a file"#2
git status
- 初始化
- 然后把这个文件提交到仓库。“”里面的文字是这次提交的注释
查看修改内容&查看提交记录&返回之前状态
git status #1
git diff#2
git add readme.txt
git commit -m "rewrite"
git log#3
git reset --hard HEAD^ #4
-
查看当前状态,返回有没有修改或者有没有提交之类的
-
查看修改的内容
-
查看提交的历史记录
$ git log --pretty=oneline
可以把这些弄成一行看着简单一些 -
HEAD是当前状态,HEAD^是前一个状态,HEAD^^前一个的前一个状态,或者HEAD~100(前100个状态)或者用
$ git reset --hard "commit的id"
来返回特定的状态- 可以利用下面语句来查看命令历史以便找到commit的id号
git reflog
工作区和暂存区的理解
工作区就是你这个文件夹里面的范围
暂存区就是你把修改add到的地方
master就是你提交以后文件呆的地方
修改的撤销
若你在工作区修改保存了以后可以删掉再保存,或者利用下面语句来丢弃工作区的修改
$ git checkout -- readme.txt
若你已经add到暂存区域的话,利用下面语句来把暂存区的修改返回到工作区,然后再利用chenkout --
来取消工作区的修改
$ git reset HEAD readme.txt
删除文件
若利用rm
把工作区的文件删除了以后,调用$ git status
的时候会提示你少了一个文件
若不再需要的情况下,利用下面的语句来删除掉仓库里面的文件。
$ git rm "test.txt"
若删错了的话,利用来下面来恢复文件区里面的这个文件
$ git checkout -- test.txt
远程仓库
ssh key的设定
github账户不是允许任何电脑都向他push仓库的,所以得让你的账户信任你的电脑,也就是说把电脑唯一的ssh key的证书上传到账户中去
- 设定方法
$ ssh-keygen
用这个指令产生一个sshkey存在自己的根目录下(隐藏),进去.ssh以后打开id_rsa.pub把里面的内容写进账户里
添加远程库
git remote add origin 'url' #1
git remote remote origin #2
git push -u origin master
网址是自己在账户上建立的库(建立时保持和本地文件夹同名),然后在本地的库的目录下利用命令1使本地的库和网上这个远程库相连。然后利用push把自己本地的内容里的全部推给origin,-u是只有第一次推送才用以后push修改的时候直接用$ git push origin master
- 用命令2取消本地和远程库的关联
从远程库克隆
只会把master克隆下来,若想修改origin上其他的分支的话需要其他的命令
git clone "网址"
git checkout -d dev origin/dev
查看远程库信息&本地修改后的推给远程库
git remote
git remote -v #看更详细的信息
git push origin "master或者dev"
线下多人修改origin时候的问题处理
就是说一个人已经往dev上push过了一处修改,而你又对同一个地方做出了修改,然后你提交的时候就会出错
解决方法是把本地的dev和远程的origin/dev链接起来,然后把origin中的信息pull
到本地。然后做之前的冲突解决处理
git branch --set-upstream dev origin/dev
git pull
分支管理
创建与合并分支
git checkout -b dev #1
git branch #2
- 建造一个叫dev的分支并且转移到这个分支上,相当于
$ git branch dev
和$ git checkout dev
- 查看所有的分支
然后在dev分支下进行修改然后commit修改
但是返回master后刚才修改的内容消失
合并两个分支:
git merge dev
然后在dev上修改的内容就反映到master上面来了
接下来可以安心的删除dev了
git branch -d dev
解决冲突
就是说建立的新的分支和master都做了修改
强制把他们俩merge在一起就会出错
用cat 文件名
调用后,冲突文件被改成两边修改都有的文件
然后手动修改再一次提交(在master下)
就可以解决问题
留下记录的合并方法
因为普通的$ git merge dev
是一种快速合并
就是说dev的球返回给master的感觉
若我们使用--no-ff
就可以在历史记录上留下一个合并的记录(相当于两个球合成一个新的球)
git merge --no-ff -m "说明" dev
关于分支写到一半时候的保存
就是说在编写dev分支的时候,接到了一个修改master bug的任务,但是dev还没有完成。为了不给其他人添麻烦先把dev的进度存起来,等master上面的bug修复结束后再回去完成dev
git stash
存储命令,把当前工作区的内容保存起来。然后返回master做别的事情,然后回到dev的时候读取方法如下
git stash list #查看存档的列表
git stash pop #弹出这个存档,同时删除存档
git stash apply#读取存档,但是不删除存档,有多个存档时候可以做选择读取哪个
# $ git stash apply stash@{0}
git stash drop #用来删除存档
删除还没有合并的分支的方法
git checkout -D 文件名
标签管理
创建标签&查看标签状态&删除标签
在master上创建一个tag v1.0 这样的话默认最新的一次commit。或者后面指定id号可以特定的赋予某个状态为这个tag
然后用第3条可以看都存在哪些tag
第四条可以展示那一个tag的最具体信息
git tag v1.0
git tag v0.9 "id号"
git tag
git tag show v1.0
git tag -d v0.9
远程标签管理
提交特定的标签给远程以及一次性提交所有的本地标签
删除远程的标签的方法:从本地删除后,再删除远端的
git push origin v1.0
git push origin --tags
git tag -d v0.9
git push origin :refs/tags/v0.9