本地git的使用
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加密算法弄的。
增加秘钥
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也失败了。
也就是没建立连接了。
---------------------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) 编辑 收藏 举报