Git小结

版本库中的文件

  • codegit

  • 图片bash

  • 视频markdown

  • wordthis

  • so on编码

git能检测代码的差别性,可是对于图片,视频和word这些二进制的文件,git
只能跟踪其大小变化.因此对于文字版本的控制,最好使用markdown以文本的形式
进行存储.3d

由于文本是有编码的,好比中文有经常使用的GBK编码,日文有Shift_JIS编码,若是没有历史遗留问题,强烈建议使用标准的UTF-8编码,全部语言使用同一种编码,既没有冲突,又被全部平台所支持。code

添加

Unix的哲学是“没有消息就是好消息”orm

  • git commit -m 'blabla'视频

  • git commit -am 'blabla'图片

这二者浅显的区别是:-am表示没有新增长文件,只是对原来的文件作了修改,因此执行此命令没问题.
若是新建了文件,就按正常步骤:

$ git add .
$ git commit -m 'blabla'

查看历史提交记录

  • git log

  • git log --pretty=oneline

回退版本

$ git reset --hard HEAD

有时,咱们会有把当前版本在本地弄乱的状况,执行上面命令便可回到最后一次提交的版本上去.
那么上一个版本就是HEAD^,上上一个版本就是HEAD^^,固然往上100个版本写100个^比较容易数不过来,因此写成HEAD~100

回到将来

$ git reflog
$ git co d62cd5c
➜  gittest git:(d62cd5c) git br
* (detached from d62cd5c)
master
➜  gittest git:(d62cd5c) git co master
Warning: you are leaving 1 commit behind, not connected to
any of your branches:

d62cd5c update

If you want to keep them by creating a new branch, this may be a good time
to do so with:

git branch new_branch_name d62cd5c

Switched to branch 'master'
➜  gittest git:(master) git br testbr d62cd5c
➜  gittest git:(master) git br
* master
testbr
➜  gittest git:(master) git merge testbr
Updating d28643d..d62cd5c
Fast-forward
readme.md | 2 ++
1 file changed, 2 insertions(+)

查看区别

git diff HEAD -- readme.txt命令能够查看工做区和版本库里面最新版本的区别

撤销修改

git checkout -- file能够丢弃工做区的修改

命令git checkout -- readme.txt意思就是,把readme.txt文件在工做区的修改所有撤销,这里有两种状况:

  • 一种是readme.txt自修改后尚未被放到暂存区,如今,撤销修改就回到和版本库如出一辙的状态;

  • 一种是readme.txt已经添加到暂存区后,又做了修改,如今,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commitgit add时的状态。

git checkout -- file命令中的--很重要,没有--,就变成了“切换到另外一个分支”的命令.

删除文件

如今你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,而且git commit

$ git rm test.txt
rm 'test.txt'
$ git commit -m "remove test.txt"
[master d17efd8] remove test.txt
1 file changed, 1 deletion(-)
delete mode 100644 test.txt

1 .使用rm直接删除,而后恢复

➜  gittest git:(master) ls
new.md  readme.md
➜  gittest git:(master) rm new.md
➜  gittest git:(master) ✗ ls
readme.md
➜  gittest git:(master) ✗ git co -- new.md
➜  gittest git:(master) ls
new.md  readme.md

2 .使用git rm,工做区被删除的文件也会消失

➜  gittest git:(master) ls
new.md  readme.md
➜  gittest git:(master) git rm new.md
rm 'new.md'
➜  gittest git:(master) ✗ ls
readme.md
➜  gittest git:(master) ✗ git st
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

deleted:    new.md

git会保存一个版本记录,只要是commit过的,均可以放心删除
,删除后作个提交记录就好.

分支

查看分支:git branch

建立分支:git branch <name>

切换分支:git checkout <name>

建立+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>,强制删除git branch -D <name>
删除远程分支:

As of Git v1.7.0, you can delete a remote branch using

git push origin --delete <branchName>
which is easier to remember than

git push origin :<branchName>

多人协做

当你的小伙伴从远程库clone时,默认状况下,你的小伙伴只能看到本地的master分支。
如今,你的小伙伴要在dev分支上开发,就必须建立远程origin的dev分支到本地,因而他用这个命令建立本地dev分支:

$ git checkout -b dev origin/dev

先用git pull把最新的提交从origin/dev抓下来,而后,在本地合并,解决冲突,再推送

多人协做的工做模式一般是这样:

首先,能够试图用git push origin branch-name推送本身的修改;

若是推送失败,则由于远程分支比你的本地更新,须要先用git pull试图合并;

若是合并有冲突,则解决冲突,并在本地提交;

没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

若是git pull提示“no tracking information”,则说明本地分支和远程分支的连接关系没有建立,

用命令git branch --set-upstream branch-name origin/branch-name

建立标签

切换到master,执行

$ git tag v1.0

能够用命令git tag查看全部标签:

➜  gittest git:(master) ✗ git tag
v0.9
v1.0

默认标签是打在最新提交的commit上的。有时候,若是忘了打标签,
方法是找到历史提交的commit id,而后打上就能够了:

$ git log --pretty=oneline --abbrev-commit
0f14186 add new.md
d62cd5c update
d28643d first
(END)
$ git tag v0.9 0f14186

--abbrev-commit这个参数表明: "show only partial prefixes of commit object names"

还能够建立带有说明的标签,用-a指定标签名,-m指定说明文字:

$ git tag -a v0.1 -m "version 0.1 released" 3628164

小结

命令git push origin <tagname>能够推送一个本地标签;

命令git push origin --tags能够推送所有未推送过的本地标签;

命令git tag -d <tagname>能够删除一个本地标签;

命令git push origin :refs/tags/<tagname>能够删除一个远程标签。


修改未push得"-m"(message)信息。

git commit --amend

管理未被gitignore的文件

git commit --cached _yourfile_

如何贡献

  1. Fork it

  2. Clone it

  3. Create your feature branch (git checkout -b my-new-feature)

  4. Commit your changes (git commit -am 'Add some feature')

  5. Push to the branch (git push origin my-new-feature)

  6. Create new Pull Request

相关文章
相关标签/搜索