皆、お疲れ様です - Git
type: channel
link: https://iamyqhp.com/tag/Git/
items: Git訓練場-落花有意隨流水 流水無心戀落花
items: Git訓練場-剪不斷 理還亂 是離愁
items: Git訓練場-夢裡不知身是客 一響貪歡
items: Git訓練場-人生如夢 一尊還酹江月
items: Git訓練場-同是天涯淪落人 相逢何必曾相識.assets
items: Git訓練場-人生代代無窮已 江月年年望相似
items: Git訓練場-雲想衣裳花想容 春風弗蘭露華容

Git訓練場-落花有意隨流水 流水無心戀落花
type: item
date: 2021-02-24T04:33:00+08:00
description: 解决冲突第一步:删除冲突部分首先打开冲突文件ProgramAfile1.txt,可以看到典型的冲突文件显示方式箭头<<<与>>>范围内表示的是发生冲突的位置,B是程序员B对ProgramAfile1.txt所做的修改,A为程序员A和远程仓库C中ProgramAfile1.txt的内容假如这时候AB两位程序员经过了协商,绝对保留B所做的修改,则需要删除其余多余的行注:vim指令补充:通过esc进入命令行模式,双击d单独删除某行,dG删除光标所在行以及其下所有行的内容第二步:进行提交再次查看一下状态发现文件处于工作区,git提醒我们要使用git add指令将已经解决冲突的文件提交到暂存区紧跟着提醒你执行git commit,我们照做执行git commit,然后git自动生成了一个commit信息文件,保存即可,再查看一下状态,即解决冲突这时候我们git commit时候,再git status时显示已经解决冲突,也显示出你比远程的origin/master多了2次提交解密为何快2个版本我们先对比下两个仓库的版本号看看可以看出现在AC两个的仓库仍然是一样的B第一次比AC快是因为B自己对文件进行了修改与提交,所以比AC更快1个版本然后B想push,但因为与C发生冲突,为了解决冲突,所以修改并提交了冲突文件,所以又快了1个版本图文讲解首先A在本地仓库修改了ProgramAfile1.txt,并进行了push到了C此时B同样也在本地仓库进行了一次提交修改ProgramAfile1.txt,但因为修改的是与A同一个文件的同一个地方,所以push失败,只能进行pull到B本地进行手动修改当B执行pull操作时,将远程仓库拉取到本地后,由于发生冲突,所以暂时不会将origin/master的指向更新到最新提交,随后,在B中手动解决冲突并合并后,B的状态变为可以看到解决冲突,手动合并后,B已经往前更新了两次提交,而此时的origin/master仍然指向提交1st我们试试B仓库执行git push发现push成功,并且BC已经相同了我们看看A试试这时候A则慢了BC两个版本三个仓库状态图如下:在实际开发当中,难免会出现多个人修改了同一个文件的情况,在进行手动合并的过程中一定要与对方协商应该如何合并,如何舍取,而不是直接覆盖

