Git 操作笔记:分布式版本控制系统

 

参考廖雪峰的 Git 教程:https://www.liaoxuefeng.com/wiki/896043488029600  讲解很详细,这里只做一些个人笔记;

参考B站视频链接:git 教程 ,通俗易懂!

 

各系统安装 Git :https://www.liaoxuefeng.com/wiki/896043488029600/896067074338496

 

一、基础操作:

  1. 在新建空目录下或者已有的项目目录下右键打开 Git Base 选项;
  2. 使用命令 git init  令其成为 Git 可以管理的库,会在该目录下生成一个隐藏的 .git 文件(Linux:可用 ls -ah 查看);
  3. 在该目录或子目录下编写新文件,使用   git add <file>  或者 git add . 命令将文件添加到仓库(没有其它提示则表示添加成功);
  4. 使用   git commit -m "<message>"  (内容需加引号)将文件提交到仓库,message:记录改动的信息,方便以后查看记录时知道该处做了哪些改动(可多次 add 文件后再使用 commit);

 

二、常用命令操作

 git checkout -b <name> <template> :创建新分支并切换到该分支,name 为新分支名称,template 为以哪个分支或 commit为模板,不填表示当前分支; 如果切换的分支只存在远程仓库中,则需要加上 orgin : git checkout -b <name> orgin <template> ;

 git checkout master :切回主分支;

 git branch :查看所有分支;

 git merge <其它分支名称> :当前分支合并其它分支的代码;

如果合并了多个分支的代码出现冲突,则解决冲突后再使用命令commit: git add . , git commit -m '解决冲突'  

 git push -set-upstream origin <分支名称> :在本地操作时,新建的分支如果远程仓库没有,则使用该命令将远程仓库的分支作为本地分支的上流分支,它会在远程创建新的分支进行同步;而如果本地想切换一个远程的分支到本地,则可以使用命令  git checkout -b <name> orgin <template> 命令,

比如切线上的 bc-a 分支到本地并命名为 bc-b:  git checkout -b bc-b orgin bc-a 

 git fetch :可以检测远程仓库的信息是否有修改;然后需要使用  git merge origin/<本地分支>  将远程的分支很自己本地的分支进行合并;比如上面的远程 bc-a 如果更新了,bc-b 同步远程仓库则需先 fetch 下来后再 merge 合并;

 git pull :该命令等同于 fetch + merge 两个的命令;

rebase:变基,即重新排列 base,base 指 commit;比如主分支跟新分支都有 commit 的内容,现在当前 bc 分支想以 master 最新的 commit 为基础进行提交:

执行  git rebase master  ,如果有冲突,则解决冲突后使用 git add . 进暂存区,再使用 git rebase --continue  继续下一个commit结点的rebase,依次类推,最后 git log  查看会发现bc 分支的提交记录顺序已经改变了。

如下图:

 

版本回退

  •  git log  : 查看历史记录信息,由近到远显示,输入 q 退出;(查看提交历史,以便确定要回退到哪个版本)
  •  git log --pretty=oneline : 简化记录信息,只显示  commit_id (版本号);
  •  HEAD 表示当前的版本号, HEAD^ (上一个版本), HEAD^^ (上上一个版本), HEAD~100 (第100个版本);
  •  git reset --hard HEAD^ : 回退上一个版本;
  •  git reset --hard commit_id : 旧版本返回之前新版本(或其它版本),需写上版本号的前几位数,Git 可自动寻找后返回(版本回退后不关闭窗口时,可在之前记录找到版本号进行返回);
  •  git reflog : 查看每一次命令的记录;回退旧版后关闭了窗口,重开后使用 git log 不会显示之前的新版本信息,可使用该命令查看历史命令记录,以便确定要回到未来的哪个版本。
  • --hard:不保留所有变更;
  • --soft:保留变更且变更内容处于Staged;
  • --mixed:保留变更且变更内容处于Modified;

 

git 中文件的四种状态:

 

Untracked:新建文件状态 ;

Staged:git add 后的状态;

Unmodified:commit 后的状态;

Modified:有修改过后的 commit 文件;

比如一个Staged文件,在 commit 之前有两种状态:1、如果该文件是新建的,那它之前的文件状态为 Untracked;2、如果之前有过commit记录,那它之前是Modified 状态;

 

自定义命令别名:可在 git 的安装目录下找到 gitconfig 配置文件,在该文件下配置 alias ,自定义命令的别名

 

工作区(Working Directory):相当于初始文件夹就是一个工作区,跟 .git 在同一目录但不包括 .git

