Xu•thus Blog

Git常用操作及命令

1. Git介绍

Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。全球最大的同性交友网站github则是项目的托管平台,只支持Git作为唯一的版本库格式进行托管。

安装git非常简单,在ubuntu上sudo apt-get install git然后配置

2. 版本库操作

2.1 创建版本库

创建版本库如下命令

git init

添加文件到版本库

git add <file>
    

添加提交信息

git commit -m"内容"

查看当前仓库状态

git status

查看修改了什么内容

git diff <file>

2.2 版本回退

查看提交日志

git log

加上参数,可以显示简介信息

git log --pretty=oneline

HEAD表示当前版本,上个版本就是HEAD^,上上个就是HEAD^^,再上可以使用简便方法,比如上三个版本HEAD~3

回到上一个版本

git reset --hard HEAD^

回到回退之前的版本,找到想要回退到的版本对应的commit id,取前几位就可以

git reset --hard e963d56d

如果窗口上没有,使用下面命令,会显示每一次提交命令,找到对应的commit id,按上面的方

git reflog

2.3 撤销修改

  • 工作区: 所在的文件目录
  • 暂存区(stage或者叫index):通过git add 提交
  • 分支: 通过git commit,把暂存区的所有内容提交到当前分支
    丢弃工作区的修改

    git checkout –- <filename>
    

    撤销暂存区的修改

git reset HEAD <file>

2.4 删除文件

我们将文件提交到了暂存区,然后想要删除它,一般情况下,我们直接在文件管理器中直接删除

rm <file>

然后移除版本库中的

git rm <file>

如果是误删,版本库中还有,可以使用命令恢复

git checkout -- <file>

3. 连接远程仓库

3.1 方法一:配置SSH key

将github作为远程仓库,配置SSH key

  • 创建SSh key ssh-keygen -t rsa -C &quot;youremail@example.com&quot;,一直回车即可
  • 在主目录里可以找到.ssh文件(Ubuntu默认隐藏),里面有id_rsa(私钥)和id_rsa.pub(公钥)两个文件
  • 进入github的setting下的SSH and GPG keys,点击new SSH key,输入title(自拟),将id_rsa.pub(ubuntu默认隐藏,文件在/home/用户名/.ssh/id_rsa.pub, 用gedit或者vim打开)文件中的公钥复制j进key里面即可。

3.2 方法二:使用设置

git global --config user.name"yourname"
    git global --config user.email"youremail@example.com"

3.1 添加至远程仓库

在github中新建一个仓库,随后页面会有提示信息

git remote add origin git@github.com:xxxgitone/learningProcess.git

推送,第一次推送加上 -u参数

git push -u origin master

以后就可以直接使用下面命令推送了

git push origin master

注意:我们在新建github项目的时候,有时候会默认生成一些文件,比如readme.gitignore,这个时候直接将本地仓库push进去,便会发生冲突

解决方法:

1
2
3
4
5
6
7
8
#获取云端代码
git fetch
#合并
git merge origin/master
#再次提交
git push -u origin master

4. 分支管理(git中非常强大又有用的功能)

4.1 创建与合并分支

创建并切换至test分支

git checkout -b test

上面代码等用于

git branch test  //创建分支
    git checkout test //切换分支

查看分支

git branch

合并分支(记得切换回去)

git merge test //快速合并,不会记录历史分支
    git merge --no-ff -m "test info" test //普通合并,会记录历史分支,能看出来之间做过合并

删除分支

git branch -d test

4.2 解决冲突

当我们在分支中对文件做了修改,并进行了提交,然后切换回主分支,对同一个文件做了修改,在进行git merge的时候便会产生冲突,应该手动修改,然后再进行提交

使用如下命令查看分支合并情况

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

4.3 分支策略

一般master分支不用来开发,只用来发布稳定的新版本。创建一个devlop分支用来开发,然后每个人再基于这个分支创建自己的分支用来工作,开发好进行合并即可。

4.4 bug分支

当遇到一个不得不立即去修复的bug,但是手头上的工作又还没有完成,不能提交

可以使用,将手头上的工作进行进行储存

git stash

使用git status查看,工作区是干净的。随后就可以创建修复bug的分支,进行bug修复。

bug分支完成并删除后,使用如下命令将储存的工作区释放出来

git stash pop

4.5 Feature分支

添加一个新功能,但是最后决定要放弃这个新功能,使用下面命令删除这个分支

git branch -D feature

4.6 推送分支

克隆仓库后,可以使用名利查看远程仓库信息,远程仓库默认名称是origin

git remote -v

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

git push origin master  //主分支
    git push origin develop //开发分支

4.7 抓取分支

当我们从别的(不是自己创建的)仓库,进行克隆,通过git branch只能查看到本地的master分支,如果我们要在develop上开发,必须创建远程的origin的develop分支到本地

git checkout -b develop origin/develop

修改提交,使用下面命令push

git push origin develop

如果我们提交之前,恰好别人也在这个分支,修改了同样的文件,我们提交时就会出现冲突,先使用下面命令将指定本地develop分支与远程origin/develop分支的链接

git branch --set-upstream develop origin/develop

然后进行

git pull

但是合并的时候有冲突,手动解决即可

5. 参与github开发

先fork仓库到自己的仓库,然后到自己仓库到本地,就可以进行自己的修改开发了,提交推送

如果想要g别人接受你的修改,可以pull request

6. 口令问题

在有些时候提交代码的时候每次都需要输入口令,这是因为在克隆或者提交到远程仓库的时候使用了https协议的方式。解决办法有两个,一种是增加配置文件,另一种是使用SSH Key(推荐)

6.1 配置文件 (Ubuntu)

  • ~$ touch .git-credentials
  • ~$ sudo gedit .git-credentials
  • 输入http://{username}:{password}@github.com 或者是https开头
  • ~$ git config --global credential.helper store

6.2 配置SSH key

  • 创建SSh key ssh-keygen -t rsa -C &quot;youremail@example.com&quot;,一直回车即可
  • 在主目录里可以找到.ssh文件(Ubuntu默认隐藏),里面有id_rsa(私钥)和id_rsa.pub(公钥)两个文件
  • 进入github的setting下的SSH and GPG keys,点击new SSH key,输入title(自拟),将id_rsa.pub(ubuntu默认隐藏,文件在/home/用户名/.ssh/id_rsa.pub, 用gedit或者vim打开)文件中的公钥复制j进key里面即可。