Java教程

git快速入门笔记

本文主要是介绍git快速入门笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录
  • 一. 安装git
  • 二. 创建git仓库
  • 三、添加文件到git 仓库
  • 四、常用命令
  • 五、创建远程仓库
  • 六、分支管理
  • 七、创建标签
  • 八、忽略特定文件

一. 安装git

这里使用的是Ubuntu Linus,安装之前先输入git,看看系统有没有安装,没有的情况下系统会提醒你如何安装。

# git
The program 'git' is currently not installed. You can install it by typing:
apt-get install git

然后输入命令apt-get install git系统就会为你安装。

git安装完成后必须设置参数:

# git config --global user.name "xiaoji"
# git config --global user.email  "xiaoji@163.com"

--global参数表明这台机器上的所有仓库都会使用这个配置,也可以单独配置每个仓库

二. 创建git仓库

仓库可以理解为一个目录,目录里面的所有文件都可以被git 管理起来。文件的追踪改动只能追踪文本文件,不能追踪二进制文件。创建过程如下:

  • 先创建一个空目录
# mkdir learngit
# cd learngit
# pwd
  • 再git 初始化,这样git仓库就建好了,此时在仓库目录下面有个.git的隐藏文件
# git init
Initialized empty Git repository in /root/learngit/.git/

三、添加文件到git 仓库

一定要先把要添加的文件放到learngit目录下,在这个目录下再输入命令

# git add readme.txt
# git commit -m "wrote a readme file"

git add 把文件添加到暂存区
git commit把文件提交到仓库,-m后面输入的是本次提交的说明,可以输入任意内容,最好是有意义的,这样你就能从历史记录里方便地找到改动记录.

四、常用命令

查看仓库当前状态

# git stutus

查看具体修改了什么内容

# git diff readme.txt

显示从最近到最远的提交日志,参数--pretty=oneline可以只显示提交id

#git log
#git log --pretty=oneline

版本更改

# git reset --hard commit_id

查看提交历史

# git log

查看命令历史

# git reflog

撤销工作区修改:

git checkout -- readme.txt

撤销暂存区修改:

$ git reset HEAD file

删除文件

#rm <file>
#git rm <file>
#git commit -m "delete file"

恢复工作区被删除的文件

#rm <file>
#git checkout -- <file>

五、创建远程仓库

  1. 本地仓库生成ssh秘钥,在根目录下输入命令
# ssh-keygen -t ed25519 -C "your-email"
  1. github设置里添加公有秘钥

  2. 本地库关联远程库

# git remote add origin git@github.com:velloastein/learngit.git
  1. 关联后,第一次推送master分支的所有内容
# git push -u origin master
# git push origin master
  1. 删除远程库
#git remote rm <name>`
  1. 查看远程库信息
git remote -v
  1. 从远程库克隆,在用户目录下使用命令,克隆到一个本地库
git clone git@github.com:velloastein/IntelliJ-IDEA-Tutorial.git

六、分支管理

查看分支:

git branch

创建分支:

git branch <name>

删除分支:

git branch -d <name>

切换分支:

git checkout <name>
git switch <name>

创建并切换分支:

git checkout -b <name>
git switch -c <name>

合并某分支到当前分支:

git merge <name>

解决分支合并冲突,如果自动合并失败,Git告诉我们,readme.txt文件存在冲突,必须手动解决冲突后再提交。git status也可以告诉我们冲突的文件,可以使用cat直接查看文件手动修改,再提交。

git add readme.txt 
git commit -m "conflict fixed"

用带参数的git log也可以看到分支的合并情况

git log --graph --pretty=oneline --abbrev-commit

分支管理策略
强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息

git merge --no-ff -m "merge with no-ff" <name>

bug分支
Git还提供了一个stash功能,可以把当前工作区现场“储藏”起来,等以后恢复现场后继续工作。

git stash

git stash list命令看看

git stash list

git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

git stash apply stash@{0}

git stash pop,恢复的同时把stash内容也删了

Git专门提供了一个cherry-pick命令,让我们能复制一个特定的提交到当前分支,在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick <commit>命令,把bug提交的修改“复制”到当前分支,避免重复劳动。

丢弃一个没有被合并过的分支

git branch -D <name>

多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin <branch-name>推送自己的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  3. 如果合并有冲突,则解决冲突,并在本地提交;
  4. 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!
  5. 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>
  6. 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

rebase

  • rebase操作可以把本地未push的分叉提交历史整理成直线;
  • git rebase提取操作有点像git cherry-pick一样,执行rebase后依次将当前(执行rebase时所在分支)的提交cherry-pick到目标分支(待rebase的分支)上,然后将在原始分支(执行rebase时所在分支)上的已提交的commit删除。
  • rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

七、创建标签

  • 命令git tag <tagname> commitid用于新建一个标签,默认为HEAD,也可以指定一个commit id

  • 命令git tag -a <tagname> -m "blablabla..." commitid可以指定标签信息

  • 命令git tag可以查看所有标签

  • 命令git show <tagname>可以看到说明文字

  • 标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签

  • 命令git push origin <tagname>可以推送一个本地标签

  • 命令git push origin --tags可以推送全部未推送过的本地标签;

  • 命令git tag -d <tagname>可以删除一个本地标签;

  • 命令git push origin :refs/tags/<tagname>可以删除一个远程标签。

八、忽略特定文件

在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件

.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!

GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore

检验.gitignore的标准是git status命令是不是说working directory clean

可以用git check-ignore命令检查.ignore哪个文件写错了

git check-ignore -v <file>

强制添加

git add -f <file>

把指定文件排除在.gitignore规则外的写法就是!+文件名,所以,只需把例外文件添加进去即可

# 排除所有.开头的隐藏文件:
.*
# 排除所有.class文件:
*.class

# 不排除.gitignore
!.gitignore

使用别名
加上--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用

git config --global alias.st status
git st

每个仓库的Git配置文件都放在.git/config文件中

当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig

配置别名也可以直接修改这个文件,如果改错了,可以删掉文件重新通过命令配置

这篇关于git快速入门笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!