本地git的使用

 

git和svn的解析

 

git 教程

 

git rebase的用法

 

 attion:

one:  git中是严格区分大小写的,文件名字大小写敏感

two:  git中分为:工作区,暂存区,分支 

three:操作的时候,要保存,才说明保存到工作区了

four:如果忘记git commit忘记用-m写信息,跳到一个界面卡不出来。可以用esc退出insert模式,然后输入冒号,输入wq即可

 

更改git lg输出配置

git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(bold yellow)%d%Creset %C(bold green)%s%Creset %C(white)<%an>%Creset %C(white)(%ci)%Creset' --abbrev-commit"

http://ericnode.info/post/colorize_git_diff/

-----------------------------------------------------------------------------------------------------

 

首先安装好git,然后,需要对某个工程进行版本控制的话。

就需要进入到那个目录,用cmd进入

然后git init,就会开始版本控制。

 

然后有命令如下:

假若修改了一个文件,或者增加之类的。

可以使用

1️⃣、git status查看当前的状态

如果没有东西add了,工作区也没有东西改变了,那么就是clean的

liuweimngdeiMac:chatwork liuweiming$ git status
On branch master
nothing to commit, working tree clean

 

 

 

2️⃣、git diff

git diff    #是工作区(work dict)和暂存区(stage)的比较

git diff --cached    #是暂存区(stage)和分支(master)的比较

注意两次比较时的主语不同。

git diff HEAD -- READme.txt  比较工作区和master中有什么不同

 

3️⃣、git add README.txt

把东西放去stage中

这样才能配合git commit README.txt

 

4️⃣、git commit README.txt -m "评论的内容"

可以配合git log查看

 

5️⃣、git log (注意这个按Q可以退出)

查看所有版本更改过的信息,可以配合git reset

 

6️⃣、git reset --hard HEAD^

版本回退一格,也可以git reset --hard HEAD^^  版本回退两格

同时也可以:git reset --hard HEAD~1        版本回退一格

前进呢?可以查找出上面的commit id,

git reset --hard 能唯一确定id的前缀。即可版本前进。也就是回退后,后悔了,前进回去。

但是如果我忘记了id,也关闭了cmd呢?

 

git reset HEAD^   只会让指针指向上一格,然后还是会保留变化的。而不像git reset --hard HEAD^这样,让变化取消

 

7️⃣、git reflog

可以查看出操作的记录,又可以找到commit id了

 

  

8️⃣、git checkout -- README.txt

可以让工作区,回到最近一次commit或者add的内容。最近一次哦哦哦

也就是,你做了一件很正确的事,已经add了,准备commit。但是发现不正确。想从头再来。也就是从最新的commit开始来。那么

1、首先清除暂存区

用git reset HEAD README.txt

可以让暂存区的东西丢弃掉

当我们用HEAD时,表示最新的版本。

 

2、用语句,回到最近一次commit的内容

 

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

 

 

9️⃣、git checkout -b dev

创建新的分支 dev

 

git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

$ git branch dev
$ git checkout dev

 

如果想创建一个在github里面的分支,那么

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

 

 

🔟、git branch

可以查看当前的所有分支,也能知道在用哪一个分支

 

十一、git merge dev

可以把指定的分支,dev,合并到现在分支。我现在是master

合并完后,就可以安全删除dev了

删除分支语句:git branch -d dev

如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。

 

这里可能会发生冲突。就是,在dev里改了下README.md,然后在master中也改了README.md,合并的时候是合并不了。

不能用fast-merge的。

要手动解决。

手动解决也就是自己选在那些要,那些不要而已。然后自己commit 

 

 十二、git stash

当你工作到一半的时候,老板叫你先修复一个东西(在一开始的基础上,也就是在刚上班的基础上)

但是你的工作区的东西还没commit了,也不能commit的,因为还没完成。

所以git提供一个,git stash来隐藏你所做的东西。恢复到原来的样子的。

然后用git stash list可以查看你的隐藏。

最后用git stash apply (nameOfStash)来恢复到某一个隐藏

然后git stash drop (nameOfStash)即可删除那个隐藏

 

十三、隐藏文件

很多时候,有些临时的文件,你并不想进行版本管理。

这个时候,建立一个.gitignore

在里面输入你不想管理的文件名即可。

比如:text.txt  or  *.txt忽略所有txt后缀的文件。

