记录我的Git学习记录

在这里记录我的Git学习记录:

1.创建Git版本库:

git clone [email protected]:498511842/gitskills.git//git clone克隆一个本地库

//注意把Git库的地址换成你自己的,然后进入gitskills目录看看,已经有README.md文件了


cdlearngit

pwd //用于显示当前目录 如D:/learngit


第二步:通过git init把刚创建的目录变成Git可以管理的仓库:

gitinit

//终端显示:Initialized empty Git repository in

//目录下多出.git目录 ls -ah 可查看隐藏


然后把文件添加到版本库。

gitaddreadme.txt//(文件名)注意,可反复多次使用,添加多个文件;

gitcommit-m"wrote a readme file"//(提交并且描述)

//commit可以一次提交很多文件,所以你可以多次add不同的文件

2.时光穿梭

git status//命令可以让我们时刻掌握仓库当前的状态

git diff readme.txt//git diff顾名思义就是查看difference

//要随时掌握工作区的状态,使用git status命令。

//如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

2.1 版本退回

gitlog//命令可以告诉我们历史记录,在Git中,我们用gitlog命令查看 gitlog命令显示从最近到最远的提交日志

gitlog/如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数

git reset--hard HEAD^//把当前版本退回到上一个版本 上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

cat readme.txt//查看文件内容

git reset--hard ID//ID为版本号commit id

git reflog//git reflog用来记录你的每一次命令

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

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

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

2.2 工作区和暂存区

去廖老师那去看

2.3 管理修改

git diff HEAD-- readme.txt//命令可以查看工作区和版本库里面最新版本的区别

每次修改,如果不用git add到暂存区,那就不会加入到commit中。

具体去自己看

2.4 撤销修改

git checkout-- readme.txt//git checkout -- file可以丢弃工作区的修改

gitresetHEADreadme.txt//gitresetHEAD可以把暂存区的修改撤销掉(unstage),重新放回工作区

2.5 删除文件

rm test.txt//通常直接在文件管理器中把没用的文件删了,或者用rm命令删了

git rm test.txt//确实要从版本库中删除该文件,那就用命令git rm删掉,并且gitcommit

//先手动删除文件,然后使用git rm 和gitadd效果是一样的

git checkout-- test.txt//删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本

3.远程仓库

首先创建SSH Key

ssh-keygen -t rsa -C"[email protected]"//需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可

//可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人

//然后登陆GitHub 设置SSH Keys然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容

//点“Add Key”,你就应该看到已经添加的Key

3.1 添加远程库

//首先登陆GithubCreateanewrepo 创建一个新仓库

//在Repositoryname填入仓库名 其他保持默认设置,点击“Createrepository”按钮,就成功地创建了一个新的Git仓库

git remoteaddorigin [email protected]:498511842/learngit.git

git remoteaddorigin https://github.com/498511842/MyPython.git//两种方法

git push -u originmaster//第一次推送使用-u 由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令

git push originmaster把本地master分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!

3.2 从远程库克隆

登陆GitHub,创建一个新的仓库,名字叫gitskills 勾选Initialize this repository with a README

git clone [email protected]:498511842/gitskills.git//git clone克隆一个本地库

//注意把Git库的地址换成你自己的,然后进入gitskills目录看看,已经有README.md文件了

4.分支管理

看廖雪峰的说法

4.1 创建与合并分支

git checkout -b dev//首先,我们创建dev分支,然后切换到dev分支

//git checkout命令加上-b参数表示创建并切换,相当于以下两条命令

git branch dev

git checkout dev

//然后,用git branch命令查看当前分支

git branch//git branch命令会列出所有分支,当前分支前面会标一个*号

//然后提交 add commit

//现在,dev分支的工作完成,我们就可以切换回master分支

git checkout master

//我们把dev分支的工作成果合并到master分支上

git merge dev

git branch -d dev//合并完成后,就可以放心地删除dev分支了

git switch -c dev//创建并切换到新的dev分支,可以使用

git switch master//直接切换到已有的master分支

查看分支                          git branch

创建分支                          git branch

切换分支                          git checkout 或 git switch

创建and切换分支          git checkout -b 或 git switch -c

合并分支到当前分支  git merge

删除分支                          git branch -d

4.2 解决冲突

用git log --graph命令可以看到分支合并图

4.3 分支管理策略

git merge --no-ff -m "merge with no-ff" dev//合并dev分支,请注意--no-ff参数,表示禁用Fast forward

git log --graph --pretty=oneline --abbrev-commit//用git log看看分支历史

