Git基本指令个人实践总结

简介

1、Git是一种分布式版本控制系统。Linux之父Linus Torvalds完成了Git最初的设计和开发;

2、Git有本地仓库和远程仓库,两者是平等的关系,几乎完全相同,没有中心仓库概念;

3、代码首先要提交到本地仓库,然后推送到远程仓库,最后在发布服务器完成上线部署。

4、Git 项目分别对应着三个阶段: 工作区、暂存区和 Git 目录。

(1)工作区——工作区是从 Git 仓库提取出来的数据,也就是我们本地看到的代码目录,这里改动的代码都在已修改状态。

(2)暂存区——暂存区是一个文件,保存了下次将要提交的文件列表信息,一般在 Git 仓库目录中。当处于已修改状态的文件被放入暂存区(Git Add)时,这些文件则会变为已暂存状态。

(3)Git 目录——Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。从其他计算机克隆仓库时,复制的就是这里的数据。当暂存区的文件被提交(Git Commit),则这些文件属于已提交状态。

      Git 的基本工作流程:
       工作区进行代码新建、修改、删除;
       将你下次要提交的改动全部或者选择性的暂存到暂存区(Git Add);
       提交你的改动(Git Commit)。

      涉及代码提交的步骤有:
       Task 开发,开发人员在本地 feature 分支进行功能开发;
       提交测试,新功能开发完成后,开发人员在本地分支自测,然后通过 pull request 的方式提交代码;
       测试验证,GitHub 根据条件自动触发测试验证流程;
       代码 Merge,测试通过后,代码被 Merge 到 master 分支。

一、初始设置

在提交代码之前必须设置自己的用户名和email

git config --global user.name "abc" # abc换成自己名字的拼音,注意中间不要有空格
git config --global user.email 邮箱

二、基本命令

在这里插入图片描述
1、创建全新的项目

(1)通过命令行进入到你想创建 Git 仓库的目录,然后再目录下执行 git init

#在文件夹 Test 下执行 git init,则 git 将在 Test 下创建一个 .git 子目录,这意味着 Test 这个目录已经转变成了一个 Git 仓库,我们可以对它进行版本管理。
git init

(2)通过新建文件的方式来编写代码,比如新建一个 file.py 并且编写,编写好后,可以通过 git add 的方式将它提交到暂存区。

git add file.py      #把本地文件newcase.py的改变提交到暂存区
git add .            #如果更改的文件过多,可以直接把本地所有的改变提交到暂存区

(3)删除某个文件时,可以使用 git rm

git rm <file>   # 删除文件
git rm README   #删除README file

(4)把暂存区的改动提交到本地版本库

git commit -m “本次提交代码描述”     # 通过-m参数输入本次提交的改动信息,方便我们了解本次的代码变更

(5)把本地仓库提交到远程

git remote add [shortname] [url]   #用来添加一个远程仓库
git remote add origin https://github.com/yourCompany/Test.git      #将本地仓库Test和远程仓库建立连接

(6)把本地版本库上传到远程库,这样别的开发人员才能拉取你的改动。

git push -u origin master   # 如果是本地新仓库第一次push到远程,需要执行如下操作

2、从现有的仓库克隆项目

(1)可以在本地对项目进行修改查看,需要有项目的权限

git clone

(2)更新代码库到最新版本

git pull

(3)切换分支

#项目被拉取到本地后,开发人员就可以进行分支开发,通常情况下不会在 master 分支进行开发,而是采取新 feature 分支开发的方式。

git checkout -b hotfix  #从当前分支创建hotfix分支,并切换到hotfix分支
git checkout 分支名      #切换到已经创建好的指定分支

(4)本地创建的 feature 分支,远程并没有对应的分支,故需要远程分支关联。

git push --set-upstream origin newFeature  #把本地分支newFeature关联到远程分支origin

(5)在本地分支做出修改需要提交到远程库

git push   #此时远程分支除去 master 分支外,还有我们新建立的 newFeature 分支。当关联远程分支后,我们在 newFeature 分支上再做任何改动,需要提交到远程库,仅需执行git push即可。

(6)pull request——pull request(通常被简称为 PR)是 GitHub 的一个通知机制,通过它开发人员可以进行更好的协作。pull request 通常要指定 reviewer(评审者),它告诉项目成员我的 feature 功能开发已经完毕,请求合并到代码主分支(master)。

创建 PR 通常是使用 GitHub 界面完成的。需要把 feature 分支 newFeature 上的改动 merge 到 master,就需要提交 pull request。
在这里插入图片描述
(7)当你的分支被 merge 后,你的 feature 分支和远程分支就不需要了,最好把它们删除以保持 git 分支的清爽。

