GIT使用

2021/5/21 更新

add , commit(更新到本地仓库:.git下),push(推送到远程相同名称的分支下,例如local/Test - > origin/Test)

Merge(与其他分支合并,选用No Fast forward,能看到新建立的节点信息)

操作都是在本地操作

pull会拉取远程相同名称的分支,例如local/Test - > origin/Test

更新远程分支信息 GIt->Fetch

测试demo:https://gitee.com/shawnday/Hello-Word


了解git

1.集中式VS分布式

集中式 (CVS,SVN)

集中式

必须要联网,版本库集中存放在中央服务器,干活时都用自己的电脑。

分布式(Git)

分布式

无需联网,每个人电脑上都是一个完整的版本库。多人协作不同电脑只需把自己的修改推送给对方。

2.安装Git(Windows)

->全默认
至最后

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

3.创建仓库

$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

3.添加文件并提交文件

初始化一个Git仓库,使用git init命令。

添加文件到Git仓库,分两步:

使用命令git add <file>,注意,可反复多次使用,添加多个文件;
使用命令git commit -m <message>,完成。

$ git add readme.txt
$ git commit -m "append GPL"
[master 1094adb] append GPL
 1 file changed, 1 insertion(+), 1 deletion(-)

3.查看

$ git status //可随时掌握工作区状态

$ git diff //可查看修改内容

4.时空穿梭

HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令

$ git reset --hard commit_id。

穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

4.工作区与暂存区

工作区与暂存区

5.修改管理

直接丢弃工作区修改,用 git checkout--file
已在暂存区,1.用git reset HEAD <file> 2.git checkout--file
已经commit(前提是没有推送到远程库),版本退回
其中,git rm <file>不仅删除了文件,还添加到了暂存区。
rm <file> 只删除了工作区的文件。

5.创建SSH key

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

关联一个远程库(例如github),使用命令

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

关联后,使用命令

$ git push -u origin master

第一次推送master分支所有内容
此后,每次推送最近修改使用如下命令:

$ git push origin master

6.克隆仓库

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

$ git clone git@github.com:michaelliao/gitskills.git

7.分支指令

查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支至当前分支:git merge <name>
删除分支:git branch -d <name>
查看分支合并图:git log --graph
当Git无法自动合并分支时,就西部首先解决冲突。解决冲突后,再提交,合并完成。

8.存储工作现场

手头工作未完成时,先把工作现场git stash一下,去修复bug,修复后,再git stash pop,回到工作现场。

与IDEA集成

最近工作的时候,一开始直接在master分支上进行了修改,忘记从master分支上拉一个分支下来了。在我直接checkout 分支(a)的时候,发现默认还未add或commit/push的文件改动(包括断点等的设置)直接带到切换后的分支(a)上。在我这个分支commit和push后,我切换回master,发现master还原了。就很奇怪。 经过实验,只要commit之后,master等就会复原到没有add的情况下。

IDEA 帮助文档提供了切换分支时的选项说明;

image.png
  1. 本地分支切换的时候(例如A切到B),会弹出来Restore workspace on branch switching 对话框,如果选择是的话,在切换分支的时候,你在当前分支(A)所做的一些还未add或commit/push的文件改动(包括断点等的设置)会带到切换后的分支(B)上;

  2. 如果本地工作空间没有uncommitted changes, 分支会顺利切换

  3. 如果本地工作空间(分支A)有些文件会被分支B改动,IDEA会弹出对话框,让你选择Force Checkout 或 Smart Checkout;

如果选择Force Checkout, 本地工作空间(分支A)的一些未提交的修改会被覆盖(被分支B覆盖),会有很大可能丢代码!!!
如果选择Smart Checkout,IDEA会先执行stash命令,贮存这些未提交的修改,然后checkout 到分支B,在切换到分支B后,unstash 这些修改,所以A分支本地的这些修改会带到B分支上。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • (预警:因为详细,所以行文有些长,新手边看边操作效果出乎你的预料) 一:Git是什么? Git是目前世界上最先进的...
    axiaochao阅读 2,014评论 1 8
  • 声明:这篇文章来源于廖雪峰老师的官方网站,我仅仅是作为学习之用 Git简介 Git是什么? Git是目前世界上最先...
    横渡阅读 4,186评论 3 27
  • 原文地址主要用到的命令: git config user.name 设置用户名 git config user....
    AFinalStone阅读 597评论 0 2
  • 转载自:http://www.open-open.com/lib/view/open1414396787325.h...
    Bbooo阅读 572评论 0 3
  • 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统。 二:SVN与Git的最主要的区别? SVN...
    JSXL阅读 1,922评论 0 2

友情链接更多精彩内容