Git使用笔记

首先推荐这个教程:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

以Windows系统为例,安装完成后,打开 Git Bash

1. 配置身份,主要是用户名和邮箱

git config --global user.name "xxx" 
git config --global user.email "xxx@xxx.com"

配置成功后可使用同样的命令来查看是否配置成功,只需将后面的名字和邮箱去掉即可。

2. 创建代码仓库git init

到一个项目的目录下,比如我想将TagManager托管到Git上

然后在这个目录下输入如下命令: git init

会在TagManager项目的根目录下生成一个隐藏的.git文件,用来记录本地所有的Git操作,可以通过 ls -al 命令来查看

3. 忽略特殊文件

提交代码之前先忽略一些不必要上传的文件,比如class字节码之类的。在项目目录下创建一个特殊的.gitignore文件,不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore. 注:不要使用Windows自带的记事本编辑任何文本文件

4. 用 git add 命令将文件添加到仓库

git add .gitignore

在add后面加上一个点表示添加所有文件: git add .

5. commit命令执行提交操作

git commit -m "First commit"     这里注意commit命令后面一定要通过 -m 参数来加上提交的描述信息。

6. 将代码提交到github上托管

使用push命令,commit之后  git push origin master 即可

7. 查看修改内容命令 git status,git diff 命令查看具体修改了什么内容

如果只想查看MainActicity.java这个文件的更改内容,可是使用以下命令: git diff srccomexample agmanageractivityMianActivity.java 

8. 撤销未提交的修改git checkout / git reset

手贱修改错了的话,只要代码还未提交的话,可以撤销所有修改内容。

git checkout srccomexample agmanageractivityMianActivity.java —> 撤销对MianActivity.java 的所有修改,但是如果MianActivity已被执行add命令的话是无效的。

9. 版本回退git reset

上面的撤销修改,如果MianActivity已被执行add命令的话是无效的。此时应用版本回退命令 git reset HEAD srccomexample agmanageractivityMianActivity.java

HEAD表示当前版本。上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

10. 查看提交记录git log

当记录非常多时,如果只想查看其中一条记录的话可以指定该记录的id并加上 -1 参数表示我们只想看到一行记录:git log 5ec3cd97de45a095c7383a26c9c629b9538de724  -1

再跟上个 -p 参数可以查看这条提交修改了什么内容:  git log 5ec3cd97de45a095c7383a26c9c629b9538de724  -1 -p

11. Git时间——分支的用法:查看,创建,合并,删除分支。

查看当前版本库中有哪些分支命令:git branch

表明没有创建任何分支,所以只有一个master分支存在,即主干线。现在尝试创建一个分支:git branch version1.0

切换到 version1.0 这个分支上: get checkout version1.0        切换到主干线并合并分支(可能会有冲突): git checkout master ,  git merge version1.0

删除分支:git branch -D version1.0 

12. 与远程版本库协作

假设远程版本库的地址是https://github.com/example/test.git

将代码下载到本地的命令: git clone https://github.com/example/test.git

将远程库和本地库相关联:首先在github上创建仓库tagmanager,在本地的仓库目录下(比如TagManager)运行命令$ git remote add origin git@github.com:f91og/tagmanager.git 但是这个方法我过会报错,可以使用另一种方法:首先在本地工程目录下右击鼠标,Git Bash here。在Git Bash中输入 git clone https://github.com/f91og/tagmanager.git 之后在你的工程目录中会出现个tagmanger的文件夹,将这个文件夹下的所有文件都拷贝到上一层目录中(包括隐藏的 .git 文件夹)然后在 add, commit, push就可以了. push的时候要输入GitHub的帐号密码。

将本地修改同步到远程版本库中: git push origin master

将远程版本库上的修改同步到本地: git fetch origin master---------->同步下来的代码并不会合并到任何分支上,而是存放到一个origin/master分支上,这是可以通过 git diff 命令查看远程版本库上到底修改了哪些东西  git diff origin/master  之后再用merge命令将修改合并到主分支即可  git merge origin/master. 

pull命令相当于将fetch和merge放在一起执行: git pull origin master. 如果要clone指定commit的代码(即有时候我们不拉取最新的),命令如下(加个-b参数):

git clone https://github.wdf.sap.corp/bizx/build-system.git -b trunk.201709260855

13. 撤销某次提交带来的修改

使用的是revert命令(后面跟的是每次commit 的id):

git reset 046bd7b5c1d134b8123f59ea71b19875a6a2fc3e

git reset --hard 046bd7b5c1d134b8123f59ea71b19875a6a2fc3e

参考:http://www.cnblogs.com/0616--ataozhijia/p/3709917.html


下面是一些使用过程中遇到的错误以及相应的解决办法

1. 按照11的方法发现代码提交不到github上去,提示 please tell me who you are 。然后设置了用户名和邮箱后仍然提交不上去,摸索一番后发现原因是:操作顺序不对,我先是add操作,然后commit,但这个时候git提示要我设置用户名和邮箱,我设置完了之后直接commit,相当于什么都没commit, 它这个add, commit操作是在git认识你是谁的基础上操作的(我语文不行,表达能力不是很好,勿怪)。也就是说你设置了好了用户名邮箱之后,应该重新 add 然后再commit,这样才能提交上去。(2)我记得之前配置好了用户名和邮箱的啊,只是有一段时间没用git了。看了时间过期没用git的话配置的用户名和邮箱会失效,要再次配置。

2. 退出git log命令

直接按q即可

3. 退出vim

使用git bash有时候会自动进入vim编辑器,然后无法推出。解决方法是: 一直按住esc ,再连续按大写的z两次就退出来了

原文地址:https://www.cnblogs.com/f91og/p/6419878.html