10分钟掌握Git命令及仓库管理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/meiwei_1/article/details/79194279

原文地址链接:

https://mp.weixin.qq.com/s?__biz=MzI0NDgyODEwMw==&mid=2247483690&idx=1&sn=7de20958fa8e2fb3c3c963fdba76034e&chksm=e9569382de211a94086831e7e19d98c59acb85b160f1ec24d5d8476853206daccddbdc18bdae#rd

窗口系统

配置

git config --global user.name  “Your Name”

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

git config 命令的--global 参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

1.git初始化

2.git添加<file>

如出现

警告:LF将被readme.txt中的CRLF替换。

该文件的原始行结束在您的工作目录中。

windows中的换行符为CRLF,而在linux下的换行符为LF,所以在执行add。时出现  

提示,解决办法:

git config --global core.autocrlf false //禁用自动转换    

3.git commit -m“提交代码”

-m记录提交的信息

4.修改文件内容vim readme.txt

查看修改的内容

git状态

5.git diff查看修改的内容

git diff readme.txt

6.git日志

查看历史修改记录

或者使用

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

git log --pretty = oneline

7.回退到上一版本

git reset --hard HEAD ^

回到上100个版本

git reset --hard HEAD〜100

Git的必须知道当前版本是哪个版本,在混帐中,用表示当前版本,也就是最新的提交  

3628164 ... 882e1e0 (注意我的提交ID和你的肯定不一样),上一个版本就是HEAD ^ ,上上一个版本就  

HEAD ^^ ,当然往上100个版本写100个^ 比较容易数不过来,所以写成HEAD〜100

      现在,我们要把当前版本“append GPL”回退到上一个版本“add distributed”,就可以使用git    

    复位命令:

   git re set  --hard HEAD ^

8.查看内容

猫readme.txt

9.再次回退

只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到那个append GPL commit id 3628164 ... ,于是就可以指定回到未来的某个版本:

git re set  --hard 3628164

10.git reflog查看每一次命令的记录

Git提供了一个命令git reflog 用来记录你的每一次命令:

$ git reflog ea34578 HEAD @ {0}:reset:moving to HEAD ^ 3628164 HEAD @ {1}:commit:append GPL ea34578 HEAD @ {2}:commit:add distributed cb926e7 HEAD @ {3}:commit(initial):写了一个自述文件

终于舒了口气,第二行显示append GPL 的commit id是3628164 ,现在,你又可以乘坐时光机回到未来了。

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

12. git checkout - readme.txt

撤销上一次操作,回到最近一次git add或git commit时的状态

假如已经git add在暂存区了

git status查看是否已经提交到工作区

git reset HEAD readme.txt把暂存区的修改撤掉,重新放回工作区

再使用

git checkout - readme.txt

13.创建自己的SSH密匙

··· ssh-keygen -t rsa -C“[email protected]

你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个关键也不是用于军事目的,所以也无需设置密码。

如果一切顺利的话,可以在用户主目录里找到.ssh 目录,里面有id_rsa id_rsa.pub 两个文件,这两个就是SSH密钥的秘钥对,id_rsa 是私钥,不能泄露出去,id_rsa.pub 是公钥,可以放心地告诉任何人。

第2步:登陆GitHub,打开“帐户设置”,“SSH密钥”页面:

然后,点“添加SSH密钥”,填上任意标题,在关键文件框里粘贴id_rsa.pub 文件的内容:

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

14.添加远程库

git remote add origin [email protected]:michaelliao / learngit.git

创建起源的远程库

git push origin master

把本地分支的最新修改推送至GitHub的

当提示致命的时候:remote origin已经存在。

解决方法:

git remote rm origin

再添加远程的Git仓库

git remote add origin [email protected]:michaelliao / learngit.git

如果执行git remote rm origin报错的话,我们可以手动修改gitconfig文件的内容

vi .git / config

把[remote“origin”]那一行删掉就好了。

SSH警告

当你第一次使用的Git的克隆或者命令连接GitHub上时,会得到一个警告:

主机'github.com(xx.xx.xx.xx)'的真实性无法建立。RSA密钥指纹是xx.xx.xx.xx.xx. 你确定要继续连接(是/否)吗?

输入是即可

要关联一个远程库,使用命令git remote add origin git @ server-name:path / repo-name.git ;

关联后,使用命令git push -u origin master 第一次推送master分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master 推送最新修改;

git remote -v查看远程仓库地址

15.从远程克隆项目

git clone git @github com:michaelliao / gitskills.git

git clone [email protected]:meiyingxiang / gitskills.git

如遇到Github遇到将IP地址“192.30.252.128”的RSA主机密钥永久添加到已知主机列表

解决办法:

  vim / etc / hosts

添加一行:192.30.252.128 github.com

16.创建分支

我们创建开发分支,然后切换到开发分支:

git checkout -b dev 切换 到一个新的分支  “dev”

-b参数表示创建并切换,相当于

git分支dev

git checkout dev

查看当前分支

git分支

当前分支前面会标一个* 号。

开发分支上正常提交,比如对readme.txt文件做个修改,加上一行:

