Git最佳实践:git常用命令和原理

Git 是一个开源的分布式版本控制系统。

Git 工作区、暂存区和版本库

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
Git最佳实践:git常用命令和原理_第1张图片

命令

基础命令

git init
	初始化 当前所在的文件夹可以被管理且以后版本相关的数据会存储到.git文件中
git status
	查看当前文件夹中是否变化 内容修改 新增文件 删除文件
git add .
	将有工作区变化的文件加载到暂存区
git commit -m "备注"
	将暂存区的修改全部提交到版本库

撤回修改和删除

git checkout -- data.txt
	撤销修改,丢弃工作区的修改,分两种情况,-- 很重要,必须要加上
	1、data.txt没有add到暂存区,撤销就是回退到和版本库一样
	2、data.txt如果已经加到暂存区,撤销就是回退到和暂存区一样

git reset HEAD data.txt
  把暂存区的修改撤销掉,重新放回工作区

git reset --hard HEAD
	回退版本,HEAD当前版本
git reset --hard afe5aa
	回退到版本号所指的版本  afe5aa版本号的前几位

使用场景:
1、当修改错了工作区的文件,想直接丢掉时,使用git checkout -- data.txt
2、当修改错了工作区的文件,并且已经add到暂存区了,想丢弃的话,
先使用git reset HEAD data.txt ,回到1的情况,再处理
3、修改的文件已经提交到版本库时,直接回退版本即可

手动删除data.txt后
1、确实要删除的话,就git rm data.txt 再commit,这样就彻底删除了
2、误删的情况,git checkout -- data.txt 就将版本库的文件恢复到工作区
3、第1中情况已经执行了 git rm data.txt,后悔了,可以执行git reset --hard HEAD回退版本

远程管理

当本地目录关联到远端的lifei库
git remote add origin [email protected]:lifei/lifei.git
将 本地的所有版本库推送到远端库
git push -u origin master

查看远端库信息
git remote -v

下载一份远端库
git clone [email protected]:lifei/lifei.git
从远端拉取最新的文件
git pull 

分支

查看分支信息,当前分支前面会标一个*号
git branch
创建dev分支并且切换到
git checkout -b dev

分解成两个命令
git branch dev # 创建dev分支
git checkout dev # 切换到dev分支

切换分支用switch命令意思更明显
git switch master

创建并切换 tempdev
git switch -c tempdev

将dev合并到master
git merge dev

删除dev分支
git branch -d dev

冲突

如果dev 修改了data.txt,master分支也修改了data.txt,当切换到master后执行
git merge dev 就会冲突
Auto-merging selectp-dev-branch.py
CONFLICT (content): Merge conflict in selectp-dev-branch.py
Automatic merge failed; fix conflicts and then commit the result.

出现冲突后,查看冲突的文件
<<<<<<< HEAD

主分支
=======
dev 分支
>>>>>>> dev

日志

查看所有版本提交记录,版本号等
git log 

查看分支的合并 时间图
git log --graph --pretty=oneline --abbrev-commit

查看详细的 合并图
git log --graph

git reflog 回退之前的版本后,又想撤销,查看之前的版本号
git stash 将当前工作区所修改的内容暂存到某个地方,将工作区还原到当前版本未修改过的状态

你可能感兴趣的:(Linux,开发工具,git)