git branch -d [branchname]    #删除本地分支
git push origin --delete [branchname]    #删除远程分支

3、查看工作区状态

git status     #命令用于查看项目的当前状态。主要用来查看在你上次提交之后是否有修改。将列出文件/文件夹在工作区和暂存区的状态。

4、暂存区操作

git add 文件                  #提交文件到暂存区(索引)
git reset HEAD 文件           #删除暂存区中的文件

5、查看代码改动

git diff                     #查看工作区与暂存区的文件差异
git diff --cached            #查看暂存区与最后一次本地提交的文件差异
git diff HEAD                #工作区与最后一次本地提交之间的差异
git diff origin              #工作区与本地仓库原始版本比较

6、查看提交记录

git log                       #查看默认格式的提交记录
git log filename              #查看某个文件filename的提交历史
git log -5                    #查看最近5条提交记录
git log -p                    #查看提交记录并显示代码改动内容
git log -p --author=姓名       #查看姓名的提交记录并显示代码改动内容
git log --since=2011-05-24 --until=2011-05-25   #查看从2011-05-24到2011-05-25的提交
git log --name-only           #只显示文件名
git log --pretty=oneline      #只显示一行
git log --pretty=format:%h:%s #自定义格式
git log --graph               #图形化查看
git log --stat                #查看修改文件统计

7、文件操作

git checkout file             #检出最后一次提交的文件覆盖当前文件,或者说放弃当前文件的修改
git rm file                   #删除文件
git mv file1 file2            #移动或者重命名文件

8、查看命令和帮助

git help command              #command是对应的git命令
git help diff                 #查看diff命令的帮助
git help branch               #查看branch命令的帮助

三、分支和合并命令

1、创建分支

git branch hotfix                     #直接从当前分支创建hotfix分支
git checkout -b hotfix                #从当前分支创建hotfix分支,并切换到hotfix分支
git checkout -b hotfix master         #从master分支创建hotfix分支,并切换到hotfix分支
git checkout -b 本地分支名 origin/远程分支名   #拉取远程分支并创建本地分支,在本地创建分支与远程分支将建立映射关系

2、切换分支

git checkout 分支名          #切换到指定分支

3、分支合并

git merge hotfix                 #合并hotfix分支到当前分支,使当前分支拥有hotfix分支的改动
git merge hotfix --squash        #合并hotfix分支到当前分支,但将分支上的提交压缩,然后手工提交变成一次提交。
git merge origin/master          #合并远程的master分支到当前分支

4、分支管理

git branch              #查看本地分支,带*号的是当前所在分支
git branch -a           #查看所有本地分支及远程分支,远程分支用红色标出
git branch -d hotfix    #删除hotfix分支
git branch -D hotfix    #强制删除hotfix分支
git branch --merged     #查看与当前分支合并过的分支,只要合并过的分支即使删掉也不用担心
git branch --no-merged  #查看与当前分支没有合并过的分支

注意事项

不要在master上进行开发,master分支是连接远程代码库和本地分支的桥梁,桥梁的功能只有一个就是连接;

develop分支的名字只要是非master的任意名字都可以,比如hotfix, new-mobile等等

常见问题

1、当远程有更新且需要应用到本地时,可以采用如下操作:

假设本地feature分支为newFeature,首先需要提交本地分支newFeature的改动至代码仓库

 git add .   
 git commit -m "本地分支修改comments"

然后,执行git merge

 git merge master

最后,再次提交

 git add .           
 git commit -m "merge master 分支"

2、当你的 feature 分支开发了一半,然后接到了紧急任务需要支持,但是你又不想把功能不完善的代码提交到代码仓库,此时可以使用 git stash 命令。

   git stash        # 如果你要切换新分支但是有未保存的更改使用git checkout -b会报错。此时可以通过git stash将所有未提交的修改(工作区和暂存区)保存至堆栈# # 中,可用于后续恢复
   git stash pop    # 等你想恢复你保存的改动时,执行git stash pop。 它将缓存堆栈中的第一个stash删除,并将对应修改应用到当前的工作目录下。

3、本地提交已提交到暂存区,还没有 push,但是你想丢弃这个改动

 git reset --hard HEAD

4、如果发现发布上线的功能有问题,需要回退的情况,执行如下操作

 git revert HEAD
 git push origin master

5、clone 代码后,如何使自己的分支和 master 分支一致

git checkout 分支名              #在本地切到自己的分支
git pull origin master         #从 master 分支上拉取最新修改到自己的分支上
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值