Git学习-廖雪峰

344 阅读1分钟

1.添加仓库的时候出现的错误

$ git add readme.txt
warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory

这里的原因是linux中的换行是LF而在windows下是用CRLF 这里需要的命令是可以直接禁止转换

$ git config --global core.autocrlf false

我这里是百度得到blog.csdn.net/qq_37189082…

2.Git的常用命令

mkdir learngit
cd learngit //一定要在自己创建的工作目录下
git init //这里是初始化仓库,会生成.git隐藏文件夹
vim readme.txt    //在创建的目录下编辑readme.txt文件,
touch file1 file2 file3   // 这里的是创建你需要的文件
git add readme.txt  //把readme.txt文件加入到仓库中
git commit -m "creat readme文件" //这里是设置提交的文件的说明,以便别人浏览和自己查看不同的版本
git diff readme.txt  //查看提交的文件的区别,可以查找修改了哪些
git reset --hard HEADE^  //回到上一版本
git log      // 可以查看提交修改的每一个步骤
git log --pretty=oneline  //简洁的显示,一行的显示提交的写的描述信息commit -m “提交的信息”
git reset --hard 98878    //这个恢复到固定的一个版本,后面添加的是ID唯一标识码
git reflog    //这个查看以前的用的命令行可以查看以前提交信息,ID以便回到以前的版本中

3. 这里是远程仓库的管理

推荐廖雪峰的教程www.liaoxuefeng.com/wiki/896043…

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

然后自己注册一个github托管账号里面设置ssh

4.关联一个远程库

git remote add origin git@github.com:hanmo-1/learngit.git  // 这里的origin库是远程库的名字,可以任意,只不过是默认习惯的命名
git push -u origin master  // 首次提交的时候需要用-u命令
git remote rm -v    // 在删除远程库的时候用这里来查看有哪些远程库
git remote rm origin   // 这样就可以删除远程库oringin

5.解决clone中出现的问题

linjian@LAPTOP-59GF4RKD MINGW64 ~
$git clone git@github.com:hanmo-1/gitskills.git
bash: $'\302\203\302\203git': command not found //出现这个是因为直接从github中进行复制后有空白行

这里我自己是直接敲的就不会有这个问题

6.关于分支

git checkout -b dev
git branch master     //这两条都是创建分支
git switch master       
git branch           // 查看分支
git branch -d dev    // 删除一个分支
git merge --no-ff -m "合并成新的" dev  //合并到master下
git merge dev // 是不会留下分支记录的fasting forward合并方式
git stash //将当前还没提交的分支情况保存下来,可以先处理其他的分支或者主分支的事 比如修复BUG
git stash list  //用来查看之前保存的工作现场
git stash apply  //用来恢复之前保存的工作现场
git stash drop    //用来丢弃上stash上的内容
git stash pop    //可以一次性恢复并且删除stash上的内容
git stash apply stash@{0}   // 这里是直接可以恢复其中的一个分支工作现场
git cherry-pick 4c805e2    // 可以把在一个分支修改的工作同时可以改到分支上,其中的数字是修改分支的id
git branch -D feature-vulcan  // 强行删除一个还没合并的分支 这里是和删除之前修改bug类似
// 这里主要是模拟需要增加功能,但是改好了还没合并的情况
git checkout -b dev origin/dev   //这里表示创建分支并且将分支提交到远程origin的分支
// 这里可以使用git remote -v来查看
git push origin dev  // 远程库更新
//如果更新失败是因为同样的伙伴也在更新了dev,
git pull // 使用这个命令来把最新的提交抓取下来,然后本地合并
git branch --set-upstream-to=origin/dev dev //这里是pull有问题的提示,是因为没有指定本地的dev分支与远程的origin/dev分支链接,这个命令就是将dev与origin/dev的链接
//这里在进行git pull成功后就是把远程的origin/dev抓取下来了,所有有两个平行的分支这样就会有合并有冲突,这就要开始解决冲突后再提交

7. 关于rebase

理解比较难可以参考 blog.csdn.net/liuxiaoheng…

8.给commit的加标签

git tag v0.9   // 给当前HEAD提交的版本加标签
git tag    //查看所有标签
git show v1.0    //显示具体的tag信息
git push origin v1.0  //推送标签到远程
git push origin --tags //将还没有推到远程的tag全部一次性推到远程

git tag -d v0.9   //删除本地加的标签
git push origin :refs/tags/v1.0    //删除远程提交的tag
git  tag -a v1.0 -m "指定标签信息" 109ag  //增加标签信息说明

9.使用gitee

使用gitee也和使用github一致 要将.ssh/中的rsa.pub复制到gitee中的ssh中就可以了

git remote add gitee git@gitee.com:hanmoly/learngit.git    //关联gitee中的仓库名字最好和本地一致
git remote  add github git@github.com:hanmo-1/learngit.git   // 同样的也要是使用仓库的名字和本地一致
git push github master
git push gitee master      //向远程推送
git log -graph --pretty=oneline --abbrev-commit // 这个是查看分支情况

10.git配置

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

git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.st status
git config --global alias.unstage 'reset HEAD'
git config --global alias.last 'log -1'
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配置文件都放在.git/config文件中 而当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中

10.搭建自己的git服务器

参考廖雪峰www.liaoxuefeng.com/wiki/896043… 11.source tree出现的问题 这里主要是出现push时候出现密钥ssh没有 参考:blog.csdn.net/weixin_3786… putty/plink是一个连接telnet和ssh协议的软件 openssh也是一个支持连接ssh协议的软件

11.补充

删除远程库的分支

linjian@LAPTOP-59GF4RKD MINGW64 /d/桌面/matlab串口资料 (master)
$ git push gitee --delete dev       //删除远程库的分支
remote: Powered by GITEE.COM [GNK-5.0]
To gitee.com:hanmoly/signal-process.git
 - [deleted]         dev

12.使用心得 本地的库和远程的库是相对独立,在自己的库中产生分支,合并,最后再将其向上提交,到远程库(这个远程库是可以多个不同的库之间也是相对独立的,要像合并)