4.4 BUG分支

//当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场

//在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick 命令,把bug提交的修改“复制”到当前分支,避免重复劳动

4.5 Feature分支

//开发一个新feature,最好新建一个分支

//如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除

4.6 多人协作

git remote//要查看远程库的信息,用git remote

git remote -v//或者,用git remote -v显示更详细的信息

git push origin dev//如果要推送其他分支,比如dev,就改成

//从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交

//在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致

//建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name

//从远程抓取分支,使用git pull,如果有冲突,要先处理冲突

4.7 Rebase

git rebase//rebase操作可以把本地未push的分叉提交历史整理成直线;

//rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

5.标签管理

//tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起

5.1 创建标签

git tag v1.0//敲命令git tag 就可以打一个新标签

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

git tag v0.9 f52c633//比方说要对add merge这次提交打标签,它对应的commit id是f52c633,敲入命令

git show v0.9//标签不是按时间顺序列出,而是按字母排序的。可以用git show 查看标签信息

git tag -a v1.0 -m "version 0.1 released" f52c633//还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字

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

//命令git tag -a -m "blablabla..."可以指定标签信息

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

5.2 操作标签

git tag -d v0.1//如果标签打错了,也可以删除

//因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除


git push origin v1.0//如果要推送某个标签到远程,使用命令git push origin

git push origin --tags//或者,一次性推送全部尚未推送到远程的本地标签

//如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除git tag -d v0.9

//然后,从远程删除。删除命令也是push,但是格式如下git push origin :refs/tags/v0.9

6.使用GitHub

7.使用Gitee

//使用Gitee和使用GitHub类似,我们在Gitee上注册账号并登录后,需要先上传自己的SSH公钥。选择右上角用户头像 -> 菜单“修改资料”,然后选择“SSH公钥”,填写一个便于识别的标题,然后把用户主目录下的.ssh/id_rsa.pub文件的内容粘贴进去

git remote add origin [email protected]:liaoxuefeng/learngit.git//在本地库上使用命令git remote add把它和Gitee的远程库关联

git remote -v//git remote -v查看远程库信息

git remote rm origin//删除已有的GitHub远程库origin

git remote add github [email protected]:michaelliao/learngit.git//先关联GitHub的远程库

git remote add gitee [email protected]:liaoxuefeng/learngit.git//再关联Gitee的远程库

如果要推送到GitHub,使用命令git push github master

如果要推送到Gitee,使用命令git push gitee master

8.自定义Git

git config --global color.ui true//让Git显示颜色,会让命令输出看起来更醒目

Git 全局设置

git config --global user.name "username"

git config --global user.email "[email protected]"

创建Git仓库

mkdir MyPython

cd MyPython

git init

touch README.md

git add README.md

git commit -m "first commit"

git remote add origin https://gitee.com/PanPlan/MyPython.git

git push -u origin master

已有仓库?

cd existing_git_repo

git remote add origin https://gitee.com/PanPlan/MyPython.git

git push -u origin master

8.1 忽略特殊文件

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

忽略文件的原则是:

1.  忽略操作系统自动生成的文件,比如缩略图等;

2.  忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;

3.  忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

//使用Windows的童鞋注意了,如果你在资源管理器里新建一个.gitignore文件,它会非常弱智地提示你必须输入文件名,但是在文本编辑器里“保存”或者“另存为”就可以把文件保存为.gitignore了

如果文件被忽略又确实想添加该文件,可以用-f强制添加到Git

git add -f App.class

或者你发现,可能是.gitignore写得有问题,需要找出来到底哪个规则写错了,可以用git check-ignore命令检查

git check-ignore -v App.class

Git会告诉我们,.gitignore的第3行规则忽略了该文件,于是我们就可以知道应该修订哪个规则

8.2 配置别名

git config --global alias.st status//我们只需要敲一行命令,告诉Git,以后st就表示status

当然还有别的命令可以简写,很多人都用co表示checkout,ci表示commit,br表示branch

git config --global alias.co checkout

git config --global alias.ci commit

git config --global alias.br branch

git ci -m "bala bala bala..."//以后提交就可以简写成:

--global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。

git config --global alias.last 'log -1'//配置一个git last,让其显示最后一次提交信息

甚至还有人丧心病狂地把lg配置成了:

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

//配置Git的时候,加上--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用

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

//别名就在[alias]后面,要删除别名,直接把对应的行删掉即可

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

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


上面这么多其实最常用还是clone和push


原文地址

你可能感兴趣的:(记录我的Git学习记录)