版本库(Repository):在工作区中的隐藏目录但不属于工作区的 .git ,为 Git 的版本库

  • Git 的版本库:存放有stage(或者叫 index)的暂存区,还要 Git 自动创建的第一个分支 master,以及指向 master 的指针 HEAD
    •  git add  把新文件或者已在暂存区但被修改的文件从工作区添加到暂存区;
    •  git commit 把暂存区的所有修改的内容提交到当前分支 master,不在暂存区的不提交;

说明:readme.txt :再次被修改的文件;  LICENSE:新增的文件;

(引用廖雪峰 Git 官网的图片,侵删)

 

 git status :查看当前状态;

 git diff :当上条命令告知有文件修改过时,可查看修改的内容;

  •  git diff :工作区与暂存区的比较,即在工作区被修改但还没进行  git add 到暂存区的文件的与暂存区原有文件的内容比较;
  •  git diff --cached :查看已经 git add 到暂存区但还没 commit -m 到父子的内容与分支 master 原有内容的比较;

 

撤销修改:

  •  git checkout -- <file>  :在工作区修改文件但没使用 add 添加到暂存区时,可进行撤销;
  •  git reset HEAD <file> :已在暂存区但没 commit 提交到分支时,可将文件撤回到工作区;

(在没有推送到远程仓库时,对于已提交到版本库的文件想撤回的可进行版本回退)

 

删除文件: rm <file> 

  • 确定删除时,再次运行 git rm <file> 或 git add <file> ,然后运行  git commit -m "<message>" ,文件从版本库中删除;
  • 删错文件时,使用  git checkout -- <file>  可将版本库中的版本恢复到工作区,文件没添加到版本库的被删除将无法恢复;

 

添加远程库:

1、已有本地库的情况:

创建 GitHub 账户(不勾选 Initialize this repository with a README ),在 GitHub 右上角的 setting 里选择 SSH and GPG keys 添加 SSH Keys。在 Git 终端使用命令创建 SSH Keys

$ ssh-keygen -t rsa -C "youremail@example.com"

 

在用户主目录下生成 .ssh 目录,包含两个文件:私钥:id_rsa、公钥:id_rsa.pub。用笔记本打开 公钥 后将内容添加到 GitHub 的 Keys 文本中。

在本地的个人仓库下运行Git,关联远程仓库。首次关联有提示,输入 yesorigin:远程库的默认名字,后面是 GitHub 个人仓库的 ssh 链接,在仓库页面可以找到;HTTPS:速度较慢且每次连接都得输入账号密码,这里不使用)

$ git remote add origin git@github.com:Fiy02/learngit.git

 

使用 git push 将本地库内容推送到远程库上,即将 master 推送到远程;首次运行加 -u,后面再推送时可省略不加;

$ git push -u origin master

 

2、没有本地库的情况

在 GitHub 创建时勾选 Initialize this repository with a README ,会自动创建 README.md 文件。

使用 git clone 将远程库克隆到本地,会自动生成文件夹与文件(可在仓库页面的绿色按钮 clone or down 中找到个人的 ssh 链接)

1 $ git clone git@github.com:Fiy02/gitskill.git

 

 

码云:gitee

 

Git 全局设置:

1 git config --global user.name "Fxxx"
2 git config --global user.email "81xxxx+xxxxx@user.noreply.gitee.com"

 

创建 git 仓库:

mkdir mailbox_system_backend
cd mailbox_system_backend
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin https://gitee.com/lxxxx/xxxxxx.git
git push -u origin master
View Code

 

已有仓库?

cd existing_git_repo
git remote add origin https://gitee.com/lxxxx/xxxxxx.git
git push -u origin master
View Code

对于项目中需要忽略提交的内容,如果已存在内容,需要先使用 rm 进行删除缓存:

git rm -r __pycache__ --cached
git rm -r .idea --cached
git commit -m "remove pycache and idea cache folders."
git push origin
View Code

 

拉取开源项目后推到自己的项目上:

1、拉去项目

1 # 拉取开源代码
2 git clone https://github.com/***/python-demo.git

 

2、在该项目路径下,修改隐藏文件 .git/config 的内容, url 替换为自己仓库的地址

 

3、保存完后,将本地的开源项目推到自己的项目上

1 # 将项目推到自己的仓库中
2 git remote add origin https://github.com/your_github.git
3 git push -u origin master
4 
5 # 出现以下报错的处理
6 error: remote origin already exists.
7 
8 # 先执行以下内容再重新执行上面内容
9 git remote rm origin

 

4、先编辑 .gitignore 文件,将不需要的文件忽略,commit 到项目中,再去做其它操作,可避免无关文件更新到自己的仓库中

posted @ 2019-08-26 16:18  F·灬小人物  阅读(240)  评论(0编辑  收藏  举报