Git訓練場-剪不斷 理還亂 是離愁
type: item
date: 2021-01-30T06:02:00+08:00
description: Github仓库的创建我们想要在全球最大的同性交流网站上提交你自己本地的版本仓库,那么首先就需要注册一个Gtihub账号,具体的操作无非就是邮箱注册这些,为了方便演示,我初始化了我本地的版本仓库,并创建了一个FirstfileThis is the first line and commitSEELE@DESKTOP-RHPQ0IE MINGW64 /F/Gitfile (master) $ git status On branch master nothing to commit, working tree clean这时候我们进入github的页面中Create a new repository创建新的仓库这个界面因为我选择的是免费的github,所以只能使用Public仓库README我自己写,所以不需要添加,这个仓库我只用作测试与演示,所以不需要添加语言备注.gitignore与license这样我的一个新的仓库就创建好了因为我并没有配置README这个Markdown,所以我要在自己的本地版本仓库配置一个README文档，并提交到我的本地缓存区SEELE@DESKTOP-RHPQ0IE MINGW64 /F/Gitfile (master) $ vim README.md## This repository is used for my Git and Github learning # author * YQHP-YuKiSEELE@DESKTOP-RHPQ0IE MINGW64 /F/Gitfile (master) $ git status On branch master nothing to commit, working tree clean这时候我们就需要将此时的本地版本仓库提交到Github的仓库,我们就可以用到此条命令:git remote add origin意思就将你本地的仓库关联到远程仓库的地址,后面加上你远程仓库的HTTPS$ git remote add origin https://github.com/YQHP-YuKi/Gitleaning.git然后再加上此命令:git push -u origin master这条命令意思就是将本机上的master分支推送到远程版本仓库并与之相关联$ git push -u origin master Enumerating objects: 6, done. Counting objects: 100% (6/6), done. Delta compression using up to 12 threads Compressing objects: 100% (4/4), done. Writing objects: 100% (6/6), 583 bytes | 583.00 KiB/s, done. Total 6 (delta 0), reused 0 (delta 0), pack-reused 0 To https://github.com/YQHP-YuKi/Gitleaning.git * [new branch] master -> master Branch 'master' set up to track remote branch 'master' from 'origin'.输入你的Github账号密码即可这时候我再刷新我的Github的仓库网页,就看见将本地master传上去了Git远程操作我们在本地Git执行一些命令,可以查看到本地Git仓库与外界服务器版本库有哪些关联git remote showSEELE@DESKTOP-RHPQ0IE MINGW64 /F/Gitfile (master) $ git remote show origin这条命令就可以看到我本地版本库就只与Github上面的版本库做了相关联,如果我与Gitlab或者其他服务器做了关联,也会罗列出来git remote show + 版本库名字:了解详细信息SEELE@DESKTOP-RHPQ0IE MINGW64 /F/Gitfile (master) $ git remote show origin * remote origin Fetch URL: https://github.com/YQHP-YuKi/Gitleaning.git Push URL: https://github.com/YQHP-YuKi/Gitleaning.git HEAD branch: master Remote branch: master tracked Local branch configured for 'git pull': master me…

Git訓練場-夢裡不知身是客 一響貪歡
type: item
date: 2020-12-05T10:53:00+08:00
description: 标签与diffGit标签新建标签,标签有两种:轻量级标签(lightweight)与带有附注标签(annotated)创建一个轻量级标签git tag v1.0.0创建一个带有附注的标签git tag -a v1.0.1 -m 'release version'删除标签git tag -d tag_name我们先创建一个轻量级标签:A@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (test) $ git tag v1.0.0查看下git reflog:a7ce3cd (HEAD -> test, tag: v1.0.0) HEAD@{0}: commit: finish the file a5300dd HEAD@{1}: commit: apply stash 3573a23 HEAD@{2}: reset: moving to HEAD 3573a23 HEAD@{3}: reset: moving to HEAD 3573a23 HEAD@{4}: reset: moving to HEAD发现没有任何多余的操作,只是增加了个指针,没有任何文件的移动我们再试试带注释的:A@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (test) $ git tag -a v2.0.0 -m '2.0.0 released'如果想查看你有哪些标签,则直接使用命令:git tagA@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (test) $ git tag v1.0.0 v2.0.0如果想在很多标签中查找某个标签,则可以加上这个标签的关键字并且在前面跟上-l参数,也可以跟上--list参数:$ git tag -l "v2.0.0" v2.0.0$ git tag --list "v2.0.0" v2.0.0删除标签:增加-d参数A@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (test) $ git tag -d v1.0.0 Deleted tag 'v1.0.0' (was a7ce3cd) A@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (test) $ git tag v2.0.0然后我们切换到master,再次查看git tag:A@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (test) $ git checkout master Switched to branch 'master' A@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (master) $ git tag v2.0.0可以发现在master中也能看到这个标签,可以说明标签不会随分支的改变而改变git blame这个命令在我们实际操作过程中,会经常用到,我们查看下它的文档:git blame --help git-blame - Show what revision and author last modified each line of a file可以查看一个文件最近的修改是哪个人所做的,例:$ git blame test1.txt ^61adf63 (YQHP-YuKi 2020-11-22 15:53:29 +0800 1) hello 9ed5c239 (YQHP-YuKi 2020-11-22 15:57:34 +0800 2) world b38e36d4 (YQHP-YuKi 2020-11-22 15:58:38 +0800 3) hello world 3573a232 (YQHP-YuKi 2020-11-22 16:02:40 +0800 4) hello hello hello 69d720db (YQHP-YuKi 2020-12-01 19:17:47 +0800 5) stash in master可以显示一个文件哪一行以及提交ID是由那一个人所做的diffgit diff这个命令是我们在项目开发时候会经常使用到的命令,主要是对比两个文件的差异性,在了解git diff之前,我们先了解一下普通的diff我们可以先查看一下自带的diff命令:$ which diff /usr/bin/diff然后创建两个txt文件,分别是a.txt与b.txt:a.txt:$ cat a.txt hello git hello a1 hello a2b.txt:$ cat b.txt hello git hello b1 hello b2我们使用diff查看一下:$ diff a.txt b.txt 2,3c2,3 < hello a1 < hello a2 ---…

