常见的命令行操作
本文参考
廖雪峰官方网站Git教程
创建仓库
初始化一个Git仓库,使用git init命令。
添加文件到Git仓库,分两步:
第一步,使用命令git add
,注意,可反复多次使用,添加多个文件; 第二步,使用命令git commit,完成。
-m添加的是描述信息
1 | $ git commit -m "wrote a readme file" |
版本回退
1 | git reset --hard commit_id |
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令==git reset –hard commit_id==。
穿梭前,用==git log==可以查看提交历史,以便确定要回退到哪个版本。
- 要重返未来,用==git reflog==查看命令历史,以便确定要回到未来的哪个版本。
暂存在区
我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用==git add==把文件添加进去,实际上就是把文件修改添加到暂存区;第二步是用==git commit==提交更改,实际上就是把暂存区的所有内容提交到当前分支。
因为我们创建Git版本库时,Git自动为我们创建了唯一一==个master==分支,所以,现在,git commit就是往master分支上提交更改。
你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改
撤销修改
1 | git checkout --readme.txt |
命令==git checkout –readme.txt==意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态
删除文件
删除也是修改,删错的时候可以使用撤销修改来还原1
rm +filrname
有些废弃文件要删除,一般可以直接在文件资源管理器中删除,当然也可以使用git命令删除
执行 == git rm test.txt==
现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit:或者 删错了,可以使用上面的撤销修改还原
创建远程仓库
在github 上面新建一个仓库后按照提示,输入
1 | git remote add origin git@github.com:XXM-cf/learnGit.git |
这个时候可能会跳出提示下main的信息:输入yes即可
1 | The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established. |
把本地库的内容推送到远程,用==git push==命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
这时候可能会报错,没有公钥,将本地的公钥添加到github 中即可
从远程仓库克隆
实际开发的过程中,更多的应该是先创建远程仓库,然后克隆到本地,在github上创建好仓库后在你的项目目录下执行 ==git clone+地址== 就可以克隆下来啦。
创建新的分支
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支:git merge
删除分支:git branch -d
1
2$ git checkout -b dev
Switched to a new branch 'dev'
git checkout命令加上-b参数表示创建并切换
切换回master分支后,再查看一个readme.txt文件,刚才添加的内容不见了!因为那个提交是在dev分支上,而master分支此刻的提交点并没有变:
git merge命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。
解决冲突
当多人协作改变同一个分支的时候,文件内容 就会冲突,此时,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突
Git用<<<<<<<,…冲突的内容…,>>>>>>>标记出不同分支的内容,我们修改如下后保存
我们将冲突的地方修改后,重新提交就可以了;