git的基本用法


大家好,我又来分享学习git的心得了,才学会,大佬勿喷

为什么要学习git –简单来说就是,一个团队很多人一起完成某项目,一起管理,方便,而且,换了电脑,可以直接对项目接着进行操作。

废话不多说,开始吧。

可视化学习地址: https://oschina.gitee.io/learn-git-branching/

1.注册

首席注册一个github账号点击 太简单了,不用我说了。

2.下载git

下载git这个软件(系统)下载地址 安装就行,很简单。

3.设置密钥

如果不设置密钥的话,每次都需要输入密码,那多麻烦啊.

打开 git bash 输入

生成秘钥:

ssh-keygen -t rsa -C "xxxxxxx@qq.com" 

直接Enter就行,然后会提示输入密码(可输可不输)
说明:命令中的email,就是gitlab中的账号,需要保持一致

会出现这样就说明产生成功了

然后,去你的电脑用户下,找到.shh 文件夹,里面有id_ras(私钥)和id_ras.pub(公钥)

用记事本打开id_ras.pub,复制所有,(或者输入)

cat ~/.ssh/id_rsa.pub

打开网站github你的设置你如图

添加进去

🆗,这一步完成了

4.初始化本地仓库

在你的电脑上新建一个文件夹,在此文件夹下,右键,有个 git bash

如图

4.1配置个人信息

直接输入

git config --global users.name "xxxxx"
git config --global users.email "xxxxx"

用 git config –list 可以查看你的配置

初始化本地仓库

git init 

5.增,删,改

5.1 git add xxx

我新建了一个test的txt文件

cd test文件夹

在 git bash中输入 git add test.txt

每一步完成后可以查看状态确认一下

git status

绿色的新文件

现在这个文件在缓存区,

现在提交到本地仓库

git commit -m “xxxxxx”

xxxx是提交描述

比如第一次提交

git commit -m “第一次提交”

==git commit -amned -m “这是comnit重写”==

看一下状态 git status

缓存区没有文件了,就是提交上去了

至此,增文件就完成了。

一样的和增,一样的语法。

我们进入test.txt加一些字,

然后,git add test.txt

再然后,git commit -m “第二次提交”

ok 至此,改操作就完成了

5.2 git rm

我们删文件,把之前的git add xxx
改成 git rm xxx 就行了(注意,本地必须把它删除了才可以操作,用rm -rf 命令或者直接在win窗口中用del删除)

演示一下

ok 删除操作就完成了

6.提交远程

新建了后,在git bash 中输入

git remote add origin xxxxxxxxxxxx
git push -u origin master

xxxxxxxxx 为你的仓库网站

就算是提交上去了,,以后,进行修改操作那些操作后,,,直接git push 可直接提交,

至此教程完毕。谢谢观看。

出错的话使用git pull

你应该使用 git pull,这个命令做一个git fetch和下一个做git merge。

如果使用git push origin master –force命令,将来可能会遇到问题。

PS:可能每次需要输入密码输入这个一行代码就行了

git config --global credential.helper store

进阶

设置代理

在cmd中输入以下指令:
git config --global http.proxy socks5://127.0.0.1:1080
git config --global https.proxy socks5://127.0.0.1:1080

(端口号看你自己的配置,一般都是1080)
如果要取消代理修改:
git config --global --unset http.proxy
git config --global --unset https.proxy

问题补充
上述方法挂了全局代理,但是如果要克隆码云、coding等国内仓库,速度就会很慢。更好的方法是只对github进行代理,不会影响国内仓库:

git config --global http.https://github.com.proxy socks5://127.0.0.1:1080
git config --global https.https://github.com.proxy socks5://127.0.0.1:1080

代理后git clone速度真的快了很多~我这边能到1MB/s以上

使用以下命令查看是否配置好
git config --global -e

保存密码

git 每次push和pull都需要提交密码
每次从远程仓库拉代码或者向远程仓库提交代码的时候需要输入密码的解决方法
执行

git config --global credential.helper store

分支操作

查看当前分支

git branch

git branch -a   查看全部分支(包括远程)

创建分支

如创建分支xx

git branch xx

以当前分支为基础,新建分支
git checkout -b 分支名

切换分支

git checkout xx

分支上传

git push --set-upstream origin java

下载分支

git clone https://github.com/github_id/项目名字 --branch=xx
git clone checkout -b 分支名字 https://github.com/github_id/项目名字

删除本地分支