Git訓練場-人生如夢 一尊還酹江月
type: item
date: 2020-12-01T08:48:00+08:00
description: checkout进阶与stashcheckout --讲解我们先查看下git status是否正常,然后再编辑test1.txt增加了no hallo:$ cat test1.txt hello world hello world hello hello hello no hello这时候我们再查看一下:$ git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: test1.txt no changes added to commit (use "git add" and/or "git commit -a")发现是处于工作区了,我们使用git checkout --命令试试:$ git checkout -- test1.txt再查看一下:A@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (master) $ git status On branch master nothing to commit, working tree clean A@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (master) $ cat test1.txt hello world hello world hello hello hello这时候就可以发现添加的no hallo已经不见了,并且git的状态也恢复正常了我们这时候还是修改test1.txt,对其加入no hallo:A@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (master) $ cat test1.txt hello world hello world hello hello hello no hello A@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (master) $ git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: test1.txt no changes added to commit (use "git add" and/or "git commit -a")然后执行git add .,再查看一下:A@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (master) $ git add . A@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (master) $ git status On branch master Changes to be committed: (use "git restore --staged <file>..." to unstage) modified: test1.txt我们如果再次修改test1.txt会发生什么了?我们现在只是将工作区的第一次修改的test1.txt提交到了暂存区,试试吧:新的修改:must helloA@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (master) $ vim test1.txt A@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (master) $ cat test1.txt hello world hello world hello hello hello no hello must hellogit status查看:$ git status On branch master Changes to be committed: (use "git restore --staged <file>..." to unstage) modified: test1.txt Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard chang…