正文 

 

 

-----------------------------------------------

远程github的使用,注意也可以自己搭一个GitHub出来的。

1️⃣、git clone git@github.com:liuweiming1997/git.git

这个是在github账户配好公钥后,在自己电脑也搞一个秘钥。才能上传的。是通过ssh加密算法弄的。

增加秘钥

https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374385852170d9c7adf13c30429b9660d0eb689dd43a000

 

2️⃣、

第一次用的时候:

git remote add origin git@github.com:liuweiming1997/git.git

添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

然后,git push -u origin master

以后,git push origin master

 

3️⃣、远程github提交失败的时候,是因为冲突了。先pull,解决冲突,再push

如果pull也失败了。

也就是没建立连接了。

solve

 

 

---------------------2018年02月08日17:54:45-----------------------------

关于git commit的东西

如果commit了,想修改commit的内容,可以

git commit --amend -m "an updated commit message"

refercen https://www.atlassian.com/git/tutorials/rewriting-history

 

如果想修改.gitignore

那么修改往往是无效的,因为原本在master的东西,是不会受到修改后的.gitignore影响的

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

可以先把他们删除,再add,记得后面有个点号

git add .     代表全部提交,那个点号相当于全部的意思

reference  https://www.jianshu.com/p/e5360fa04152

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

------------------------------------------------------------------------------

git branch -r  查询远程的分支

git push origin :fix  删除远程的fix分支

 

------------git  rebase-----------

git commit --amend   可以修改当前HEAD指向的commit,的message信息

https://git-scm.com/book/zh/v1/Git-%E5%B7%A5%E5%85%B7-%E9%87%8D%E5%86%99%E5%8E%86%E5%8F%B2 

可以用git rebase -i HEAD~3

就是包括头指针,一共4的commit,任你修改

PS: 如果你只有4个commit,你是不可以用上面那个的,它必须要有一个commit保底。

然后可以对其进行操作了,下面有提示参数

如果想修改最低那层,那么:把倒数第二层edit,然后就会停留在第二层了。运行git reset HEAD^,返回了上一层(这一层的东西会放上去上一层),然后git commit --amend

然后会重新commit倒数第二层,

 

 

其他的,比如squash,合并后,如果有冲突,就在本地修改好,git add,不用commit,直接git rebase --continue 

 

 

git clone远程目录,

一开始先clone  master

然后

1、git branch -r  查看远程分支

2、git checkout -b origin/fix

 

git checkout origin/remoteName -b localName

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------------

alias

git config --global alias.st status
git config --global alias.delworkspace 'checkout -- '
git config --global alias.deladd 'reset HEAD '
git config --global alias.delcommit 'reset HEAD^'
git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(bold yellow)%d%Creset %C(bold green)%s%Creset %C(white)<%an>%Creset %C(white)(%ci)%Creset' --abbrev-commit"

git delworspace && git deladd 需要加filename

 

[alias]
        lg = log --graph --pretty=format:'%Cred%h%Creset -%C(bold yellow)%d%Creset %C(bold green)%s%Creset %C(white)<%an>%Creset %C(white)(%ci)%Creset' --abbrev-commit
        st = status
        deladd = reset HEAD
        delworkspace = checkout --
        modified = rebase -i
        newbranch = checkout -b
        delbranch = branch -D
        delcommit = reset HEAD^
        goto      = reset --hard
        amend = commit --amend    
    remoteadd = remote add origin    
    co = checkout
    reflog = reflog

[user]
    email = vimiming@gmail.com
    name = vimi
[color]
    status = auto
    diff = auto
    branch = auto
    interactive = auto

 

 

 

 

vim /home/vimi/.gitconfig

[alias]        lg = log --graph --pretty=format:'%Cred%h%Creset -%C(bold yellow)%d%Creset %C(bold green)%s%Creset %C(white)<%an>%Creset %C(white)(%ci)%Creset' --abbrev-commit        st = status        deladd = reset HEAD        delworkspace = checkout --        modified = rebase -i        newbranch = checkout -b        delbranch = branch -d          delbranchf = branch -D        delcommit = reset HEAD^[user]        email = vimiming@gmail.com        name = vimi[color]        status = auto        diff = auto        branch = auto        interactive = auto

 

posted on 2018-01-31 14:29  stupid_one  阅读(336)  评论(0编辑  收藏  举报

导航