git branch -d xxxx
git branch -D xxx 强制删除

删除远端分支

git push origin -d xxx

上传大文件

资料:点击查看

安装 lfs

只需设置1次 LFS : 
git lfs install
然后 跟踪一下你要push的大文件的文件或指定文件类型 
git lfs track "*.pdf" , 
当然还可以直接编辑.gitattributes文件
以上已经设置完毕, 其余的工作就是按照正常的 add , commit , push 流程就可以了 :
git add yourLargeFile.pdf
git commit -m "Add Large file"
git push -u origin master

# 修改密码github,gitee,coding密码凭证
控制面板

查看凭证


git配置

查看当前git用户的全局配置

git config --global --list

git的系统配置

git config --system --list

添加名字和邮件

git config --global user.name = "xxxxx"
git config --global user.email = "xxxxx"

工作流程

git的文件状态

忽略文件

.gitignore文件

分支

#查看所有分支
git branch

#新建分支
git branch xxxx

#新建分支并切换
git checkout -b xxx

#切换分支
git checkout xxx

#上传分支
git push origin xxx

# 下载分支
git clone -b 分支名 仓库地址

git reset 换 git revert回滚

直接回滚
git reset --head id 

对没有add的文件取消修改
git checkout filename 
git checkout .
git checkout --  filename 
对已经add但没有commit的文件进行取消修改(移除)暂存区
git reset HEAD filename 

对已经commit 的文件取消修改
git reset HEAD filename 
git checkout filename 

重写这次提交的commit
git commit --amend -m "你的提交信息"

取消这次提交(软回滚到上次提交)
git reset --soft HEAD~   

git revert 和 git reset的区别

  • git revert是用一次新的commit来回滚之前的commit,此次提交之前的commit都会被保留;
  • git reset是回到某次提交,提交及之前的commit都会被保留,但是此commit id之后的修改都会被删除

git stash (保存现场)

常用git stash命令:

(1)git stash save “save message” : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。

(2)git stash list :查看stash了哪些存储

(3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}

(4)git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num} -p ,比如第二个:git stash show stash@{1} -p

(5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1}

(6)git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}

(7)git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储

(8)**git stash clear** :删除所有缓存的stash

总结: 就是直接把你当前的修改保存到stash list 里面,然后回到你最好commit 那次状态…

git diff (比较不同)

git diff  # 比较的是工作区和暂存区
git diff sha1 # 比较的是工作区和对象区
git diff --cached  sha1 # 比较的是对象区和暂存区

git rm(删除)

git rm # 删除对象区的文件,工作区的文件也会消失,但它转换到了暂存区

git unset head filename # 可以使用 git unset HEAD filename 来把暂存区放到杠工作区

git checkout -- filename # 再使用撤销命令来撤销

git pull 和 git fetch

git pull = git fetch +  git merge 

git pull: 从远端拉代码到本地分支并进行合并

git fetch : 从远端拉代码到origin/master 或者origin/xxxxxx 其他的分支,也就是本地联系远程的分支,是不可写的

然后再用git merge origin/master 来进行合并操作

git rebase 和 git merge

merge 是合并,两条线合并为一条

rebase是直接把一条线转移到另外一条线上

现在有 A B 两个分支 而且,都是不同的路线(两条线) 想把 B 上的内容提交到A 上面

两种办法:

第一种,合并 ,merge
git checkout A 
git merge B 
第二种, rebase
git checkout B 
git rebase A 

git rebase -i HEAD~n

可以把当前到之前的n个提交点重构顺序

==git cherry-pick A ,…可以把 后面输入的提交点,接到当前指针处 (巨好用)==


文章作者: anlen123
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 anlen123 !
 上一篇
python如何打包成exe文件 python如何打包成exe文件
怎么打包exe呢这一期的问题是,我们写好了程序,该怎么打包成exe文件呢当然是用pyinstaller 辣!!!! 第一步,安装pyinstaller打开cmd pip installer pyinstaller 搞定了。 如果有小伙伴
2019-08-14
下一篇 
python的selenuim自动化框架安装(so nice) python的selenuim自动化框架安装(so nice)
自动化安装selenium第一步,下载谷歌浏览器(火狐也行)下载地址查看谷歌浏览器的版本号:我这里是76.0…..的第二步,下载,自动化浏览器的驱动下载地址如图: 之前谷歌版本号是76.的这里选择76.0.3809的,总之选择最接近的版本号
2019-08-12
  目录