Git訓練場-同是天涯淪落人 相逢何必曾相識.assets
type: item
date: 2020-11-22T04:45:00+08:00
description: 分支进阶与版本回退fast-forward如果可能,合并分支时Git会使用fast-forward模式在这种模式下,删除分支时会丢掉分支信息合并时加上--no-ff参数会禁用fast-forward,这样会多出一个commit idgit merge --no-ff查看log,以图形化的方式git log --graph这样dev虽然在合并后也是在分支上的,而且master并不会往前前进一个位子,而是直接commit一次提交记录,再与dev进行合并尝试--no-ff参数首先我们查看一下当前master与dev的git log,对比一下,会发现两个的git log因为上一章的合并导致完全一样,然后我们切换到dev修改一下文件,并且提交:$ git status On branch dev nothing to commit, working tree clean A@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (dev) $ cat test.txt I am YQHP-YuKi hello everyone this is master this is dev again这时候我们再切回到master,使用git merge --no-ff dev试试:出现了这个vim界面,显示出一条提交信息Merge branch 'dev' into master # Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. # # Lines starting with '#' will be ignored, and an empty message aborts # the commit.$ git merge --no-ff dev Merge made by the 'recursive' strategy. test.txt | 2 ++ 1 file changed, 2 insertions(+)这时候我们再查看一下master的git log,与之前dev的git log比较一下:经过git merge --no-ff的master:commit 534d7bb70f5e95ba74af17c252e8c14d27ce16d1 (HEAD -> master) Merge: a41fd9e 74bee32 Author: YQHP-YuKi <**********@qq.com> Date: Fri Nov 20 17:37:35 2020 +0800 Merge branch 'dev' into master commit 74bee3236352ae346395dca7f3de1675df548a0c (dev) Author: YQHP-YuKi <**********@qq.com> Date: Fri Nov 20 17:22:23 2020 +0800 this is dev again commit a41fd9e529c9a9e0b746745beae653b6736dac46 Merge: 6162e11 0a3a478 Author: YQHP-YuKi <**********@qq.com> Date: Thu Nov 19 15:42:10 2020 +0800 Merge branch 'dev' into mastercommit 74bee3236352ae346395dca7f3de1675df548a0c (HEAD -> dev) Author: YQHP-YuKi <1465722762@qq.com> Date: Fri Nov 20 17:22:23 2020 +0800 this is dev again commit a41fd9e529c9a9e0b746745beae653b6736dac46 (HEAD -> dev, master) Merge: 6162e11 0a3a478 Author: YQHP-YuKi <**********@qq.com> Date: Thu Nov 19 15:42:10 2020 +0800 Merge branch 'dev' into master commit 0a3a478dc18d6b39a53e7ad3cbbecdda0531071a Author: YQHP-YuKi <***********@qq.com> Date: Thu Nov 19 15:25:09 2020 +0800…

Git訓練場-人生代代無窮已 江月年年望相似
type: item
date: 2020-11-19T04:16:00+08:00
description: .gitignore与分支.gitignore一般来说每个Git项目中都需要一个.gitignore文件,这个文件的作用就是告诉Git哪些文件不需要添加到版本管理中,比如Android项目中的iml文件及build目录下编译生成的文件,项目中经常会有很多临时文件, 如临时的编译中间文件, 通常这些文件不需要加入到版本控制中. 如何在提交的时候跳过这些文件? 一种办法是很繁琐的在 git add 的时候手动添加需要加入版本控制的文件, 这种方法不仅繁琐也很容易犯错.还有一个办法就是使用 gitignore 文件哪些文件需要放入到.gitignore里通常, 能够通过其他文件自动生成的都不需要放入版本控制, 如编译产生的临时文件. 还有, 操作系统会创建自动创建一些文件, 如缩略图, 这些也不需要放入版本控制 最后, 某些比较敏感的文件, 比如包含数据库连接密码的配置文件也不要放到公共 git 仓库里 不过, 并不是一定如此, 还是得具体问题具体分析总结gitignore 是用来过滤不想加入版本控制的文件用的可以找到很多现成的 gitignore 文件你应该尽早编写gitignore并及时提交具体操作讲解创建一个properties文件$ echo "my project configuration" > settings.properties查看状态$ git status On branch master Untracked files: (use "git add <file>..." to include in what will be committed) settings.properties nothing added to commit but untracked files present (use "git add" to track)会显示这个properties文件一直处于是未追踪的状态,不管你以后是否提交了txt文件到版本库中,都会一直显示未追踪,但按理来说,我们不能将项目有关的配置文件提交到Git的版本库中,这时候就需要properties放进版本库创建.gitignore$ vim .gitignore查看文件以及git status$ ls -al total 59 drwxr-xr-x 1 A 197609 0 11月 15 20:34 ./ drwxr-xr-x 1 A 197609 0 11月 15 10:20 ../ drwxr-xr-x 1 A 197609 0 11月 15 20:29 .git/ -rw-r--r-- 1 A 197609 0 11月 15 20:34 .gitignore -rw-r--r-- 1 A 197609 25 11月 15 20:29 settings.properties -rw-r--r-- 1 A 197609 16 11月 14 17:17 test.txt -rw-r--r-- 1 A 197609 13 11月 14 11:56 test2.txt$ git status On branch master Untracked files: (use "git add <file>..." to include in what will be committed) .gitignore settings.properties nothing added to commit but untracked files present (use "git add" to track)这时候我们再vim .gitignore$ vim .gitignore在.gitignore里面加入文件名 settings.properties$ cat .gitignore settings.properties我们这时候再git status一下,就可以发现 settings.properties不见了$ git status On branch master Untracked files: (use "git add <file>..." to include in what will be committed) .gitignore nothing added to commit but untracked files present (use "git add" to track)我们提交.gitignore到暂存区和版本库中$ git add .gitignore warning: LF will be replaced by CRLF in .gitignore. The file will have its original line endings …

