美人如玉

博客园 首页 联系 订阅 管理

一、 GIT简述

三个区域:工作区、版本库(含暂存区)、远程仓库

文件的三种状态:

1)Untracked files → 文件未被跟踪;

2)Changes to be committed → 文件已缓存,这是下次提交的内容;

3)Changes bu not updated → 文件被修改,但并没有添加到缓存区。

二、bash

  1、bash环境搭建和基本设置

  1.1安装git:

  1.2安装TortoiseGit

  1.3配置本地环境

    a.设置帐号密码

      git config -global user.name “cWX509462”     设置帐号

git config -global user.email “chenlong76@huawei.com” 设置邮箱

    b.设置公钥私钥

cd ~/.ssh

            ls查看公钥目录
           ssh-keygen -t rsa -C "chenlong76@huawei.com" 生成密钥和公钥

ssh -add id_rsa  添加私钥到 ssh(如果配置过指纹密码就要输入验证) 

ssh git@github.com 测试本机在版本库的权限

    c.设置中文

                          设置中文文件名

git config core.ignorecase false 设置大小写敏感

    d.

 

    e.

git config –list 查看所有配置

 

2、bash基本操作

git init初始化本地仓库

git clone xx  克隆仓库

git remote add origin git@xxx 从仓库添加一些初始文件

git remote show origin 查看远程仓库信息

git add <file> 添加到版本控制

git status查看当前版本库状态

git commit -m < annotate> 将版本库中修改的文件提交到本地仓库

git commit -a -m<annotate> 将工作区中修改的文件提交到本地仓库

       git diff  <file> 查看XX文件修改了那些内容

git log 查看历史记录

git reset  –hard HEAD^ 或者 git reset  –hard HEAD~ 回退到上一个版本(如果想回退到100个版本,使用git reset –hard HEAD~100 )

git reflog       查看历史记录的版本号id

git checkout — XX  把XX文件在工作区的修改全部撤销。

git rm XX          删除XX文件

git clone https://github.com/tugenhua0707/testgit  从远程库中克隆

git remote 查看远程库的信息

git remote –v 查看远程库的详细信息

git push origin master  Git会把master分支推送到远程库对应的远程分支上

 

a.      获取代码

 

b.      添加版本控制

 

 

c.      提交版本库

 

d.      提交工作区

 

 

e.      Push

 

其他问题:

a.      冲突解决

树冲突:git rm <file>

内容冲突:git mergetool

b.      版本控制回滚

git reset -- frotz.c 

c.      提交回滚

 

d.      push回滚

 

 

撤销

上述场景一,在未进行git push前的所有操作,都是在本地仓库中执行的。我们暂且将本地仓库的代码还原操作叫做撤销

情况一:文件被修改了,但未执行git add操作(working tree内撤销)

git checkout fileName
git checkout .
·        1
·        2

情况二:同时对多个文件执行了git add操作,但本次只想提交其中一部分文件

$ git add *
$ git status
# 取消暂存
$ git reset HEAD <filename>
·        1
·        2
·        3
·        4

情况三:文件执行了git add操作,但想撤销对其的修改(index内回滚)

# 取消暂存
git reset HEAD fileName
# 撤销修改
git checkout fileName
·        1
·        2
·        3
·        4

情况四:修改的文件已被git commit,但想再次修改不再产生新的Commit

# 修改最后一次提交 
$ git add sample.txt
$ git commit --amend -m"说明"
·        1
·        2
·        3

情况五:已在本地进行了多次git commit操作,现在想撤销到其中某次Commit

git reset [--hard|soft|mixed|merge|keep] [commit|HEAD]

回滚

上述场景二,已进行git push,即已推送到远程仓库中。我们将已被提交到远程仓库的代码还原操作叫做回滚注意:对远程仓库做回滚操作是有风险的,需提前做好备份和通知其他团队成员!

如果你每次更新线上,都会打tag,那恭喜你,你可以很快的处理上述场景二的情况

git checkout <tag>
·        1

如果你回到当前HEAD指向

git checkout <branch_name>
·        1

情况一:撤销指定文件到指定版本

# 查看指定文件的历史版本
git log <filename>
# 回滚到指定commitID
git checkout <commitID> <filename>
·        1
·        2
·        3
·        4

情况二:删除最后一次远程提交

方式一:使用revert

git revert HEAD
git push origin master
·        1
·        2

方式二:使用reset

git reset --hard HEAD^
git push origin master -f
·        1
·        2

二者区别:

  • revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在;
  • reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。

情况三:回滚某次提交

# 找到要回滚的commitID
git log
git revert commitID

删除某次提交

git log --oneline -n5
·        1

 

git rebase -i "commit id"^
·        1

注意:需要注意最后的^号,意思是commit id的前一次提交

git rebase -i "5b3ba7a"^
·        1

 

在编辑框中删除相关commit,如pick 5b3ba7a test2,然后保存退出(如果遇到冲突需要先解决冲突)!

git push origin master -f
·        1

通过上述操作,如果你想对历史多个commit进行处理或者,可以选择git rebase -i,只需删除对应的记录就好。rebase还可对 commit 消息进行编辑,以及合并多个commit

 

  3、bash命令集合

  4、bash常见问题解决

      4.1 修复TortoiseGit文件夹和文件图标不显示

打开 regedit.exe ,准备修改注册表
找到 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer
新建一个“字符串值”名称为 “Max Cached Icons” 值是 “2000”
重启一下电脑,图标就显示了。

 

三、eclipse

  1、eclipse环境搭建和基本设置

  2、eclipse基本操作

  3、eclipse常见问题解决

四、iSource

  1、iSource环境配置

  2、iSource功能

五、github

  1、github环境配置

  2、github功能

 

六、码云

 

  1、码云 环境配置

 

  2、码云 功能

七、Gitlab

  1、Gitlab环境配置

  2、github功能

八 、Bitbucket

  1、Bitbucket环境配置

  2、Bitbucket功能

 

 

posted on 2018-01-14 23:27  美人如玉  阅读(119)  评论(0)    收藏  举报