创建一个  新的  分支很快。

然后提交:

git add readme.txt  git commit -m  “分支测试”

dev的分支的工作完成,我们就可以切换回分支:

git checkout master

切换回分支后,再查看一个readme.txt文件文件,刚才添加的内容不见了因为那个提交是在开发分支上,而分支此刻的提交点并没有变:

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

git merge dev 更新 d17efd8..fec145a 快速转发readme.txt |    1  +  1  文件更改,  1  插入(+)

git merge 命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev 分支的最新提交是完全一样的。

注意到上面的快进信息,Git会告诉我们,这次合并是“快进模式”,也就是直接把指向开发的当前提交,所以合并速度非常快。

当然,也不是每次合并都能Fast-forward ,我们后面会讲其他方式的合并。

合并完成后,就可以放心地删除dev的分支了:

git branch -d dev 删除 分支dev(是fec145a)。

删除后,查看分支,就只剩下主人分支了:

git分支

Git的鼓励大量使用分支:

查看分支:git分支

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

17.解决冲突

git checkout -b feature1创建新分支

git checkout master切换分支

git merge feature1合并分支

自动合并readme.txt CONFLICT  (内容)  readme.txt中合并 冲突  自动合并失败; 修复冲突  然后  提交结果。  

产生冲突

修改提交的内容

再提交

git add readme.txt  git commit -m  “冲突修复”

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

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

删除优点1 分支:

git branch -d feature1

18. 准备合并dev 分支,请注意- no -ff 参数,表示禁用Fast forward

git merge --no-ff -m  “merge with no-ff”  dev

19bug分支

git stash   把当前工作现场“储藏”起来,等以后恢复现场后继续工作

git stash list查看工作现场列表

工作现场还在,Git的把藏匿内容存在某个地方了,但是需要恢复一下,有两个办法:

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

另一种方式是用git stash pop ,恢复的同时把stash内容也删了:

恢复指定的藏匿处,用命令:

git stash apply stash @ { 0 }

20.feature-vulcan 分支还没有被合并,如果删除,将丢失掉修改,如果要强行删除,需要使用命令git branch -D feature-vulcan

21. 查看远程库的信息,用git remote

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

推送分支

推送分支,就是把该分支上的所有本地提交推送到远程库推送时,要指定本地分支,这样,Git的就会把该分支推送到远程库对应的远程分支上:

git push origin master

如果要推送其他分支,比如dev ,就改成:

git push origin dev

  • 查看远程库信息,使用git remote -v ;

  • 本地新建的分支如果不推送到远程,对其他人就是不可见的;

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

  • 在本地创建和远程分支对应的分支,使用git checkout -b分支名称的起源/分支名称,本地和远程分支的名称最好一致;

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

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

先关联GitHub上的远程库:

git远程添加github git @github com:michaelliao / learngit.git

注意,远程库的名称叫github ,不叫origin 了。

接着,再关联码云的远程库:

git remote添加gitee git @gitee com:liaoxuefeng / learngit.git

同样注意,远程库的名称叫gitee ,不叫起源

现在,我们用git remote -v 查看远程库信息,可以看到两个远程库:

git remote -v gitee git @gitee com:liaoxuefeng / learngit.git(fetch)gitee git @gitee com:liaoxuefeng / learngit.git(push)github git @github com:michaelliao / learngit.git(fetch)github git @github com:michaelliao / learngit.git(push)

如果要推送到GitHub上,使用命令:

git推github主

如果要推送到码云,使用命令:

git推gitee高手

可以用-f 强制添加到Git的方法:

$ git add -f App。

显示名称的方法:

git config user.name git config  --list

或者查看〜/的.gitconfig 文件。

改名字:

git config --global user .name “Furzoom” #或vi〜/ .gitconfig

如果不加--global 就是修改当前仓库的下的配置。

git config user .name “Furzoom” 

或者直接修改当前仓库的git的/配置文件。

修改电子邮件,与上面是同样的操作,只不过需要将名字换行邮件即可。

从远程库克隆

git clone git @github com:michaelliao / gitskills.git

git fetch origin branchname:branchname

可以把远程某各分支拉去到本地的分支名称下,如果没有分支名称,则会在本地新建BRANCHNAME

 

git checkout origin / remoteName -b localName

获取远程分支remoteName到本地新分支localName,并跳到localName分支

git pull拉取远程分支到本地

$ git pull <远程主机名> <远程分支名>:<本地分行名> 

如拉取远程的主分支到本地WY分支: 

git拉起源大师:wy

我是git pull服务器上代码时候遇到:

错误:对以下文件的本地更改将被合并覆盖:

设备/华勤/ hq8382_tb_b1a_l / ProjectConfig.mk

请在进行合并之前提交您的更改或隐藏它们。

中止

先使用git stash 

然后再git拉起源高手

git stash:备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。

git stash pop:从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。

git stash list:显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。

git stash clear:清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。

欢迎关注微信号:魅影响

或扫描下方二维码关注



猜你喜欢

转载自blog.csdn.net/meiwei_1/article/details/79194279