Git訓練場-雲想衣裳花想容 春風弗蘭露華容
type: item
date: 2020-11-14T05:43:00+08:00
description: 简单介绍Git官网:https://git-scm.com/想学习Git，个人建议有Linux的基础，因为Git本来就是Linux大牛所创造的,所以大部分命令都与Linux有关，它是一个分布式版本控制系统(DVCS)。Git GitHub GitLab介绍Git是一个版本控制软件GitHub与GitLab都是用于管理版本的服务端软件GitH提供免费服务(代码需要公开)及付费服务(代码私有化)GitLab用于在企业内部管理Git版本库,功能上类似于GitHub文件的三种状态已修改(modified)已缓存(staged)已提交(committed)Git安装Linux(Ubantu)$ sudo apt install git-allCentos或RHEL$ sudo dnf install git-allMac安装命令行工具(如已安装Xcode,命令行工具会在首次启动Xcode时提示安装)在 Mac 上安装 Git 有多种方式。 最简单的方法是安装 Xcode Command Line Tools。 Mavericks （10.9） 或更高版本的系统中，在 Terminal 里尝试首次运行 git 命令即可。$ git --versionhomebrewmacportsWindows通过msysGit:https://git-scm.com/建议使用Git命令行，方便快捷简单,GUI繁琐个人感觉花里胡哨,本人是在Windows10下进行的Git，安装完Git后，直接右键就可以看到一个Git Bash here创建你的第一个本地厂库我是在e盘下创建了一个Gitfile的文件目录,你们可以直接Git命令行mkdir，然后cd到目录下，先初始化这文件目录为master,命令:$ git init就能看到此文件目录为master了,可以通过命令查看到隐藏文件,一个名叫.git的文件如果我们使用命令删除.git文件，就会发现Gitfile文件不再是master文件$ rm -rf .git可以通过命令查看.git文件下有许多文件,这些文件代表着你的Gitfile文件是由Git所管理的$ cd .git $ ls -al我们回到上一目录,在Gitfile目录下创建一个名为test.txt文件$ vim test.txt然后在test.txt文件中写入hello world,并使用cat命令查看$ cat test.txt这时候就有个重要命令了,此命令可以查看到Git文件的状态,命令就是:$ git status输入命令后可以查看到:Administrator@8_60 MINGW64 /e/Gitfile (master) $ git status On branch master No commits yet Untracked files: (use "git add <file>..." to include in what will be committed) test.txt nothing added to commit but untracked files present (use "git add" to track)这句话翻译过来的意思就是:在master分支上,还有没提交,还未追踪到的文件test.txt,没有任何提交,单出现了未追踪的文件,使用git addgit add这个命令就是,将你工作目录中修改的文件放入到缓存区中,我们使用git add将test.txt放入缓存区$ git add test.txt再次用git status查看Administrator@8_60 MINGW64 /e/Gitfile (master) $ git status On branch master No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: test.txt就已经显示test.txt已经提交到了缓存区,并且也给出了使用git rm --chached命令把test.txt从缓存区删除,放回到工作区,使用命令:$ git rm --cached test.txt再次使用命令查看Git文件状态$ git status接下来我们就要将缓存区里的文件提交到本机的版本库中对于user.name与user.email来说,有3个地方可以设置1./etc/gitconfig(几乎不会使用),命令:$ git config --system2.~/.gitconfig(很常用),命令:$ git config --global3.针对特定项目的,命令:$ git config --local这三条…