版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/DreamHome_S/article/details/83989542
版本控制流程图
工作区(Working Directory)
版本库(Repository):隐藏目录 /.git
版本库中包含index(stage)
的暂存区和自动创建的第一个分支 master
,以及指向master
的指针head
当前用户配置
# 配置
$ git config --global user.name "name"
$ git config --global user.email "email address"
# 查看
$ git config --global --list
创建版本库
# 创建
$ git init
# 查看隐藏 .git
$ ls -a
# 撤销git
$ rm -rf .git
# 将文件添加到仓库
$ git add *.* *.*
#将整个项目添加到仓库
$ git add .
# 查看已经添加的文件
$ git ls-files
# 将添加的文件提交到仓库
$ git commit -m "message"
# 查看工作区状态
$ git status
# 查看工作区和版本库里面文件 file 最新版本的区别
$ git diff HEAD -- file
版本回退
文件 1.修改 2. 添加 3. 提交
# 查看历史修改记录
$ git log
# 回退到上个版本 HEAD表示当前版本 ^表示上一个 ^^表示上上个
$ git reset --hard HEAD^
# 回到未来的某个版本(*****为commit id)
$ git reset --hard *****
如果不知道未来版本号*****
# 查看每次命令
$ git reflog
撤销修改
把file
文件在工作区的修改全部撤销。
$ git checkout -- file
两种情况:
一种是file
自修改后还没有被放到暂存区,撤销修改就回到和版本库一模一样的状态;
一种是file
已经添加到暂存区后,又作了修改,撤销修改就回到添加到暂存区后的状态。
三种场景:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>
,回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退,不过前提是没有推送到远程库。
删除文件
删除工作区文件file
后:
两种选择:
-
从版本库中删除该文件:
$ git rm file $ git commit -m "message"
-
误删,恢复文件到最新版:
git checkout -- file
添加远程仓库
$ git remote add origin https://github.com/dreamhomes/test.git
# 第一次
$ git push -u origin master
# 其它
$ git push origin master
远程库克隆
# ssh
$ git clone [email protected]:dreamhomes/test.git
# https
$ git clone https://github.com/dreamhomes/test.git
创建和合并分支
# 查看分支
$ git branch
# 创建分支
$ git branch <name>
# 切换分支
$ git checkout <name>
# 创建+切换分支
$ git checkout -b <name>
# 合并某个分支到当前分支
$ git merge <name>
# 删除分支
¥ git branch -d <name>
解决冲突
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
用git log --graph
命令可以看到分支合并图。
多人协作
- 查看远程库信息:
git remote -v
- 从本地推送分支:
git push origin branch-name
- 如果推送失败,用
git pull
抓取远程的新提交; - 在本地创建和远程分支对应的分支:
git checkout -b branch-name origin/branch-name
名称一致; - 建立本地分支和远程分支的关联:
git branch --set-upstream branch-name origin/branch-name
- 从远程抓取分支, 使用
git pull
,如果有冲突,要先处理冲突。 git rebase
操作可以把本地未push的分叉提交历史整理成直线;